0

リポジトリのミラーリングをセットアップしましたが、問題なく動作しますが、最近問題が発生しました。

ターゲットリポジトリには、何らかの形でロックが解除されていないままでした-私が読んだことから、これはsvnsync操作の中止が原因である可能性があり、ポストコミットフックでプッシュではなくブロックモードでsvnsyncを実行しているためであると思われます&を介してバックグラウンドに入れます。

これは、コミットが終了した場合にすべてのリポジトリにあることをユーザーが確認できるようにするためですが、キャンセルを押してコミットフックを停止するリスクが生じる可能性がありますか?

どちらが優れているか、ベスト プラクティスが何であるかについての明確なガイドラインや提案を見つけることができません。また、キャンセルを押すとポスト コミット フックが中止され、そこから同期が実行される可能性がある場合でも、& を使用してキックする人がほとんどの場所で見られます。バックグラウンドでの同期 - これにより、同期の進行中にユーザーがコミットのキャンセルを押した場合にロックの破損が防止されますか? 両方のリポジトリが実際に同期していることを確認したり、問題を報告したりするにはどうすればよいですか? そのために別の通知メカニズムが必要ですか?

アップデート:

上記の 2 つのオプションから、3 番目を選択することにしました ;)

バックグラウンドで svnsync を呼び出していますが、同時にフックが終了するのを待ちます:

svnsync ... &
wait $!

これは両方の長所をうまく組み合わせていると思いますが、それがどれほど効果的かは時間がたてばわかります。問題全体についてどう思うか、それについて共有する必要がある提案を教えてください.

4

1 に答える 1

0

名前が示すように、ポスト コミット フックは、コミットが完了し、ソース リポジトリに新しいリビジョンが作成された後に実行されます。質問は次のとおりです。誰が「中止」ボタンをどのように押せばよいのでしょうか。一方で、なぜブロッキング操作を行うのでしょうか。たとえば、コミットとは無関係に15分ごとなどに同期します...本当に新しい場合は、 Write-Through-Proxy はどうですか?最も重要な質問は、なぜすべてのコミットでそのような同期が必要なのですか?

于 2010-09-03T11:51:45.973 に答える