我想在Linux环境下将svn项目复制到git项目。目前,我在svn repo中有分支,标签和主干文件夹结构的项目。我需要将所有内容复制到git repo中,包括历史记录。我曾考虑过使用svn2git,但是对我需要遵循的步骤并不了解。
答案 0 :(得分:0)
svn2git是一个很棒的工具。我正在使用它来迁移大型项目。您需要为每个分支/标签定义规则。通配符是您的朋友。
trunk/A/B
branches/Foo/A/B
branches/Bar/A/B
tags/Baz/A/B
tags/Foobar/A/B
以下是一些示例规则。注意:规则按顺序运行。
match /trunk/
branch master
end match
match /branches/([^/]+)/
branch \1
end match
match /tags/([^/]+)/
branch refs/tags/\1
annotated true
end match
这将导致以下分支:master,Foo和Bar以及标签Baz和Foobar。
让我花点时间弄清楚的事情是,如果您需要更深入地研究路径,则需要使用递归函数。例如,如果一次提交将所有分支复制到标签中,则路径仅为/ branches /。您需要删除目录。
match /branches/$
action recurse
end match
在编写规则之前,另一个很棒的工具是svnever。它将帮助您编写规则。
https://blog.hartwork.org/posts/before-svn2git-you-want-to-run-svneverever/