source: content/digarden/pages/20210410205030-emacs_vc.org@ 972a737

Last change on this file since 972a737 was 972a737, checked in by w96k <w96k@…>, on Apr 16, 2023 at 5:54:55 PM

Add logseq

  • Property mode set to 100644
File size: 3.7 KB
Line 
1:PROPERTIES:
2:ID: b0c8ec58-f9a1-4ea0-827f-70f447840fc0
3:END:
4#+title: emacs-vc
5* Emacs VC
6Встроенный модуль для работы с системами контроля версий в Emacs.
7
8Встроенная поддержка есть для следующих модулей
9#+begin_src emacs-lisp :results list
10 vc-handled-backends
11#+end_src
12
13#+RESULTS:
14- RCS
15- CVS
16- SVN
17- SCCS
18- SRC
19- Bzr
20- Git
21- Hg
22- Mtn
23
24Доступны интерфейсы к известным системам контроля версий:
25- Git
26- Mercurial
27- Subversion
28- Darcs
29
30И менее известным:
31- rcs
32- CVS
33- MetaCVS
34- GNU Arch
35- sccs
36- SourceSafe
37- ClearCase
38
39Часть из интерфейсов доступна при помощи установки стороннего расширения.
40
41[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Version-Control.html][Документация]]
42или
43#+begin_src bash :results none
44 info emacs vc
45#+end_src
46
47* История модуля VC
48** Основан на [[https://www.gnu.org/software/rcs/][GNU Rcs]]
49Rcs -- древняя централизированная система контроля версий от проекта
50GNU. Проект живой, но неизвестно кем используется.
51** Подробнее об истории
52[[https://alexott.net/en/writings/emacs-vcs/EmacsVC.html][История модуля VC (AlexOtt)]]
53
54* Как работать с ним
55** Начало
56Инициализация проекта предполагается через cli утилиту вашей системы контроля
57версий. Вроде:
58#+begin_src bash
59 mkdir ~/projects/emacs-vc
60 cd ~/projects/emacs-vc
61 git init .
62#+end_src
63
64Общий вид доступен по команде vc-dir
65
66#+begin_src emacs-lisp :results none
67 (vc-dir "~/projects/emacs-vc")
68#+end_src
69
70** Альтернативы командам git
71*** git add
72В VC так называется "регистрация" файла. Можно выполнить напрямую через
73команду ~M-x vc-register~, но в VC воркфлоу несколько иной.
74
75Создадим файл и добавим
76#+begin_src emacs-lisp :results none
77 (find-file "~/projects/emacs-vc/file1.el")
78 (insert "(+ 2 (* 2 2))")
79 (save-some-buffers)
80#+end_src
81
82*** git reset
83Откат изменений происходит при помощи ~M-x vc-revert~ или сочетания клавиш ~C-x
84v u~.
85
86Для разрешения конфликтов ~M-x vc-resolve-conflicts~.
87
88*** git branch
89Для создания ветки ~M-x vc-create-tag~ или бинд ~C-x v s
90Для смены ветки ~M-x vc-retrieve-tag~ или бинд ~C-x v r~
91
92*** git merge
93Слияние веток происходит при помощи ~vc-merge~
94
95** Воркфлоу в VC
96В любой непонятной ситуации используешь ~M-x vc-next-action~ или бинд ~C-x v v~
97
98- Если файл не зарегистрирован, то он регистрируется, но изменения не подтверждаются;
99- Если файл уже был добавлен, но не подтвержден, то это изменение подтверждается;
100- Если файл был изменен, а "главный" файл нет, то ваши изменения подтверждаются после ввода описания изменений;
101- Если файл в репозитории был изменен, то пользователю выдадут запрос на слияние изменений в ваш рабочий файл.
102
103** Ссылки
104- [[https://snarfed.org/emacs-vc-git-tweaks][Emacs VC Tricks]]
Note: See TracBrowser for help on using the repository browser.