git回购协议作为两个SVN回购协议之间的中间协议,用于同步

git回购协议作为两个SVN回购协议之间的中间协议,用于同步,git,svn,version-control,git-svn,Git,Svn,Version Control,Git Svn,我不太擅长GIT的思维方式——在我想到的情景中,我有点迷失了方向 长话短说,我正在尝试使用一个中间的本地Git repo来同步不同机器/网络上两个独立的SVN存储库。我不在乎第二次回购的承诺——我希望它只是第一次回购的一面镜子。基本上,我将不允许第二次回购的承诺,因此不应存在冲突。那我该怎么做呢 我成功地克隆了现有的SVN repo(git SVN clone..),但是如何将另一个镜像repo指定为要推送到的第二个远程 人们希望直接修改.git/clone文件以添加第二个“远程”文件,但他们会

我不太擅长GIT的思维方式——在我想到的情景中,我有点迷失了方向

长话短说,我正在尝试使用一个中间的本地Git repo来同步不同机器/网络上两个独立的SVN存储库。我不在乎第二次回购的承诺——我希望它只是第一次回购的一面镜子。基本上,我将不允许第二次回购的承诺,因此不应存在冲突。那我该怎么做呢

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

人们希望直接修改.git/clone文件以添加第二个“远程”文件,但他们会将其连接到一个新分支,我不太想这样做。我只想将我从主SVN repo获取的更改推送到第二个SVN remote

基本上,要从svn repo 1获取git svn,git svn dcommit不是向svn repo 1提交,而是向svn repo 2提交

我理解应该启用第二次回购的某种跟踪。哦,天哪,这似乎是可能的,但我就是想不出来。有人帮忙吗?谢谢


在研究svnsync解决方案时让我感到困惑的原因是,在一个时间点上,两个SVN存储库是隔离的。我首先需要VPN到第一个repo,获取更改,断开连接,然后通过VPN2连接到第二个repo并推送。这就是Git中级本地回购吸引我的原因。。有很多,但我还是觉得有点复杂。没有更简单的解决方案吗?韦埃尔。。我应该把中间的Svn回购还是作为一个更自然的解决方案?再次感谢。

因为我们没有

  • 在两个存储库中保持版本号相同
  • 还跟踪目标存储库中的更改(目标对于其客户端是只读的)
A.H.提出的解决方案似乎是最简单、最实用的。 鉴于此

  • 来源(如回购协议)。svn://X.X.X.X/some_repo
  • 目的地回购是,例如。file:///C:/some_other_repo
要转储现有存储库的内容(所有历史记录-对于大型存储库,速度较慢):

要仅转储当前版本,请执行以下操作:

svnrdump dump -rHEAD SOURCE_REPO > repo.dmp
默认情况下,svnrdump将始终至少包含每个文件的一个完整版本,因为它需要知道如何继续处理它将保存的其他增量差异 (-增量选项将覆盖该选项,但我们在此处不需要它-除非我们保留已转储的最新版本的记录,并每次进行增量转储-但就版本号而言,我们不需要严格保持两个历史保持一致)

将该转储文件导入到另一个存储库中(也适用于http/svn?)

svnrdump加载目的地\u REPO

请注意,在导出和导入时,修订号不会保持同步。-在导出时,它们不会保存到转储文件中,而在导入时,每个修订版都会保存为递增的数字-因此,如果我们只转储源存储库的头一个修订版,并且是第一次导入,那么它将在目标存储库中保存为修订版1

使用VCS镜像另一个VCS是--嗯哼--具有挑战性的。从长远来看,使用增量
svnrdump dump
svnrdump load
可能会更好。是的,这就是我们最终想做的,而不是使用git(尽管如果另一方同意git回购而不是SVN回购,我们会很好)@a.H。你愿意将其添加为答案,以便我可以接受吗?同时,我将发布我们可能会做的事情作为一个单独的答案。非常感谢。你写了一个详尽的答案,所以我认为你接受自己的答案是恰当的。尽管如此,但TNX的报价为:-)
svnrdump dump -rHEAD SOURCE_REPO > repo.dmp
svnrdump load DESTINATION_REPO < repo.dmp