読者です 読者をやめる 読者になる 読者になる

git-svnを使ってみる

今月から新しい職場なわけですが、ここで使われているVCSSVNが主流なようです。
いやSVNが使えないというわけではないんだけれども...
気軽にブランチ切ったりとかできないし、
fugitive + gitvに慣れてるからGitを使いたい!
ということでSVNと連携できるgit-svnを試してみました。

$ git svn clone リポジトリのURL
  • コミット

普通にgit commitした後で

$ git svn dcommit

簡単簡単。

けどmasterからコミットはしたくないのでブランチからコミットしてみます。

$ git checkout -b branch
$ git commit -m "1st commit from git/branch"
$ git commit -m "2nd commit from git/branch"
$ git svn dcommit

このときのsvn logはこんな感じ。

------------------------------------------------------------------------
r4 | daisuzu | 2013-01-23 20:42:57 +0900 (水, 23  1 2013) | 1 line

2nd commit from git/branch
------------------------------------------------------------------------
r3 | daisuzu | 2013-01-23 20:42:57 +0900 (水, 23  1 2013) | 1 line

1st commit from git/branch
------------------------------------------------------------------------
r2 | daisuzu | 2013-01-23 20:31:47 +0900 (水, 23  1 2013) | 1 line

commit from git
------------------------------------------------------------------------
r1 | daisuzu | 2013-01-23 20:29:23 +0900 (水, 23  1 2013) | 1 line

Initial commit
------------------------------------------------------------------------

このときSVNではr3とr4が1つのコミットでGitでは別々のコミットになるような使い方がしたいんだよなぁ...
とりあえず作業用とコミット用のブランチを作る方式でもう一度。

$ git checkout -b for-work
$ git commit -m "1st commit from git/for-work"
$ git commit -m "2nd commit from git/for-work"
$ git checkout master
$ git checkout -b for-dcommit
$ git merge --no-ff for-work
$ git svn dcommit

svn logはこんな感じ。
for-workでのコミット履歴が表示されていません。

------------------------------------------------------------------------
r5 | daisuzu | 2013-01-23 20:55:12 +0900 (水, 23  1 2013) | 1 line

Merge branch 'for-work' into for-dcommit
------------------------------------------------------------------------
r4 | daisuzu | 2013-01-23 20:42:57 +0900 (水, 23  1 2013) | 1 line

2nd commit from git/branch
------------------------------------------------------------------------
r3 | daisuzu | 2013-01-23 20:42:57 +0900 (水, 23  1 2013) | 1 line

1st commit from git/branch
------------------------------------------------------------------------
r2 | daisuzu | 2013-01-23 20:31:47 +0900 (水, 23  1 2013) | 1 line

commit from git
------------------------------------------------------------------------
r1 | daisuzu | 2013-01-23 20:29:23 +0900 (水, 23  1 2013) | 1 line

Initial commit
------------------------------------------------------------------------

Gitリポジトリに戻って、

$ git checkout master
$ git svn rebase
$ git log --pretty=short

でfor-workでのコミット履歴が表示されています。

commit 085747c8dd6f0a7971b19fd82e300a81e9751bcd
Merge: 126740f 419de26
Author: daisuzu <daisuzu@5c64fb14-4f99-49f2-9a3a-5479944a98aa>

    Merge branch 'for-work' into for-dcommit

commit 419de26eb79f8436e933e4a832fffb00230614df
Author: daisuzu <daisuzu@gmail.com>

    2nd commit from git/for-work

commit 3787d3cdd5110ea280bc940b4a4aa5c77ae6eb25
Author: daisuzu <daisuzu@gmail.com>

    1st commit from git/for-work

commit 126740f3985fbc39f7dc610d45aea8dfe9b45c77
Author: daisuzu <daisuzu@5c64fb14-4f99-49f2-9a3a-5479944a98aa>

    2nd commit from git/branch

commit bad516ad6e408b0d9983c0605ca2b9f17e85b81f
Author: daisuzu <daisuzu@5c64fb14-4f99-49f2-9a3a-5479944a98aa>

    1st commit from git/branch

commit b1eeddb339ae6b58c66219baa13df16c7fbcb382
Author: daisuzu <daisuzu@5c64fb14-4f99-49f2-9a3a-5479944a98aa>

    commit from git

commit ced09b503f3ec94364beb696fa589bb16ae5dc12
Author: daisuzu <daisuzu@5c64fb14-4f99-49f2-9a3a-5479944a98aa>

    Initial commit

コミットメッセージはdcommit前に書き換えるとして、
一応やりたいことができることがわかりました。

う〜ん、実際git-svnを使ってる人はどういう使い方をしているのか気になるなぁ。