如何将svn repo的一部分移动到git

时间:2017-04-14 22:50:38

标签: java git svn

我正在尝试将Apache Aries项目的一部分从svn移动到git。我只想移动jpa子项目及其标签,从2.0.0标签开始。

这是jpa的主干网址: https://svn.apache.org/repos/asf/aries/trunk/jpa

这是其中一个标签: https://svn.apache.org/repos/asf/aries/tags/org.apache.aries.jpa-2.0.0/

最后,我希望有一个git repo,其中包含svn trunk上现在低于jpa的所有文件的历史记录以及上面看起来像这样的标记。

我已经能够获得jpa子目录及其历史记录,因为2.0.0标记是我想要导入的最旧标记:

git svn clone https://svn.apache.org/repos/asf/aries/trunk/jpa --revision=1685808:HEAD

现在我需要一种方法来添加标签,使它们看起来像git标签。

1 个答案:

答案 0 :(得分:0)

导入使用下面的git配置。因此,它的核心是为主干和标签指定正确的路径和模式。

然后我使用我要导入的第一个标记的修订版运行git svn fetch --revision=1685808:HEAD。这给了我git中的提交和标签,但标签只是refs。所以最后一步是在git中创建每个标记,如下所示:

git tag -a 2.6.1 refs/remotes/origin/tags/org.apache.aries.jpa-2.6.1 -m "Converting svn tag"

配置

[svn-remote "svn"]
url = https://svn.apache.org/repos/asf/aries
trunk = trunk/jpa
fetch = :refs/remotes/git-svn
tags = tags/org.apache.aries.jpa-*:refs/remotes/origin/tags/*