git 存储库作为两个 SVN 存储库之间的中间同步

git repo as intermediate between two SVN repos for syncing

我不太擅长 GIT 思维方式 - 并且在我正在思考的场景中有点迷失。

长话短说,我正在尝试使用一个中间本地 Git 存储库来同步不同 machines/networks 上的两个单独的 SVN 存储库。我不关心对第二个回购的提交——我希望它只是第一个回购的镜像。基本上我会禁止提交第二个回购协议,所以应该没有冲突。那我该怎么做呢?

我成功地克隆了现有的 SVN 存储库(git svn clone ..),但是我如何将这个另一个镜像存储库指定为要推送到的第二个远程存储库?

人们 are talking 关于直接修改 .git/clone 文件以添加第二个 "remote" - 但他们有点将它连接到一个新分支 - 我不太想那样做。我只想将我从主 SVN 存储库中获取的更改推送到第二个 SVN 远程。

基本上,git svn fetch from SVN repo 1 and git svn dcommit NOT to SVN repo 1 but to SVN repo 2.

我知道应该为第二个回购启用某种跟踪。哦,天哪,这似乎是可能的,但我就是想不通。帮忙,有人吗?谢谢

在查看 svnsync 解决方案时让我感到困惑的原因是在单个时间点上两个 SVN 存储库是隔离的。我首先需要 VPN 到第一个仓库,获取更改,断开连接,然后通过 VPN2 连接到第二个仓库并推送。这就是 Git 中间本地回购吸引我的原因。有 this,但我还是觉得有点复杂。没有更简单的解决方案吗? Weeell .. 我应该将中间 SVN 回购或 SVK 回购视为更自然的解决方案吗?再次感谢。

因为我们没有

的要求
  • 在两个存储库中保持相同的修订号
  • 也在 DESTINATION 存储库中跟踪更改(DESTINATION 对其客户端是只读的)

解决A.H。建议似乎是最简单和最实用的。 鉴于

  • SOURCE_REPO 例如svn://X.X.X.X/some_repo
  • DESTINATION_REPO 例如文件:///C:/some_other_repo

要转储现有存储库的内容(所有历史记录 - 对于大型存储库来说很慢):

svnrdump dump SOURCE_REPO > repo.dmp

仅转储当前修订版:

svnrdump dump -rHEAD SOURCE_REPO > repo.dmp

默认情况下,svnrdump dump 总是至少有每个文件的完整版本,因为它需要它知道如何继续处理它将保存的其他增量差异 (--增量选项覆盖它,但我们在这里不需要它 - 除非我们保留我们已经转储的最新修订的记录,并且每次都进行增量转储 - 但我们并不严格需要保持两个历史对齐就版本号而言)

将该转储文件导入其他存储库(也适用于 http/svn?)

svnrdump load DESTINATION_REPO < repo.dmp

请注意,导出和导入时,修订号不会保持同步。 - 导出时,它们不会保存到转储文件中,导入时,每个修订都保存为递增的数字 - 所以如果我们只转储源存储库的 HEAD 修订,并且我们是第一次导入,它将被保存为修订1 个在 DESTINATION 存储库中