Subversionリポジトリの*内容*を複製するための最良の方法svnsyncまたはrsync?

Subversionサーバーを中央の場所で使用している環境で作業しています。その内容は4つの異なる環境(prod、testなど)に提供される必要があります。これらの環境では、subversion機能はまったく必要ありません。 httpおよびローカルファイルシステムによってリポジトリ内に保持されているすべての/ tags /の内容にアクセスできるようにするだけです。

これを行うには、2つの方法があります。

1) subversion mirrors in all environments, updated using svnsync and then made available within each location via svn -> web_dav_svn -> davfs (FS access here) -> apache (HTTP access here)

2)中央の場所に/タグをsvnエクスポートしてから、以前にエクスポートしたファイル構造をハードリンクした後で、ファイルを他の場所に同期します。

選択肢1はいろいろな意味で「スリック」であるように見えますが(2回Apacheを通過しますが???)、それを中央の場所に戻すのではなく、実際に稼働している環境にリスクを押し下げます。これらの環境の実行には使用されていないためです。私はまた、davfsのようなかなり使い捨てで無視されるヒューズプロジェクトをプロジェクトの奥深くに入れることについても心配しています。 Rsyncは退屈で安定しています、そして私たちが望むのは私たち自身の条件の下でのファイルアクセスだけであることを見て、私たちは本当に基本的で信頼できるツールセットでそれを得ることができます。

任意の考えは本当に感謝しています。

2
ru de

4 答え

コミット後フックは機能しますが、rsyncの途中で書き込みアクティビティがあると、破損する可能性があります。ローカルの更新も効率的ですが、ローカルの変更が導入される可能性があるため、各タグからの元の状態でのビルドが保証されるわけではありません。

Subversion MultiSite などの商用製品を検討するとよいでしょう。各場所で。これらのローカルレプリカは、変更が加えられると自動的に更新され、各ノードでLANのパフォーマンスを提供します。

1
追加された

1) subversion mirrors in all environments, updated using svnsync and then made available within each location via svn -> web_dav_svn -> davfs (FS access here) -> apache (HTTP access here)

svnリポジトリにアクセスするのにapacheを実行する必要はありません。特に、1人のユーザしかアクセスできない場合はそうです。ローカルドライブに保存されている場合、リポジトリは file:// プロトコルでアクセスできます。

0
追加された
つまり、最初にレポジトリをローカルドライブにクローンしてから、cronを使用してローカルドライブのエクスポートを定期的に更新するので、ローカルでApacheを実行する必要はありません。
追加された 著者 Hubert Kario,
コンソールやスクリプトで任意のコマンドを使用できるということは、ファイルシステムとして提示されているのと同じことではありません。コメントをありがとう。
追加された 著者 fgysin,

あなたの本能は正しいです。オプション1は比較的少ない利益のために多くの複雑さを導入するようです。

オプション2は、リポジトリの作業コピーを更新してからrsyncを使用してリポジトリを必要な宛先にプッシュする post-commit フックを使用して簡単に実装できます。リポジトリが大きい場合は、 svn export を使用するのではなく、ローカルの作業コピーを更新するほうがはるかに効率的です。

0
追加された

svnsyncを使うのは複雑かもしれませんが、一度設定すれば、めったに対処する必要はありません。私が複数の場所でsvnsyncを使用することに遭遇した唯一の問題については時々svnsyncロックが解放されず、それはすぐに修正されることができ、それからすべてがまたすぐに最新になります。私はそれが中央サーバーの3台の同期サーバーで1年に1回か2回起こると思います。

svnsyncの他の利点は、他のコードが必要な場合、そこにあります。追加のコンテンツを取得するために、物事を設定する別のプロセス全体を実行する必要はありません。

そして最後の、しかしたぶんsvnsyncの場所が複数ある場合の最善の理由は、あなたの中央レポジトリが困難で回復不可能な方法で急降下した場合にフェイルオーバーする準備ができていることです。

0
追加された