SVNミラーを作成する最良の方法?


8

私は現在、SVNミラーをセットアップするための最良の方法を検討しています。現在、3つの可能性があり、すべて独自の欠点があります。

  • svnsyncを介してブロックおよび同期しているSVN post-commit-Hookがあります。ここでの問題は明らかに、データがミラーに転送されるまでコミットがブロックされていることです。
  • 非ブロッキングでsvnsyncを介して同期するSVN post-commit-Hookがあります。ここで、次のより微妙な問題を確認します。誰かがBIGファイルをチェックインし、その直後に誰かが小さなファイルをチェックインするとします。コミットは非ブロッキングであるため、2つのsvnsyncプロセスが同時に実行されている可能性があり、小さなファイルがミラーへの途中でBIGファイルを追い越す可能性があります(原理的には可能ですが、これは非常に時間が重要でありそうにありません)。彼らの改訂は入れ替わるでしょう。
  • cronジョブで15分ごとに同期します。コミットに15分以上かかる場合は同じ問題が発生し、明らかにその遅延が発生します。

可能性を忘れましたか?私は何か間違ったことをしましたか?何か案は?もうありがとう!

多分私は2番目の可能性が別のウェブサイトによって提案されたものであることに注意する必要があります。たとえば、http://www.kirkdesigns.co.uk/mirror-svn-repository-svnsyncを参照して ください


コミットは非ブロッキングであるため、2つのsvnsyncプロセスが同時に実行されている可能性があり、小さなファイルがミラーへの途中でBIGファイルを追い越す可能性があります(原理的には可能ですが、これは非常に時間が重要でありそうにありません)。彼らの改訂は入れ替わるでしょう。これは不可能です。svnsyncはコミットがリポジトリに書き込まれるときにコミットを複製します。それらは常に改訂順に表示されます。
デイブチェイニー

回答:


3

アトラシアンで使用しているのと同様のアプローチを試すことができます

https://www.atlassian.com/blog/archives/subversion_replication_at_atla?_ga=2.217251286.1933127788.1517539727-1159165484.1517539727

免責事項:私は現在アトラシアンの従業員ですが、このソリューションの実装には関与していません(メンテナンスのみ)

上記のコメントで述べたように、リモートリポジトリから実行されるsvnsyncは確定的に動作します。変更セットを順不同で適用することはできません。したがって、リモートリポジトリを使用している唯一の問題は、変更セットの伝播による遅延の量です。


+1は、svnsyncが順不同になることはありません。唯一の問題は、潜在的な遅延です。
ジムT

あなたは完全に正しいです...私は愚かな考え間違えました。したがって、シンプルで美しいSVN post-commitフックは、ほとんどの場合それを行うはずです。待ち時間が問題になる場合は、参照されているAtlassianの記事をご覧ください。どうもありがとうございました!
roesslerj

コミット後フックは、フックが完全に実行されるまでコミッターをブロックすることに注意してください。コミット後フックが失敗した場合にどうなるかわかりません。コミットがロールバックされたとは思いませんが、少なくとも混乱を招きます。
Dave Cheney

まあ、コミット後フックを使用して、すぐに戻るコマンドを発行できます(たとえば、Linuxでは 'command&'を介して)、それを非ブロッキングにします。フックはコミット後なので、コミットをロールバックできません。svnsyncが失敗した場合、次のsvnsyncは2つのリビジョンを同期する必要があります。ここで発生する問題は、「待機時間」というトピックで提出します。
roesslerj 2010年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.