Git? Subversion? git-svn?

ちまたではGitが流行っている。
リソース管理はCVSの頃から使っていて、現在はSubversionを使用している。これで、全く問題なかったのだが、Mac Bookで外出先でコーディングをするようになってから少し問題が出てきた。リソース管理用のSubversionとプロジェクト管理用のRedmineをひとつのサーバで管理し、そのサーバ自体を所内においている。当然LAN内でしか使えない。となるとワークフローとしては、
外出先でコーディング→帰ってからコミット
となる。ところが、コーディングしていると、ひとつのチケットが終了して、「あ〜!ここでコミットしたい!」ということが起こってくる。Redmineチケットへの記入はあとでどうにでもなるが、コミット自体はそこでしておかないとあとではムリ。こうなると、Subversion+Redmineサーバをネットにあげるか、ローカルリポジトリが保持できる分散バージョン管理システムの導入のどちらかとなる。外出先でも完全なオフラインというのは最近ではあり得ないから、前者の選択肢が一番いいのだが、サーバのレンタル料金のことを考えると、後者が現状ただでできる。
ということで、Gitの導入を試みた。
といっても、現状のプロジェクトのメインリポジトリをいきなりGitに移すのはRedmineとの関係上危険なので、メインリポジトリとしてSubersionを利用し、Mac BookにだけGitを導入し、git-svnを使うことにした。
Mac用のGit、git-svnともにMacPortsを使うとあっさりインストールできる。あとは、ここの手順通りに現在進行中のプロジェクトのSubversionリポジトリを元にGitのローカルリポジトリを作ってみた。すると、なんと、うまくいかない!
何がうまくいかないかというと、Subversionからのチェックアウトだとうまく読み込めるはずの空ディレクトリがcloneコマンドでローカルリポジトリに読み込まないのだ!
ちょっと調べるとでてくるが、Gitは空ディレクトリを管理対象から外すのだ。これでは、まるでCVSCVSのこの部分が非常に扱いにくくてSubversionに移行した人が多いはずなのに。最近はいろいろとテクニックがあって、あらかじめ. gitignoreを作成しておくとか、何か空のファイルをあらかじめ入れておくとかすればうまくいく。確かに、CakePHPなんかはあらかじめ必要なディレクトリにはemptyという中身が何もないファイルがおかれている。Subversionでは全く不要なので私はいちいち消しているのだが…。
新規プロジェクトの場合はこのあたりを意識してプロジェクト登録の際に対応ができるが、現在進行中のプロジェクトを移すとなると、空フォルダをいちいち探さないといけないから大変だ。
ということで、結論としては、もうしばらくGitは様子見。