2017-07-13 44 views
0

我的团队同意从svn迁移到git。所以我创建了一个仓库xxwin,然后我跑了类似的东西:为什么git svn制作新的分支,我该如何解决?

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 

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

例如,我们有一个分支叫v2_5_working在SVN,现在Git中有分支叫origin/v2_5_workingxxwin/origin/v2_5_workingxxwin/xxwin/origin/v2_5_working

有一些方法可以轻松地合并所有这些分支?如果有下一次是否有办法让它合并为git svn fetch的一部分?

回答

0

您在git svn clone命令中使用了--no-metadata标志。这意味着创建的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”用户的作者信息。

+0

此外,如果您决定重做转换,那么有一些更快的工具可以搜索svn2git。 – 1615903

相关问题