Subversion でマスター間レプリケーションを取得するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/148625

  •  02-07-2019
  •  | 
  •  

質問

単純な問題のように思えます:

  • ファイアウォール内に SVN リポジトリがあります。
  • ファイアウォールの外側に SVN リポジトリがあります。
  • ファイアウォールの内側と外側にユーザ​​ーがいます。(VPN を使用しないという選択肢はありません :( それは簡単すぎます)
  • ファイアウォールの内側のマシンは、外部の SVN サーバーと通信できます。しかし、その逆ではありません。
  • 外部の SVN は一時的なものです。メイン リポジトリは常に内部にあります。

何らかの方法で(おそらく内部から)一方のすべての変更を取得して、もう一方に適用したいと考えています。およびその逆。簡単そうに聞こえますし、GIT などでもこれができると思いますが、ここでは SVN を使用しています。

これをやった人はいますか?手動のプロセスであることは気にしません。外部の人は数人しかいないので、最新の情報を更新する必要はなく、1 日に 2 ~ 3 回で十分です。

apache.org がこれを行っていると思いますが、どのようにこれを行うかについてのドキュメントが見つかりません。それを行う製品がいくつかありますが (まあ、そのうちの 1 つです)、それらを使わずにそれを行う素敵でクリーンな方法を誰かが知っているかどうか知りたいと思っています。svnsync はこれを一方向 (マスター/スレーブ) でのみ実行します。

Windows、Linux、Mac のすべてが揃っているので、これらの環境で実行できるのは嬉しいことです。ただし、Windows と Mac の方が望ましいです。

ヘルプ!:) :)

[更新] 12 か月いじり続けた後 (最終的にこれは必要ありませんでしたが)、私の意見では、正しい答えは正しいです。git を使用します。SVN-A からプルするリポジトリを 1 つ用意し、新しい git リポジトリにプッシュし、そこから SVN-B にプッシュします。うまくいくはずです:)

役に立ちましたか?

解決

お勧めします SVK または git-svn.

これらの両方を使用すると、svn リポジトリの外部ミラーを作成し、外部開発者が外部ミラーに直接コミットできるようになります。その後、この外部ミラーから内部マスター リポジトリに変更をプルおよびプッシュできます。

git-svn では、外部開発者が git を使用する必要があると思われます。私はそれを好みますが、これを他の人に押し付けるのは気が進まないです。

ただし、SVK を使用すると、外部開発者は引き続き svn を使用できます。内部リポジトリは内部でのみアクセスできるため、内部アカウントまたはユーザーが定期的な同期を処理する必要があります (おそらく cron ジョブが機能します)。

SVK wiki の詳細なハウツーは次のとおりです。 SVKAsARepositoryMirroringSystem の使用

他のヒント

通常、シンプルであることが最善の方法であり、すでにシンプルな解決策を持っているように思えます。ファイアウォールの外側で SVN リポジトリを使用します。

ファイアウォールの内側のマシンはファイアウォールに到達できるとすでに述べましたが、明らかに外側のマシンもファイアウォールに到達できます...では、ファイアウォールの内側に 2 つ目の SVN リポジトリを置くことにどのような正当性があるのでしょうか?単なるバックアップの場合は、外側のものをバックアップしてください。

要件の一部が不足している場合はお知らせください。

別の考え...内部 SVN インスタンスと外部 SVN インスタンスの両方がある場合...両方が異なる目的で同じチェンジリスト ID を同時に発行するのを防ぐにはどうすればよいでしょうか?分散型ソリューションを探している場合は、次のことに目を向けるべきです。 ギット SVNではなく。

VisualSVN Server の Enterprise Edition の機能の 1 つは次のとおりです。 マルチサイトリポジトリレプリケーション それはまさにあなたが探していることを行います。

この機能は、地理的に分散したサイト間で透過的な Subversion リポジトリ レプリケーションを可能にするように設計された VisualSVN 分散ファイル システム (VDFS) テクノロジに基づいています。VDFS の注目すべき機能のいくつかは次のとおりです。

  • すべての分散 VDFS Subversion リポジトリは書き込み可能です。
  • VDFS は透過的な双方向データ レプリケーションを可能にし、
  • VDFS は、レプリケーション承認ルールと、安全な SSL/TLS 暗号化を備えた統合 Windows 認証 (NTLM/ネゴシエート) などの高度な認証メカニズムをサポートします。
  • すべての VDFS リポジトリには同じデータセットが含まれています。
  • VDFS を使用した WAN 経由のリポジトリ レプリケーションは、ライトスルー プロキシに基づくレプリケーションよりも最大 10 倍高速です。
  • VDFS の構成は、複雑な手順を行わずにグラフィカル インターフェイスを介して実行されます。

VDFS が古典的なものに従っていることは注目に値します。 マスタースレーブ レプリケーション モデルには、 マスターマスター レプリケーション モデルは、FSFS fs-type バックエンドを使用して Subversion リポジトリをレプリケートするのにより適しているためです。VDFS テクノロジーは、SVN のマスター間レプリケーション ソリューションよりもはるかに信頼性が高くなります。

VDFS configuration interface for multisite Apache SVN repos

うーん...2 つのリポジトリを相互に同期しておくのは簡単ではないと思います。これには基本的に SVN を Mercurial または Git に変換することが含まれます。

最もシームレスでスケーラブルなソリューションは、Subversion ブックで説明されている svnsync を使用したマスター/スレーブ レプリケーションです。 http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.serverconfig.httpd.extra.writethruproxy

試してみたいことの 1 つは、リポジトリをファイル レベルで複製することです。FolderShareを使用しています(http://www.foldershare.com - Windows および Mac で実行されます) 同様のシナリオですが、バックアップ目的のみでレプリケートしており、SVN を使用してレプリカに接続しようとはしていません。

http://wandisco.com/subversion/multisite/

Subversion Multisiteは、Wandiscoのユニークな複製テクノロジーをレバレッジして、広いエリアネットワーク(WAN)で接続されたSubversionリポジトリをすぐに同期させます。すべてのロケーションのユーザーは、読み取りおよび書き込み操作の両方でローカルエリアネットワーク(LAN)スピードパフォーマンスを経験します。Subversion Multisiteは、災害復旧を自動化する継続的なホットバックアップおよび自己修復機能も提供するため、ダウンタイムは事実上排除されます。

svnsync を使用したマスター/スレーブ レプリケーションについての段階的な説明を検索している場合は、次を参照してください。 http://lasanthals.blogspot.com/2012/09/main-steps-of-cconfiguring-svn_4.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top