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

git-svn clone within a specific revision range

我正在尝试使用 git-svn 导入 svn 服务器中托管的 b运行ch 项目。

存储库结构如下

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

我想实现的是导入project1project2.

的所有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 存储库,因此我需要双向同步

你的clone命令有误。

-s 和 URL 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

或者,如果您希望两者都在不同远程的同一个存储库中,您可以使用 --prefix=origin-project1 和 [=23= 使用相同的 git 存储库作为目标来执行 clone 命令] 在两个单独的遥控器中获取两个项目。但我真的认为你应该为这两个使用单独的 Git 回购协议。

注意:请注意,据我所知,您还需要每个后续 fetch 的修订参数,但我可能错了,我通常不会t 限制 git-svn.

的修订