web-dev-qa-db-ja.com

2つのSubversionリポジトリを同期する方法は?

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

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

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

57
neves

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

29
clawrence

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

SVNミラー方式

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

svnスイッチ-master_urlの再配置

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

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

SVKウェイ

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

git-svn way

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

最終単語

それはすべて、開発環境と必要な統合のレベルに依存します。 IDE(および [〜#〜] scm [〜#〜] を変更できる場合)によっては、他の完全に分散されたSCMを確認したい場合があります。 ( Mercurial / Bazaar // Git /...と考えてください)、すぐに使える分散開発をサポートします。

49
Jean

試してみてください SVKバージョン管理システム

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

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

6
Robert Vuković

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

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

2
Bert Huijben

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

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

1
admon_org

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

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

1
james creasy

VisualSVN Serverの Multisite Repository Replication は、この場合のために設計されました。

マスターリポジトリをメインオフィスに保持し、リモートロケーションに複数の書き込み可能なスレーブリポジトリをセットアップできます。

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

  • スレーブとマスター間のレプリケーションは透過的かつ自動であり、

  • 各マスターおよびスレーブリポジトリは、ユーザーの観点からは書き込み可能なSubversionリポジトリであり、

  • すぐに使用でき、VisualSVN Server Manager MMC console。を介して数回クリックするだけで設定できます。

VisualSVNServerManagerConsoleMultisite

1
bahrep