diff options
Diffstat (limited to 'content/digarden/pages/20210410205030-emacs_vc.org')
-rw-r--r-- | content/digarden/pages/20210410205030-emacs_vc.org | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/content/digarden/pages/20210410205030-emacs_vc.org b/content/digarden/pages/20210410205030-emacs_vc.org new file mode 100644 index 0000000..81d319f --- /dev/null +++ b/content/digarden/pages/20210410205030-emacs_vc.org @@ -0,0 +1,104 @@ +:PROPERTIES: +:ID: b0c8ec58-f9a1-4ea0-827f-70f447840fc0 +:END: +#+title: emacs-vc +* Emacs VC +Встроенный модуль для работы с системами контроля версий в Emacs. + +Встроенная поддержка есть для следующих модулей +#+begin_src emacs-lisp :results list + vc-handled-backends +#+end_src + +#+RESULTS: +- RCS +- CVS +- SVN +- SCCS +- SRC +- Bzr +- Git +- Hg +- Mtn + +Доступны интерфейсы к известным системам контроля версий: +- Git +- Mercurial +- Subversion +- Darcs + +И менее известным: +- rcs +- CVS +- MetaCVS +- GNU Arch +- sccs +- SourceSafe +- ClearCase + +Часть из интерфейсов доступна при помощи установки стороннего расширения. + +[[https://www.gnu.org/software/emacs/manual/html_node/emacs/Version-Control.html][Документация]] +или +#+begin_src bash :results none + info emacs vc +#+end_src + +* История модуля VC +** Основан на [[https://www.gnu.org/software/rcs/][GNU Rcs]] +Rcs -- древняя централизированная система контроля версий от проекта +GNU. Проект живой, но неизвестно кем используется. +** Подробнее об истории +[[https://alexott.net/en/writings/emacs-vcs/EmacsVC.html][История модуля VC (AlexOtt)]] + +* Как работать с ним +** Начало +Инициализация проекта предполагается через cli утилиту вашей системы контроля +версий. Вроде: +#+begin_src bash + mkdir ~/projects/emacs-vc + cd ~/projects/emacs-vc + git init . +#+end_src + +Общий вид доступен по команде vc-dir + +#+begin_src emacs-lisp :results none + (vc-dir "~/projects/emacs-vc") +#+end_src + +** Альтернативы командам git +*** git add +В VC так называется "регистрация" файла. Можно выполнить напрямую через +команду ~M-x vc-register~, но в VC воркфлоу несколько иной. + +Создадим файл и добавим +#+begin_src emacs-lisp :results none + (find-file "~/projects/emacs-vc/file1.el") + (insert "(+ 2 (* 2 2))") + (save-some-buffers) +#+end_src + +*** git reset +Откат изменений происходит при помощи ~M-x vc-revert~ или сочетания клавиш ~C-x +v u~. + +Для разрешения конфликтов ~M-x vc-resolve-conflicts~. + +*** git branch +Для создания ветки ~M-x vc-create-tag~ или бинд ~C-x v s +Для смены ветки ~M-x vc-retrieve-tag~ или бинд ~C-x v r~ + +*** git merge +Слияние веток происходит при помощи ~vc-merge~ + +** Воркфлоу в VC +В любой непонятной ситуации используешь ~M-x vc-next-action~ или бинд ~C-x v v~ + +- Если файл не зарегистрирован, то он регистрируется, но изменения не подтверждаются; +- Если файл уже был добавлен, но не подтвержден, то это изменение подтверждается; +- Если файл был изменен, а "главный" файл нет, то ваши изменения подтверждаются после ввода описания изменений; +- Если файл в репозитории был изменен, то пользователю выдадут запрос на слияние изменений в ваш рабочий файл. + +** Ссылки +- [[https://snarfed.org/emacs-vc-git-tweaks][Emacs VC Tricks]] |