2011-01-27 186 views
3

有很多關於混帳svn的工作流程問題,但我一直沒能弄清楚這一個:與SVNgit-svn分支 - 如何保持分支與中繼同步?

This section of the svn book約家常便飯會談:你犯了一個分支,你繼續從合併更改幹線作爲幹線得到更新,以便分支始終包含最新的更改。

我做了git svn branch在svn上創建了一個分支,然後設置了一個跟蹤分支來處理它。 Thesequestions覆蓋過程相當不錯。

現在假設有對trunk進行了更改,我現在想要將它合併到分支中。我最好的選擇是什麼?請注意,我需要保持git-svn的快樂,並且不要弄亂在顛覆中使用分支的人的工作,所以只是做一個rebase可能不起作用。

This question似乎談了類似的情況,雖然這是很老了,我不知道什麼是底線出現了 - 這似乎暗示我應該git checkout master然後git rebase mybranch,但不可能是正確的。

我懷疑,答案應是一種有svn merge效果,最好設置mergeinfo財產,但很可惜,沒有git svn merge ...

回答

0

我真的不理解這個簡單的問題沒有回答超過一個星期,迄今只有13個意見。我想這是我的錯,寫錯了問題。

無論如何,我想出了自己。短版本:只需使用git merge而不是git rebase

當將分支與master中的更改同步時,我的混淆來自於使用git rebase。在當地分支機構工作時,這通常效果很好,並保持歷史清潔。然而,you should not rebase commits that you have pushed to a public repository,以及subversion版本庫足夠公開。另一方面,git merge工作得很好,並沒有任何問題。

所以,長的回答是:如果要合併在後備箱進入SVN分支你跟蹤最新的變化,只是做:

git merge master 
# Handle conflicts, git add when you're done 
git commit 
git svn dcommit 

這將讓你的分支同步樹幹,但不會設置mergeinfo,所以你可能不應該混合svn merge這種做法。