2009-03-11 6 views
2

SVNリポジトリに第三者コードのコピーを保存したいと思います。 (レポートとテストを実行できるように)Svnレポ同期

特定のフォルダ/パスをレポから自分のものと同期させるにはどうすればよいですか?

明らかに私は自分のリポジトリからエクスポートを実行して削除することができないため、私のコミットはできません。

自動ソリューションのための追加クールポイント。

svn:externalsは使用できますが、理想的ではありません。サードパーティ製のレポが無効になっていれば、コードにアクセスすることはできません。

おかげで、

+0

svnコピーがクロスリポジトリ操作をサポートしている場合...! – UncleZeiv

答えて

3

サードパーティのコードはSVNのレポにある場合、あなたはsvn:externalsプロパティを使用することができます。

+1

これは彼のレポには保存されません。 svn:externalsは、ある場所でリモートリポジトリからsvnチェックアウトを行うほんの少し自動化された方法です。 –

-1

おそらく、Mercurial(hgsubversionまたはhgsvnを使用)またはGit(git-svn)のようなDVCSツールを使用してSVNのミラーを作成する必要があります。

0

私はsvkがこれを行う可能性があると考えています。ソースリポジトリとターゲットリポジトリの両方にミラーを設定し、同じ場所を指す2つのチェックアウトを行います。

次に、ソースリポジトリからプルして、ターゲットにプッシュしてください。

そして、cronジョブによって実行されるシェルスクリプトを使って自動化できるはずです。

2

私はsvkでこれを正確に行います。

mirroring and svn repo with svkに関するドキュメントがありますが、あまり良くありません。プロシージャのこの要約が役に立つでしょう。

  1. あなたのホームディレクトリの下にデフォルトの場所でそれをしたくない場合は、お使いのSVKレポのための適切なパスにごSVKROOT環境変数を設定します。これには、複数のsvn reposのミラーを含むsvkで行ったことがすべて含まれることになるので、かなり大きくなる可能性があります。

  2. svk initレポを初期化する。初期化するかどうか尋ねられるはずです(まだ存在していない場合)。その後、 "コマンドが認識されない、/ usr/bin/svk helpを試してください"というエラーメッセージが表示されることもあります。これは無害なバグのようです。ミラーリングしたいレポ、そしてあなたがミラーを配置したいのですが、あなたのSVKレポ内のパスへのパスを与えて、あなたのミラーをセットアップし

  3. 、例えば:

    SVKミラーSV + sshを:/ /foo.com/data/repo/head/project //mirror/foo.com/project svkミラーsv + ssh://bar.com/data/repo/head/funstuff //mirror/bar.com/funstuff

  4. すべてのミラーを同期するには、svk sync -aを実行します。これは、ミラーリングされたリポジトリからコピーを最新バージョンに更新するときに実行するものです。

    Time :: Progressモジュールが初めて見つからないというエラーが発生した場合は、最近のバージョンのFedora、Ubuntu、または破損したsvkパッケージを持つ別のディストリビューションを使用している可能性があります。これにはworkaroundsがいくつかあります。私は単純にsudo cpan Time::Progressを実行して、私がCPANから必要なものを手に入れました。

  5. svk co /mirror/foo.com/projectを実行して、プロジェクトのチェックアウトを取得してください。あなたはもちろん、svnコマンドの代わりにsvkコマンドを使用するだけで、完全な履歴と他のすべてを得ることができます。