使用reposurgeon将svn repo转换为Git时如何跳过前N次提交?

时间:2015-12-19 19:59:23

标签: git svn version-control-migration reposurgeon

如果使用reposurgeon将它转换为Git,我如何跳过subversion存储库的前两个提交?

第一个svn提交使用错误的分支布局(trunktagsbranches)导入代码,第二个提交删除了所有这些。

第三次提交是对正确分支布局的导入(subdir/trunksubdir/tagssubdir/branches)。

这个错误的开始似乎混淆了reposurgeon,因为生成的Git存储库只有一个提交:最初的错误启动。所有后来的提交都被忽略了。

这是我尝试的内容:

# installed reposurgeon 3.29
mkdir foo
cd foo
repotool initialize foo svn git
# edited the Makefile and set REMOTE_URL
make stubmap
# edited the resulting authors map (foo.map)
echo "1..2 delete" >>foo.lift
make

2 个答案:

答案 0 :(得分:0)

我不熟悉reposurgeon bot如果从命令行克隆,可以指定要克隆的提交数量+要克隆的分支名称。

// Clona last X commits of branchA
git clone ... --depth=X --branch=branchA

现在您可以将此存储库添加到reposurgeon服务器

答案 1 :(得分:0)

使用以下命令删除前两个svn提交:

<1>..<2> delete

此行表示“选择从旧标识1到旧标识2(包括)的提交”并将其删除“。或者,您可以使用以下语法:

<#1>..<#2> delete

这意味着“选择从第一次提交到第二次提交(包括)的提交并删除它们”。此语法适用于非svn输入存储库。小心 - 提交#2可能不是提交#1的子代(例如,它们可能是来自Git存储库的两个根提交。)

1..2选择器意味着“从第一个到第二个(包括)选择事件并删除它们”。事件与提交事件不同 - 事件包括blob(文件),标记,重置等。因为blob事件必须出现在引用它们的提交之前,1..2可能会选择blob,而不是提交。