繁体   English   中英

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

[英]How to skip first N commits when converting svn repo to Git using reposurgeon?

使用reposurgeon将Subversion版本库转换为Git时,如何跳过前两个版本的提交?

第一次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

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

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

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

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

<1>..<2> delete

该行表示“选择从旧版ID 1到旧版ID 2 (含)的提交并删除它们”。 另外,您可以使用以下语法:

<#1>..<#2> delete

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM