前エントリから続き。
前の構成では、衝突の解消がうまく扱えてなかったので、
「極力フロントエンドで調整する」という方針にしたがって、
フロントエンドを変えてみた。
現在の構成は以下の通り、
.emacs の変更などはほとんど必要なかったはずだが、結局いろいろいじった。
使っていないのに JDE やら、ECB までも最新にした(汗)。
#
# meadow の変更点について、蛇足。
#
# MULE-UCS は使わない前提になったようなので、該当部分をコメントにした。
#
# ;;; (load "un-define");; unicode
# ;;; (load "un-tools");; unicode
#
#
# ファイルを dired バッファにドロップすると、そのディレクトリにコピーされる!
# (meadow 2 系までは、ドロップしたファイルが開いていた)
# で、undo すると、dired 上でだけ消えるが、実際は消えない。
# 逆に dired からはドラッグできない(一方通行)。
# ちょっとキモイので、前の挙動に戻す設定がきっとあるはず。
#
#
# w32-symlinks( Windows のショートカットを良きに計らってくれるやつ)
# が無効っぽくなってたけど、w32-symlinks.el のコメント読んだりして、
# 結局 (load ) の前に (setq ) したら上手くいった。
#
# (setq w32-symlinks-handle-shortcuts t)
# (load "w32-symlinks")
#
これで、vc 経由の svn が、満足できるレベルで使えるようになった。
前の構成では、衝突の解消がうまく扱えてなかったので、
「極力フロントエンドで調整する」という方針にしたがって、
フロントエンドを変えてみた。
現在の構成は以下の通り、
- Subversion 1.3.2 (cygwin 版)
- meadow 3.00 (based on GNU Emacs 22.0.90.1)
- vc-svn.el (FSF 版)
.emacs の変更などはほとんど必要なかったはずだが、結局いろいろいじった。
使っていないのに JDE やら、ECB までも最新にした(汗)。
#
# meadow の変更点について、蛇足。
#
# MULE-UCS は使わない前提になったようなので、該当部分をコメントにした。
#
# ;;; (load "un-define");; unicode
# ;;; (load "un-tools");; unicode
#
#
# ファイルを dired バッファにドロップすると、そのディレクトリにコピーされる!
# (meadow 2 系までは、ドロップしたファイルが開いていた)
# で、undo すると、dired 上でだけ消えるが、実際は消えない。
# 逆に dired からはドラッグできない(一方通行)。
# ちょっとキモイので、前の挙動に戻す設定がきっとあるはず。
#
#
# w32-symlinks( Windows のショートカットを良きに計らってくれるやつ)
# が無効っぽくなってたけど、w32-symlinks.el のコメント読んだりして、
# 結局 (load ) の前に (setq ) したら上手くいった。
#
# (setq w32-symlinks-handle-shortcuts t)
# (load "w32-symlinks")
#
これで、vc 経由の svn が、満足できるレベルで使えるようになった。
◆ vc の基本操作
- M-x vc-update
- => svn update
作業コピーに、最新のリビジョンでの変更を反映する。
※ 現状の vc-svn.el では、 vc-update で
※ レポジトリでのファイルの出没(追加 / 削除)までは追従できないようだ。
※ つまりディレクトリの内容の変更は反映できないようだ。
※ したがって svn update は必要。
- M-x vc-next-action (あるいは C-x v v)
- => svn add, svn ci
状況に応じて、次のアクションを行う。
未追加ファイルなら、追加フラグ( vc-register )。
編集前なら、ロック。
編集後なら、チェックイン。
※ svn では「ロックしない」ので、
※ 編集前に v v しても、実質何も起こらない。
※ 編集前に自動で vc-update されるとうれしいかもしれないが、されない。
- M-x vc-merge (あるいは C-x v m)
- => svn merge
リビジョンの異なる作業コピーをマージする。
衝突(バックエンドが解消しきれない差分)があれば、
該当部分を衝突マークで囲む。
つまり閲覧中のファイルが書き換えられるわけだが、
emacs は通常、バッファを自動で再読み込みしないので注意。
(当然、*.mine, *.rA, *.rB というバックアップファイルもできる。)
- M-x resolve-conflicts
- => svn resolved
…しているわけではないようだ。
*.mine, *.rA, *.rB みたいなファイルは自動削除されないので。
衝突の解消を ediff でステキに支援する(以下で図説)。
- M-x vc-delete-file
- => svn delete
作業コピーに削除フラグをたてる。
※ その後 svn ci でレポジトリに反映する必要がある。
- M-x vc-rename-file
- => svn rename
作業コピーに削除フラグをたてて、別名で複製したものに追加フラグをたてる。
※ その後 svn ci でレポジトリに反映する必要がある。
以下、work, work2 という 2 つの作業コピーで、衝突の解消を図説。
▼オレンジ色でマークされている行を変更します。
▼work で変更し、v v (チェックイン)。
▼work2 でも同じところを変更し、v v (チェックイン)。
▼work2 のチェックインは失敗(work のチェックインによって、レポジトリのリビジョンが更新されているため)。
マージが必要。
▼work2 で、v m (マージ)。衝突した。
▼M-x vc-resolve-conflicts (衝突の解消)。
▼衝突を解消して、*.mine, *.rA, *.rB とかのファイルを削除して、改めてチェックイン。
(ここでは、敢えて「衝突しない変更」を加えてみたが、無事チェックインできた。)
▼work のほうに戻って、M-x vc-update (アップデート)。
上で加えた「衝突しない変更」も、更新された。
こんな感じで良いんだろうか?
◆ vc のここが便利(emacsen ユーザにとって)
その1. v v, v m
日常的には、v v 、たまに v m だけで済みそう。その2. ediff の支援
ediff は 3 年ほど使ってるので、ありがたい。その3. vc dired
emacs で複数のファイルを一覧したり一括操作したい場合、emacs 上のファイラーである dired(ディレクトリエディタ)を使うんだけど、
vc では dired に vc の機能を追加した、vc dired モードを使える。
基本的に、dired と同様の操作方法で、マーク(m)したファイルを対象に一括操作する。
機能 | 通常のファイルバッファ | vc dired バッファ |
---|---|---|
詳細/簡易表示のトグル | なし | v t |
'next-action' | C-x v v | v v |
マージ | C-x v m | v m |
ログ閲覧 | C-x v l | v l |
以下、同様。 |
とりあえず、そんな感じ。
コメント (2)
ちなみに、ほぼ同様に cvs も扱えるというか、むしろ、csv の場合は、もっと気が利いてる。
例えば、
vc-delete-file / vc-rename-file だけで
cvs ci も処理される(削除 / 改名が完了する)。
同様に、
vc dired バッファで vc-update すれば、
cvs update が処理される。
投稿者: master | 2006年12月14日 20:29
Meadow + vc-mode + tramp で、遠隔版管理、試用中。
投稿者: master | 2007年01月26日 11:43