2009-02-21 45 views
10

伙计我面对重复的代码冲突而从共享混帐回购协议在以下情况下拉动避免冲突:同时使用Git svn的

  1. 有一个共同的SVN仓库

  2. 有一些开发人员使用git-svn bridge(通过git svn rebase/dcommit)跟踪/同步这个常见的svn回购协议

  3. 这些开发人员不时使用git, SVN库。为此,他们设置了一个共享的git仓库,并使用推/拉命令交换他们的工作

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

任何人都有同样的问题?

回答

8

git-svn(1)说:

为了简单起见并且 与能力更少 系统(SVN)互操作,则建议 所有GIT-SVN用户克隆,提取和 dcommit直接从SVN服务器 ,并避免所有git-clone/pull/merge/push操作 git存储库和分支之间的所有 。 在git分支和用户之间交换 代码的推荐方法是 git-format-patch和git-am,或者只是向SVN存储库提交 。

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

3

我发现,合并git-svn更改为各种git分支之间,他们之间是相当好的。 git-svn问题开始的地方是将这些更改合并回svn(或者说,您从中提交的git分支)。在我看来,如果您将更改手动合并回svn(例如,通过git diff | patch),则可以避免大部分这些问题。这将剥离你合并的东西的历史,但颠覆用户习惯了这个,这不是什么大不了的事情。