2008年1月20日

subversionのロックについて

ロックについての概要や、自動でneeds-lock属性を付ける方法等はこちらを参照。

しかし、Meadowで使っている subversionに付属の vc-svn.el で、ロックをするとファイルが開けなくなる。
ロックされた状態のファイルを開くと、
Couldn't parse output from `svn status -v'
のように言われる。
仕方が無いので、vc-svn.el を読み、上記メッセージを表示しているところをチェック。

(defun vc-svn-parse-status ()
のところ。
★修正前
((looking-at "....\\s-+\\(\\*\\s-+\\)?[-0]\\s-+\\(\\?\\|[0-9]+\\)")
(list state "0" nil))
((looking-at "....\\s-+\\(\\*\\s-+\\)?\\([0-9]+\\)\\s-+\\([0-9]+\\)")
★修正後
((looking-at "......\\s-+\\(\\*\\s-+\\)?[-0]\\s-+\\(\\?\\|[0-9]+\\)")
(list state "0" nil))
((looking-at "......\\s-+\\(\\*\\s-+\\)?\\([0-9]+\\)\\s-+\\([0-9]+\\)")

svn status -v の結果を正規表現で、状態を表現しているアルファベットを取得しているようなのだが、任意の一文字を表すピリオドが4つしかないが、ロックされたことを示す"K" は6つめに表示されるので、これによって正規表現にマッチしなくなっているようだ。
よって、上記の2行のピリオド4つの部分に2つ追加した。これによってロックしたファイルも開けるようになった。

コメントする