git-svnを使ってみる
今月から新しい職場なわけですが、ここで使われているVCSはSVNが主流なようです。
いや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を使ってる人はどういう使い方をしているのか気になるなぁ。