git repo作为两个SVN存储库之间的中间对象,用于同步

时间:2018-12-18 07:27:24

标签: git svn version-control git-svn

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

为了简而言之,我正在尝试使用一个本地本地Git存储库来同步不同机器/网络上的两个单独的SVN存储库。我不在乎提交到第二个回购协议的内容-我希望它只是第一个回购协议的镜像。基本上,我将不允许提交第二个回购协议,因此应该没有冲突。那我该怎么办呢?

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

人们are talking关于直接修改.git / clone文件以添加第二个“远程”文件-但是他们有点将其连接到新分支上-我不是很想这样做。我只想将我从主SVN存储库中获取的更改推送到另一个SVN远程服务器。

基本上,要从SVN存储库1进行git svn取回,而git svn dcommit则不将其提交给SVN存储库1,而是提交给SVN存储库2。

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

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

1 个答案:

答案 0 :(得分:1)

因为我们没有要求

  • 在两个存储库中保持修订号相同
  • 也可以跟踪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转储将始终每个文件至少具有一个完整版本,因为它需要知道如何处理将保存的其他增量差异。 (--incremental option会覆盖它,但是在这里我们不需要它-除非我们保留已经转储的最新修订的记录,并且每次都进行增量转储-但我们严格不需要使两个历史保持一致就版本号而言)

要将那个转储文件导入另一个存储库(也可以使用http / svn吗?)

svnrdump load DESTINATION_REPO < repo.dmp

请注意,在导出和导入时,版本号不会保持同步。 -导出时,它们不会保存到转储文件中,导入时,每个修订都将保存为增量编号-因此,如果我们仅转储源存储库的HEAD修订,而我们是第一次导入,则将其保存为修订DESTINATION存储库中的1个