我想将svn项目复制到具有历史记录的git中

时间:2019-05-14 11:46:07

标签: git svn git-svn

我想在Linux环境下将svn项目复制到git项目。目前,我在svn repo中有分支,标签和主干文件夹结构的项目。我需要将所有内容复制到git repo中,包括历史记录。我曾考虑过使用svn2git,但是对我需要遵循的步骤并不了解。

1 个答案:

答案 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/