git svn clone&合并

时间:2011-08-26 11:51:01

标签: git

我有一个SVN存储库的GIT克隆。根据{{​​3}}的 CAVEATS 部分,我似乎无法再次克隆此git存储库:

  

为了简单和与Subversion互操作,建议所有git svn用户直接从SVN服务器克隆,获取和dcommit,并避免所有 git clone / pull / merge / push < / strong> git存储库和分支之间的操作。

我希望我可以将这个GIT存储库分享给其他用户,而这些用户又可以直接向svn提交。这似乎是一个很大的限制,因为每个其他用户都需要重新注册SVN存储库或使用同一页面上建议的rsync

所以第一个问题是 - 我能正确理解吗?

其次,有人能举例说明这一段的含义吗?我完全迷失了:

  

因此,您必须确保要提交的分支的最新提交是合并的第一个父级。否则会发生混乱,特别是如果第一个父级是同一SVN分支上的旧提交。

1 个答案:

答案 0 :(得分:2)

您可以使用GIT克隆GIT-SVN存储库,但实际上您需要注意几个警告。我有适度的GIT经验,并且自己一直在使用这样的设置,YMMV虽然......

您可以克隆GIT-SVN存储库,但是(每次克隆一次)需要将git-svn配置添加到.git/config

此外,当你git-svn dcommit时,这会修改提交的SHA1总和,所以如果你通过git-svn镜像获取它们,你的本地git checkout会合并两个稍微不同的分支。要解决此问题,您可以运行

git reset remotes/origin/master

假设您从主分支中提交,并且git-svn镜像标记为origin。

另外我注意到有时git-svn dcommit失败了,我无法直接回忆起错误,但可以通过删除相关的git-svn rev-map来解决

.git/svn/refs/remotes/*/.rev_map.*

它将由git-svn自动重建。