トップ «前の日記(2009-07-26) 最新 次の日記(2009-07-30)» 編集

Ussy Diary


2009-07-27

[Git][Subversion]コミットを 1 つだけにする

Subversion と Git の連携で困っていたことがあって、 何も考えず Git でコミットしたものを Subversion に dcommit すると Git でコミットしたものがすべて Subversion にそれぞれコミットされてしまっていました。

バージョン管理としては正しい動きなんですけど、 Git ではあくまで個人の話しだけにしたいのです。で、ようやく Git のマージのときにオプションを与えると、コミットしないでマージだけしてくれることを知りました。

$ git merge --squash branch

やりたいことを実現するための手順としては

  1. Subversion のリポジトリから clone
  2. タスクごとに Git で branch を作成
  3. 動作が安定しないコードをブランチ上でガシガシコミット
  4. タスクを完了するコードができた時点で master に戻る
  5. master にマージだけする
  6. コミットログ付きで commit
  7. Subversion のリポジトリに dcommit

これで他の人からは Git の中の細かいコミットが見えなくて、 Subversion を見るとひとつだけのコミットになります。

必要になることがあるのかと言えば、実際はタスクを小さくすることで Subversion だけで十分だと思います。それでも大きな修正の場合まだコミットできない(と感じてしまう)状態が発生するので、そんなときに連携できると幸せなのかなあと思います。

後はコンフリクトが発生したときに冷静に対応できるかどうかが、個人的な課題でしょうか。