0

我已经设置了我的存储库的镜像,它运行良好,但我最近遇到了一个问题。

目标存储库以某种方式留下了未释放的锁-从我读到的内容来看,这可能是由于 svnsync 操作的中止引起的,我怀疑这可能是因为在我的提交后挂钩中,我在阻塞模式下执行 svnsync 而不是推送它通过&进入后台。

我这样做是为了让用户可以确定如果提交完成,那么它现在在所有存储库中,但可能会带来他们点击取消并停止提交钩子的风险?

我找不到明确的指导方针或建议,说明哪个更好或最佳实践是什么,或者即使点击取消会导致 post commit hook 中止并从中执行同步 - 在大多数地方,我看到人们使用 & 来踢在后台同步 - 如果用户在同步进行时按下取消提交,这是否可以防止锁定损坏?您如何确保两个存储库真正同步或报告问题?你需要一个单独的通知机制吗?

更新:

从上述两个选项中,我决定选择第三个;)

我在后台调用 svnsync 但同时我让钩子等待它完成:

svnsync ... &
wait $!

我认为这很好地结合了两全其美,但时间会证明它的有效性 - 请让我知道您对整个问题的看法以及您可能需要分享的建议。

4

1 回答 1

0

顾名思义,提交后挂钩在源存储库中的完整提交和新修订创建后运行。所以问题是:谁应该如何按下“中止”按钮?另一方面,为什么要进行阻塞操作?我会同步,例如每 15 分钟等,独立于提交......如果你真的是新的另一种方式,那么 Write-Through-Proxy 呢?最重要的问题是为什么每次提交都需要这样的同步?

于 2010-09-03T11:51:45.973 回答