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がセットされてたんだろう?