为什么git svn会创建新分支,我该如何解决?

时间:2017-07-13 02:18:19

标签: git bitbucket git-svn

我的团队同意从svn迁移到git。所以我创建了一个存储库xxwin然后我运行了类似的东西:

git svn clone --stdlayout --no-metadata --authors-file=users.txt svn://hostname/path xxwinRepository
cd xxwinRepository
git remote add origin https://bitbucket.org/xxxxx/xxwin.git
git push

花了很长时间但似乎工作正常。

然后一位开发人员说自从迁移以来他已经对svn做了一些更改。

而不是重新启动,我以为我可以运行

git svn fetch
git push

它似乎把一切都推到了新的分支机构。不幸的是,在我意识到发生了什么之前,这发生了几次。现在我们有数百个分支机构..

例如,我们在svn中有一个名为v2_5_working的分支,现在在git中有一个名为origin/v2_5_working xxwin/origin/v2_5_working xxwin/xxwin/origin/v2_5_working

的分支

有没有办法轻松合并所有这些分支?如果有下一次有办法让它合并为git svn fetch

的一部分

1 个答案:

答案 0 :(得分:0)

您在--no-metadata命令中使用了git svn clone标记。这意味着创建的git提交没有任何指向相应svn提交的链接,并且git无法知道开发人员对svn做出的新提交应该在git中的某个分支之上。

如果您计划进行一次性转换,则仅使用--no-metadata,而不是在svn上继续开发。引用documentation

  

这会在每次提交结束时删除git-svn-id:行。

     

此选项只能用于一次性导入,因为git svn将无法在没有元数据的情况下再次获取。此外,如果您丢失了$ GIT_DIR / svn / * /。rev_map。文件,git svn将无法重建它们。

     

git svn log命令在使用它的存储库上也不起作用。使用这与useSvmProps选项冲突(希望)显而易见的原因。

     

不推荐使用此选项,因为它很难在现有文档,错误报告和存档中跟踪对SVN修订号的旧引用。如果您计划最终从SVN迁移到Git并确定要删除SVN历史记录,请考虑使用git-filter-branch 1。 filter-branch还允许重新格式化元数据,以便于阅读和重写非“svn.authorsFile”用户的作者信息。