使用git-svn时避免冲突

时间:2009-02-21 08:34:01

标签: svn git version-control git-svn

我在以下场景中从共享git仓库中提取时遇到重复的代码冲突:

  1. 有一个常见的svn存储库

  2. 有几位开发人员使用git-svn bridge(通过git svn rebase / dcommit)跟踪/同步这个常见的svn repo和他们自己的本地git repos

  3. 这些使用git的开发人员有时需要在不影响svn存储库的情况下共享其更改。为此,他们设置了一个共享git仓库并使用pull / push命令交换他们的工作

  4. 事实证明,由于使用“git svn rebase”与主svn repo同步,这些开发人员可能会遇到冲突问题。发生这种情况是因为rebase操作会重写本地git分支的历史记录,并且无法进入共享git仓库并从中拉出它通常会导致冲突。

  5. 有人遇到同样的问题吗?

2 个答案:

答案 0 :(得分:8)

git-svn(1)说:

  

为了简单起见而且   与能力较弱的人进行互操作   系统(SVN),建议   所有git-svn用户克隆,获取和   直接从SVN服务器转发,   并避免一切   git-clone / pull / merge / push操作   git存储库和分支之间。   推荐的交换方法   git分支和用户之间的代码是   git-format-patch和git-am,或者只是   'dcommit'ing到SVN存储库。

如果您的情况允许,您可以使用SVN存储库中的分支(即子目录)将您的工作与其他开发人员隔离开来。

答案 1 :(得分:3)

我发现将git-svn更改合并到各种git分支以及它们之间是非常好的。 git-svn问题开始的地方是将这些更改合并回svn(或者更确切地说,是你提交的git branch)。在我看来,如果您将更改手动合并到svn(例如git diff | patch),则可以防止大部分问题。这将从你合并的东西中删除历史记录,但是颠覆用户已经习惯了这个并不是什么大事。

相关问题