如何将带有历史记录的 SVN 仓库的一部分迁移到新的 Git 仓库?

4

我需要将SVN仓库的一部分迁移到git。

例如,SVN根目录为:http://example.com/svn/project,我需要迁移项目子目录,如 http://example.com/svn/project/trunk/foo/bare

我尝试使用:

git svn clone http://example.com/svn/project \
    -Ttrunk/foo/bare --no-metadata -A ~/authors-transform.txt ~/temp

运行这个命令后,我得到了一个包含两个分支的git仓库:trunktrunk@61,但是我只需要一个分支。

我需要做什么才能在迁移后只得到一个分支?


1
也许可以在 svndump 上工作,删除不必要的分支,创建一个新的 svn 存储库,然后将其转换为 git? - Basile Starynkevitch
好主意,但我该如何管理转储文件?它看起来像二进制文件。 - user1156128
svnadmin dump 会生成一个文本文件,至少当仓库始终包含文本文件时是这样的。 - Basile Starynkevitch
1个回答

2

删除你不需要的分支,当然。但是你将失去第61个修订版之前的历史记录。

trunk@61 存在是因为导入的目录已被替换。这是 git svn 无法视为历史的延续的方式。因此,它记录了该修订版的 ref 值并重新开始了。

由于这是一次性的转换,你可以使用嫁接(graft)连接历史记录,使用 filter-branch 重写历史记录,这样就不需要嫁接文件(请参见 filter-branch 文档),然后删除现在无用的分支。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接