昨日に引き続きgitの話。ローカルで色々いじってるブランチを、 リモートSVNのブランチに突っ込むにはどうするか。
まだまだ始めたばっかりでよくわかってないところもあるんだけど、 gitでローカルに作ったブランチをSVNのリモートブランチに一旦置いときたいことがある。
例えば、trunkをhotfixしようとローカルブランチ切ったはいいんだけど、 意外に影響範囲が大きくなりそうで、そのままマージするのちょっと気が引けるし、とか チームメンバーにレビューしてもらうときとか、じゃあSVNのブランチに入れといて、って言われたりとか。
最初からSVN側にブランチ作ればいいじゃんという人もいるかもだけど、 常にそういうことができるというわけでもないので…(まだ家にインターネット環境ないし)
ちなみに、最初から作っとく場合はおそらく
git svn branch remotebranch # リモートにブランチ作成
git checkout -b localbranch remotebranch # ローカルに持ってくる
# 色々コミット
git svn dcommit # リモートにコミット
でおkな気がする。試したことないけど。心配だったらdcommitのときに-nオプションつけて確認するとか。
これがローカルブランチのがすでにある状態からだと、リモートブランチを作成して持ってきたあとに、 既存の奴をマージするという一手間があるのかと。つまり
git svn branch remotebranch
git checkout -b localbranch remotebranch
git merge --no-ff exsistingbranch # ローカルブランチに既存のをマージ
git svn dcommit
--no-ffオプションを使わないとなんかよろしくないことになるみたいなので常に使う方向で。 あるいはコミットログが多すぎるよ、ってときは--squashでマージしてからコミットする方向で。 (この前SVNにマージしようとして200超のコミットログを作った反省を込めて)
何かもっといい方法あったら教えてください。
参考にしたサイト:
- git-svnでリモートリポジトリのブランチにコミットする - I sort my thought...
- Is it possible to make git svn dcommit result in a single svn commit? - Stack Overflow
Comments
comments powered by Disqus