svn,使用提交后触发脚本同步2个repo

svn,使用提交后触发脚本同步2个repo,svn,triggers,sync,post-commit,Svn,Triggers,Sync,Post Commit,我想双向同步2个svn回购。svn中存储的文件是小型xml文件,类似于注释/草图。这两个回购协议由一个公司防火墙隔开,该防火墙限制了我的选择(例如,没有外部选择) 即使我知道这不是红皮书公司推荐的,我也在考虑以下几点: -实现一个post-commit钩子,该钩子在两个 -导出提交的文件并将其提交到“其他”repo(触发提交本身是同步提交除外) 我知道有可能出现冲突的情况,但在给定的场景中,这是非常不可能的,可以手动检测和修复 真正让我担心的是,我无法在网上找到这样的解决方案。是因为svn说“不

我想双向同步2个svn回购。svn中存储的文件是小型xml文件,类似于注释/草图。这两个回购协议由一个公司防火墙隔开,该防火墙限制了我的选择(例如,没有外部选择)

即使我知道这不是红皮书公司推荐的,我也在考虑以下几点: -实现一个post-commit钩子,该钩子在两个 -导出提交的文件并将其提交到“其他”repo(触发提交本身是同步提交除外)

我知道有可能出现冲突的情况,但在给定的场景中,这是非常不可能的,可以手动检测和修复

真正让我担心的是,我无法在网上找到这样的解决方案。是因为svn说“不要这样做,这很危险”还是我遗漏了更基本的东西


br woecki

双向写入问题比看起来更复杂。想象一下,两个站点都处于修订版1。提交同时发生在站点1和站点2。Site1将使用提交后触发器将版本2发送到site2,同时在site2通过提交后触发器将其版本2发送到Site1创建版本3

现在发生了两件非常糟糕的事情,首先你进入了一个无限循环,每个提交后触发器都会产生另一个,因为site2会发送修订版3,而site1会将其作为修订版4发送回来,依此类推

其次,你进入了分裂大脑的场景。这意味着每个站点有两个非常不同的修订版#2。因此,实现这一点的技术非常复杂,这就是为什么简单的解决方案是主从式方法,即只对一个点进行写入


如果你需要一些更复杂的东西来做双向书写(主动-主动和主动-被动),有软件可以做到这一点,试试看

您是否计划支持标签、svn复制、移动、属性更改等?好问题!没有移动和属性更改(至少我没有想到任何用例)。如果将来我在其中一个回购协议上添加标签,它就不需要同步。你至少错过了一件事。导出的未版本文件不能提交到端回购轻松、直接