我一直在使用Git作爲Subversion repo的胖客戶端,這非常棒。我應該遵循一個提交每Trac的票的方法,但我更喜歡有豐富我自己的利益原子提交的歷史,所以我得到了到下面的習慣:Git嫁接危險嗎?
- 讓話題分行Trac的門票
- 謬以千里,使得多次提交
- 上斷開連接頭使用
git rebase -i
捆綁所有的工作到一個單一的提交(保持特性分支完好) - 使用
git svn dcommit
承諾SVN - 將功能合併回
master
,然後合併從trunk
到master
(第二步通常是一個空操作,因爲軀幹和特性分支應該匹配)
這在同步保持master
和trunk
很好,同時保持所有我想要的歷史。唯一的問題是,Git認爲master
永遠比trunk
好,因爲據我所知,我從來沒有真正提交過主題分支或master
回到trunk
--步驟#3失去了變更的祖先,所以所有Git把是trunk
本身哼唱和master
無論是從它和特性分支合併:
Switched to branch 'master'
Your branch and 'trunk' have diverged,
and have 232 and 1 different commit(s) each, respectively.
現在,我真的不知道這這是一個問題。我大多是唯一一個在SVN倉庫中工作的人,所以並不像處理那些可能會讓人困惑的棘手的合併問題。但是,原則上這讓我困擾(我就是這樣)。我希望trunk
承諾反映他們的「真實」祖先 - 每一個都是與前一個SVN修訂版合併爲一個父代,而主題分支合併爲另一個。
而且你看,有.git/info/grafts
,這似乎正是我想要的。我甚至可以合併trunk
到master
作爲快進合併,這在道德上通常是絕對的。但是,雖然結果可能會很好,但似乎很糟糕,特別是因爲它可能不是絕對必要的。
所以我想知道的是,這個想法有什麼危險嗎?如果我說,每次跳舞時都養成製作嫁接的習慣,我是不是要問題?我應該過一下自己嗎? :-)
「我應該遵循每次Trac-ticket的方法」......也許你可以嘗試改變規則,特別是如果你是唯一使用svn回購的人。 – MatrixFrog 2010-12-09 09:40:29