我們有一個穩定的主幹和不穩定的開發分支的SVN設置。開發工作(大部分)在分支上完成,然後在部署之前合併到主幹。如何愚弄git-svn以識別與svn合併?
我使用git-svn作爲我的SVN客戶端。從不穩定到中繼的合併過程如下:
git svn fetch
git co -b trunk svn/trunk
git merge --no-ff svn/unstable
git svn dcommit
svn/*
是遠程SVN分支機構。
當然,這需要一個沒有任何承諾到主幹我之前做,但這不是在實踐中的問題。
這個過程的好處是,git現在在我的本地存儲庫中記錄合併提交的父母。這對我的同事沒有好處,但它確實允許git在合併時計算共同的祖先。這是非常可取的。
這裏是擦。當其他人進行合併時,git不知道它。這裏有一個例子:
o-...-A---o---C--- unstable
/
X--...--B---o---o--- stable
不穩定分支在X點產生在A點,我們決定合併點B.從不穩定分支變成穩定分支的共同祖先是正確X.
由於合併未記錄在git歷史記錄中,因此C處的以下合併再次假定X是共同祖先。我想它是A,如下面的圖:
o-...-A---o---C--- unstable
/ \
X---...---B---o---o--- stable
這是完全沒有必要讓看起來像exacly與圖片中顯示的圖表。任何能夠將A識別爲共同祖先的圖形對我來說都很好。
我心中有一個選項,如正確使用git的過濾分支的或「假」犯下這是從來沒有dcommited到SVN。然而,迄今爲止,我的嘗試都沒有充分發揮作用。
我很感激你能提出的任何想法。程序不一定是自動的。合併是非常罕見的,我可以忍受「手工」的痛苦。
權!所以關鍵是做_two_中間提交,其中一個最終也在SVN中結束。這似乎至少在紙上起作用。感謝您的信息!我想知道是否有可能把這個變成git別名... – 2009-06-02 09:38:34
你忘了在「merge」分支中結束你的「**」(粗體)......「Git **」 – 2009-07-19 11:35:46