58

私の会社にはインターネット接続が遅い子会社があります。そこにいる開発者は、中央のSubversionサーバーとやり取りするのに苦労しています。それらのスレーブ/ミラーを構成することは可能ですか? それらはサーバーとローカルで対話し、すべてのコミットは自動的にマスター サーバーに同期されます。

これは、開発者にとって可能な限り透過的に機能する必要があります。ユーザビリティは必須です。

バージョン管理システムを変更する提案はありません。

4

7 に答える 7

49

それは可能ですが、必ずしも単純ではありません: あなたが解決しようとしている問題は、SVN が設計されているものとはまったく異なる分散開発環境のセットアップに危険なほど近いものです。

SVN ミラー方式

svn mirrorSVN ブック ドキュメントで説明されているように、マスター リポジトリの読み取り専用ミラーを作成するために使用できます。開発者はそれぞれ、最も近いミラーと対話します。ただし、スレーブ リポジトリのユーザーは使用する必要があります。

svn スイッチ --relocate master_url

コミットする前に、完了したらスレーブに再配置することを忘れないでください。これは、コマンド ライン クライアントを使用する場合、SVN 上のコマンドを変更するリポジトリの周りにラッパー スクリプトを使用して自動化できます。高速で再配置操作を行うと、オーバーヘッドが少し増えることに注意してください。(リポジトリの uuid を複製するように注意してください - SVN のドキュメントを参照してください。)

[編集 - TortoiseSVNのドキュメントを確認すると、TortoiseSVNにフック スクリプトをクライアント側で実行させることができるようです。この時点で、コミット前後のスクリプトを作成できる場合があります。それか、 TortoiseSVN 自動化インターフェースを使用して実行できるかどうかを確認してください]。

SVK のやり方

svkは、SVN を介して分散ミラーリング サービスをエミュレートする一連の Perl スクリプトです。ローカル ブランチ (ミラ​​ー) が複数の開発者によって共有されるように設定できます。その後、開発者の基本的な使用法は完全に透過的になります。チェリー ピッキング、マージ、スターマージには svk クライアントを使用する必要があります。分散型の概念を理解できれば、実行可能です。

git-svn のやり方

私自身はそれを使用したことはありませんが、遠く離れた開発者にローカルで git を使用させ、同期にgit-svnゲートウェイを使用させることもできます。

最後の言葉

それはすべて、開発環境と必要な統合のレベルによって異なります。IDE によっては (そしてSCMを変更できる場合) 、すぐに分散開発をサポートする他の完全に分散された SCM ( Mercurial / Bazaar / Gitなどを考えてください) を調べたいと思うかもしれません。

于 2008-09-27T07:03:48.050 に答える
29

Subversion 1.5 では、http を使用してリポジトリをホストしている場合のプロキシ サポートが導入されました。開発者は、スレーブから作業コピーをチェックアウトできます。次に、すべての読み取り専用操作 (差分、ログ、更新など) でスレーブが使用されます。コミットすると、スレーブはすべての書き込み操作を透過的にマスターに渡します。

于 2008-09-28T00:41:09.240 に答える
7

SVK バージョン管理システムを試す必要があります

SVKは、堅牢な Subversion ファイルシステムで構築された分散型バージョン管理システムです。リポジトリのミラーリング、非接続操作、履歴に依存するマージをサポートし、他のバージョン管理システムや一般的なビジュアル マージ ツールと統合します。

このリンクには、SVK を使用して SVN リポジトリを同期する方法に関するテキストがあります。

于 2008-09-27T06:46:40.900 に答える
2

リポジトリの 1 つが完全に読み取り専用の場合、'svnsync' を使用してマスター リポジトリで最新の状態に保つことができます。このツールは、多くの場合、マスター スレーブ セットアップを作成するためにプロキシ サポートと組み合わせて使用​​されます。

たとえば、Apache はリポジトリを異なる大陸にミラーリングするためにこれを行います。マスター リポジトリは米国にありますが、EU からリポジトリにアクセスすると、マスター サーバーと同様に機能するローカル ミラーが取得されます。

于 2009-12-01T15:01:19.403 に答える
1

svnsyncが提供する「SubversionMultiSite」を超えるパフォーマンスとデータの安全性が必要な場合は、Subversionリポジトリの真のアクティブ-アクティブレプリケーション(マスタースレーブではない)を提供する商用ソリューションがあります。

免責事項:私はこのソリューションを作成する会社で働いています

于 2013-03-22T01:24:35.903 に答える
1

inotify-tools は私にとってはうまく機能します。詳細は次の Web サイトに記載されています。

http://planet.admon.org/synchronize-subversion-repositories-with-inotify-tools/

于 2011-06-17T03:08:48.310 に答える