Subversion on Macでエラー
僕は論文のTexソースやもろもろのデータをSubversionで管理している。これはWindowsマシン時代から続いていて、Macに移行したときにはWindowsマシン上で作った作業コピーをそのまま持ってきていた。今回、Windowsマシンで仕上げて投稿した論文が無事採録されたので、そのカメラレディ原稿を書こうとMacに持ってきた作業コピーに対して追加/編集し、変更を適応しおうとSubversionのコマンドを実行したところ、エラーになってしまった。エラーの原因究明および解決にちょっと時間がかかったのでメモ。(そもそも、作業コピーをWindows->MacへとコピーしないでCheck outし直す、ってのが普通なんだろうけど、データファイルが大きくなってしまってCommitせずにいたんだよね。結局今回Commitしたんだけど。)
今回、Texのテンプレートファイルを入れ替えたので、そのファイルをSubversionの管理に追加しようとaddコマンドを実行したところ、以下のようなエラーが出た。
$ svn add latex8.sty svn: Can't move '.svn/tmp/entries' to '.svn/entries': Operation not permitted
エラーメッセージから、Macにコピー時に.svn/entriesの書き込み権限が喪失したのかと思いlsで確認したところ、問題はなかった。
$ ls -al .svn/entries -rw-r--r-- 1 shin staff 809 12 16 16:17 .svn/entries
これじゃわからん、ということでググってみたところ、以下のページを発見。
svn: Can't move '.svn/tmp/entries' to '.svn/entries': Operation not permitted - The Commandline Tool Blog
何らかの理由で.svn/entriesファイルにimmutable flagが付いたようだ。実際、このページにあるように「ls -alO」を実行してみるとuchgが表示され、immutable flagが付いていることが確認できた。(ページ中には「-alo」とあるが、大文字のOの間違い)
$ ls -alO .svn total 16 drwxr-xr-x 9 shin staff - 306 1 23 19:17 . drwxr-xr-x 16 shin staff - 544 1 23 19:11 .. -rw-r--r-- 1 shin staff uchg 809 12 16 16:17 entries -rw-r--r-- 1 shin staff uchg 2 11 26 20:43 format -rw-r--r-- 1 shin staff - 0 1 23 19:17 lock drwxr-xr-x 2 shin staff - 68 12 18 18:01 prop-base drwxr-xr-x 2 shin staff - 68 12 18 18:01 props drwxr-xr-x 6 shin staff - 204 12 18 18:01 text-base drwxr-xr-x 6 shin staff - 204 1 23 19:28 tmp
.svn/formatファイルにも付いていた。
上記ページにあるように「chflags」コマンドを実行してimutable flagを削除したところ、svn addに成功した。
$ chflags -R nouchg .* $ ls -alO .svn total 16 drwxr-xr-x 9 shin staff - 306 1 23 19:17 . drwxr-xr-x 16 shin staff - 544 1 23 19:11 .. -rw-r--r-- 1 shin staff - 809 12 16 16:17 entries -rw-r--r-- 1 shin staff - 2 11 26 20:43 format -rw-r--r-- 1 shin staff - 0 1 23 19:17 lock drwxr-xr-x 2 shin staff - 68 12 18 18:01 prop-base drwxr-xr-x 2 shin staff - 68 12 18 18:01 props drwxr-xr-x 6 shin staff - 204 12 18 18:01 text-base drwxr-xr-x 6 shin staff - 204 1 23 19:28 tmp $ svn add latex8.sty A latex8.sty
僕の使い方がおかしいってのも原因の1つなんだけど、どうしてimmutable flagがセットされてたんだろう?