source: content/digarden/.stversions/20210410205030-emacs_vc~20220309-051343.org@ 5a2b670

Last change on this file since 5a2b670 was 5a2b670, checked in by Mikhail Kirillov <w96k@…>, on Oct 6, 2022 at 12:37:40 PM

Add digital garden

  • Property mode set to 100644
File size: 3.9 KB
Line 
1#+title: emacs-vc
2Встроенный модуль для работы с системами контроля версий в [[file:20210410205435-emacs.org][Emacs]].
3
4Встроенная поддержка есть для следующих модулей
5#+begin_src emacs-lisp :results list
6 vc-handled-backends
7#+end_src
8
9#+RESULTS:
10- RCS
11- CVS
12- SVN
13- SCCS
14- SRC
15- Bzr
16- Git
17- Hg
18- Mtn
19
20Доступны интерфейсы к известным системам контроля версий:
21- Git
22- Mercurial
23- Subversion
24- Darcs
25
26И менее известным:
27- rcs
28- CVS
29- MetaCVS
30- GNU Arch
31- sccs
32- SourceSafe
33- ClearCase
34
35Часть из интерфейсов доступна при помощи установки стороннего расширения.
36
37[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Version-Control.html][Документация]]
38или
39#+begin_src bash :results none
40 info emacs vc
41#+end_src
42
43* История модуля VC
44** Основан на [[https://www.gnu.org/software/rcs/][GNU Rcs]]
45 Rcs -- древняя централизированная система контроля версий от проекта
46 GNU. Проект живой, но неизвестно кем используется.
47** Подробнее об истории
48 [[https://alexott.net/en/writings/emacs-vcs/EmacsVC.html][История модуля VC (AlexOtt)]]
49
50
51* Как работать с ним
52** Начало
53 Инициализация проекта предполагается через cli утилиту вашей системы контроля
54 версий. Вроде:
55 #+begin_src bash
56 mkdir ~/projects/emacs-vc
57 cd ~/projects/emacs-vc
58 git init .
59 #+end_src
60
61#+RESULTS:
62: Инициализирован пустой репозиторий Git в /home/w96k/projects/emacs-vc/.git/
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
84 v 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.