2011-01-27 137 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这种做法。