特定修订版本范围内的git-svn克隆

时间:2016-07-21 15:42:20

标签: git svn git-svn

我尝试使用git-svn导入svn服务器中托管的项目的早午餐。

存储库结构如下所示

root
    [...]
    project 1
        trunk
        branches
        tags
    project 2
        trunk
        branches
        tags
    [...]

我想要实现的是导入 project1 project2 的所有svn历史记录。

不幸的是,原始存储库包含超过200万个修订版...一个完整的git-svn克隆将永远存在。

所以我检索了我的两个项目的第一个和最后一个版本并尝试运行

git svn clone -s https://svn.bansel.it/h2o/ \
    --include-paths='^[/](Project1|Project2)' \
    -r1788813:1792593

其中 1788813 是第一次修订,而 1792593 是最后一次感兴趣。

当我执行命令时,它运行时没有错误。我还注意到一些网络流量,但如果稍后我尝试运行git svn log

$ git svn log
fatal: bad revision 'HEAD'
rev-list --first-parent --pretty=medium HEAD --: command returned error: 128

目标存储库似乎也是空的。 我错过了什么吗?

修改

导入后我无法关闭SVN存储库,所以我需要双向同步

1 个答案:

答案 0 :(得分:1)

您的clone命令错误。

网址为-s

https://svn.bansel.it/h2o/告诉git-svn查看https://svn.bansel.it/h2o/trunkhttps://svn.bansel.it/h2o/tagshttps://svn.bansel.it/h2o/branches。在那里它没有找到任何东西,因此你的克隆不包含任何提交,因此没有HEAD引用。

最好有两个git存储库,每个项目一个,所以两个clone命令,如git svn clone -s https://svn.bansel.it/h2o/Project1/ -r1788813:1792593git svn clone -s https://svn.bansel.it/h2o/Project2/ -r1788813:1792593

或者,如果您希望两个位于不同远程控制器中的同一存储库中,则可以使用与clone--prefix=origin-project1相同的git存储库执行--prefix=origin-project2命令,以获取这两个项目在两个单独的遥控器。但我真的认为你应该为这两个人使用单独的Git回购。

注意:请注意,就我记忆而言,您还需要每个后续fetch的修订版参数,但我可能错了,我通常不会限制修订版本git-svn