source: content/digarden/20210410205030-emacs_vc.org@ eb2627e

Last change on this file since eb2627e was eb2627e, checked in by w96k <w96k.ru@…>, on Oct 11, 2022 at 11:50:11 AM

Add Zettelkasten notes as 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* Emacs VC
6Встроенный модуль для работы с системами контроля версий в [[id:981dfcf0-ce4a-4215-bbce-3a745d7d0b4d][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]]
49 Rcs -- древняя централизированная система контроля версий от проекта
50 GNU. Проект живой, но неизвестно кем используется.
51** Подробнее об истории
52 [[https://alexott.net/en/writings/emacs-vcs/EmacsVC.html][История модуля VC (AlexOtt)]]
53
54
55* Как работать с ним
56** Начало
57 Инициализация проекта предполагается через cli утилиту вашей системы контроля
58 версий. Вроде:
59 #+begin_src bash
60 mkdir ~/projects/emacs-vc
61 cd ~/projects/emacs-vc
62 git init .
63 #+end_src
64
65#+RESULTS:
66: Инициализирован пустой репозиторий Git в /home/w96k/projects/emacs-vc/.git/
67
68 Общий вид доступен по команде vc-dir
69
70 #+begin_src emacs-lisp :results none
71 (vc-dir "~/projects/emacs-vc")
72 #+end_src
73
74** Альтернативы командам git
75*** git add
76 В VC так называется "регистрация" файла. Можно выполнить напрямую через
77 команду ~M-x vc-register~, но в VC воркфлоу несколько иной.
78
79 Создадим файл и добавим
80 #+begin_src emacs-lisp :results none
81 (find-file "~/projects/emacs-vc/file1.el")
82 (insert "(+ 2 (* 2 2))")
83 (save-some-buffers)
84 #+end_src
85
86*** git reset
87 Откат изменений происходит при помощи ~M-x vc-revert~ или сочетания клавиш ~C-x
88 v u~.
89
90 Для разрешения конфликтов ~M-x vc-resolve-conflicts~.
91
92*** git branch
93 Для создания ветки ~M-x vc-create-tag~ или бинд ~C-x v s
94 Для смены ветки ~M-x vc-retrieve-tag~ или бинд ~C-x v r~
95
96*** git merge
97 Слияние веток происходит при помощи ~vc-merge~
98
99** Воркфлоу в VC
100 В любой непонятной ситуации используешь ~M-x vc-next-action~ или бинд ~C-x v v~
101
102 - Если файл не зарегистрирован, то он регистрируется, но изменения не подтверждаются;
103 - Если файл уже был добавлен, но не подтвержден, то это изменение подтверждается;
104 - Если файл был изменен, а "главный" файл нет, то ваши изменения подтверждаются после ввода описания изменений;
105 - Если файл в репозитории был изменен, то пользователю выдадут запрос на слияние изменений в ваш рабочий файл.
106
107** Ссылки
108- [[https://snarfed.org/emacs-vc-git-tweaks][Emacs VC Tricks]]
Note: See TracBrowser for help on using the repository browser.