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