はじめに
最近コミットしたはずの.aファイルが、他のメンバーが「更新した時に入ってない、こまるなー」という話をしていて、その後私が解決したのですが、何故この事象が起きて、どうやったら解決するのかを書きたいと思います。
聞いてみるとGUIを使ってSVNにコミットしている方々は、あまり意識した事ないようですが、「まあできてるから良いか」は止めて、使いこなしましょう!
原因
.aファイルコミット対象になっていないってだけです。
SVNはデフォルトのまま使っていると、.aファイルはコミットする対象として除外する扱いになっているので、コミットする時の一覧ではどうにもできません。
解決方法
これを解決するには、~/.subversion/configのglobal-ignoreの編集する必要があります。
デフォルトでは下記のようにコメントアウトされていて、コメントアウトされているとデフォルト設定が使われます、デフォルト設定は.aファイルをコミット対象から除外しています。
1 2 3 4 5 6 7 |
### Section for configuring miscelleneous Subversion options. [miscellany] ### Set global-ignores to a set of whitespace-delimited globs ### which Subversion will ignore in its 'status' output, and ### while importing or adding files and directories. ### '*' matches leading dots, e.g. '*.rej' matches '.foo.rej'. # global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store |
なので、取り急ぎ.aだけコミットしたい場合はコメントアウトを外して、 *.aだけ消して保存すればOKです。
1 2 |
### '*' matches leading dots, e.g. '*.rej' matches '.foo.rej'. global-ignores = *.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.pyc *.pyo *.rej *~ #*# .#* .*.swp .DS_Store |
※この設定「コミット対象から除外するリスト」なので気をつけて下さい。
ちなみに私の設定は下記になってます、今の所これで困ったことはないです。
1 |
global-ignores = *.o *.lo *.la .*.rej *.rej .*~ *~ .#* .DS_Store *~.nib *.mode* *.pbxuser CVS _*.java *.perspective .LSOverride *.xcuserdatad |
最後に
gitの場合は結構気にするのですが、SVNを使ってるとignoreする事はあまり気にしないのかもしれませんね、でもこのファイルだけは絶対コミットしたくないとかそういうのに便利です、毎回コミットする時にチェック外すなんて危ないですので。
ちなみにVersionsは独自の除外リストが作られるようなので、何もしなくてもデフォルト設定は使われないみたいです。