DVC.el は分散バージョンコントロールシステムのための Emacs インタフェースである。 サポートしているのは
など。 以下の URL から入手できる。
ここでは Mercurial の Emacs インタフェースとして DVC を利用する。
DVC をしかるべくインストールして $HOME/.emacs.el に以下を追加する。
(setq dvc-prefix-key [(control c) ?v]) (load "dvc-load" t)
1行目はプリフィクスキーを C-c v に変更するため。 デフォルトのまま (C-x V) でよければ不要。 Merurial の基本的コマンドについてはこちらを参照。
以下は Mercurial 関係のものだけ (tla や bzr 用のコマンドは除いてある)。 プリフィクスキーを C-c v に変更してあるので注意。
C-c v = dvc-diff C-c v L dvc-log C-c v M dvc-merge C-c v a dvc-add-log-entry C-c v b dvc-bookmarks C-c v c dvc-log-edit C-c v d dvc-file-diff C-c v e dvc-file-ediff C-c v i dvc-inventory C-c v l dvc-changelog C-c v m dvc-missing C-c v p dvc-submit-patch C-c v s dvc-status C-c v u dvc-update C-c v f D dvc-remove-files C-c v f M dvc-rename C-c v f R dvc-revert-files C-c v f X dvc-purge-files C-c v f a dvc-add-files
dvc-status (C-c v s) を実行すると hg status の結果が表示される。
hg status for /Users/takagi/muse/ M public/dvc.muse M public/mercurial.muse
ここで使えるコマンドは以下のようになっている。
RET dvc-diff-jump-to-change = dvc-diff-diff L dvc-log # Is xhg-log better? U dvc-revert-files ^ dvc-diff-master-buffer a dvc-add-files c dvc-log-edit # commit after log edit d dvc-remove-files e dvc-diff-ediff # exec ediff g dvc-generic-refresh h dvc-buffer-pop-to-partner-buffer i dvc-pop-to-inventory j dvc-diff-diff-or-list k diff-hunk-kill l dvc-diff-log m dvc-diff-mark-file n dvc-diff-next o diff-goto-source p dvc-diff-prev q dvc-buffer-quit r dvc-remove-files t dvc-add-log-entry u dvc-diff-unmark-file v dvc-diff-view-source <M-return> dvc-diff-scroll-down-or-diff <backspace> dvc-diff-unmark-file-up <return> dvc-diff-jump-to-change M M dvc-merge M f dvc-pull M m dvc-missing M u dvc-update W s dvc-save-diff # I dvc-ignore-file-extensions # e dvc-edit-ignore-files # i dvc-ignore-files B L dvc-open-internal-log-buffer B b tla-bookmarks B p dvc-show-process-buffer w d dvc-diff-save-current-defun-as-kill M-RET dvc-diff-scroll-down-or-diff M-= dvc-diff-scroll-up-or-diff C-x C-j dvc-dired-jump C-x 4 T dvc-add-log-entry
M-x xhg-log を実行すると xhg-log モードに入る。 なかなか便利。
xhg-add-all-files xhg-add-files xhg-add-log-entry xhg-addremove xhg-annotate xhg-clone xhg-command-version xhg-delta xhg-diff xhg-diff-1 xhg-dvc-command-version xhg-dvc-delta xhg-dvc-diff xhg-dvc-edit-ignore-files xhg-dvc-ignore-files xhg-dvc-log xhg-dvc-merge xhg-dvc-missing xhg-dvc-pull xhg-dvc-rename xhg-dvc-save-diff xhg-dvc-update xhg-export xhg-export-via-mail xhg-forget xhg-heads xhg-hgrc-edit-repository-hgrc xhg-identify xhg-ignore-file-extensions xhg-ignore-file-extensions-in-dir xhg-import xhg-incoming xhg-init xhg-insinuate-gnus xhg-log xhg-log-edit xhg-log-mode xhg-log-mode-menu xhg-log-next xhg-log-previous xhg-log-review-next-diff xhg-log-review-previous-diff xhg-log-toggle-diff-for-changeset xhg-manifest xhg-merge xhg-missing xhg-mode-menu xhg-mq-export-via-mail xhg-mq-show-stack xhg-parents xhg-paths xhg-pull xhg-qapplied xhg-qdelete xhg-qdiff xhg-qheader xhg-qinit xhg-qnew xhg-qnext xhg-qpop xhg-qprev xhg-qpush xhg-qrefresh xhg-qrename xhg-qseries xhg-qtop xhg-qunapplied xhg-qversion xhg-remove-files xhg-rename xhg-revert-files xhg-save-diff xhg-select-committer-for-next-commit xhg-showconfig xhg-status xhg-tags xhg-tip xhg-undo xhg-update xhg-verify xhg-view