2

いくつかのクライアントファイルを含むSubversionリポジトリがあります。一部のクライアントは標準ファイルを使用しますが、他のクライアントはファイルのカスタムバージョンを提供します。これに対応するために、共有ファイルを使用するクライアントにsvn:externalsを使用しました。したがって、構造は次のようになります。

svn
|+ top
   |+ shared
   |+ clients
      |+ custom1
      |+ custom2
      |+ shared1
      |+ shared2

クライアント「custom1」は、そのクライアントのカスタマイズされたファイルを含むSubversionの実際のフォルダーであり、クライアント「shared1」は、/clientsを指すフォルダーのsvn:externalプロパティ/top/sharedです。

私が望んでいたのは、新しいクライアントを展開するときに、次のようなコマンドを使用して、フォルダーをサーバーにエクスポートするだけでよいということでした。

svn export http://svn/top/clients/custom1 \\server\custom1

また

svn export http://svn/top/clients/shared1 \\server\shared1

これは、カスタマイズされたクライアントではSvnに「実際の」フォルダーがあるため正常に機能しますが、外部で構成されたクライアントでは、エラーが発生します。

svn: E170000: URL 'http://svn/top/clients/shared1' doesn't exist

「外部」フォルダを直接チェックアウト/エクスポートする方法はありますか?

4

2 に答える 2

2

私がやったことは、svn lsを使用して、物理ディレクトリにアクセスしているかどうかを確認することでした。それが存在しなかった場合は、次のコマンドを使用して外部のターゲットを取得しました。

svn propget svn:externals http://svn/top/clients/ | findstr "\<shared1\>" | sed "s/\(.*\)\s\(shared1\)/\1/"

findstr探しているプロパティの1行を取得し、sedコマンドはターゲットURL(スペースの前の部分)を解析します。

于 2013-02-15T20:32:15.810 に答える
1

http://svn/top/clients/shared1SVNの物理パスではなく、外部への単なる参照です。だから、それはあなたがそれを直接チェックすることができない理由です。

これを取り除くためにhttp://svn/top/clients/shared1、SVNに空のフォルダーとして作成し、フォルダーの代わりにそのhttp://svn/top/clients/shared1フォルダーを指すようにフォルダーにsvn:externalプロパティを指定できます。/top/shared/clients

次に、チェックアウトはチェックアウトするための物理パスを取得しますが、実際のコンテンツをこのフォルダーの下に保持する必要はありません。

于 2013-02-13T19:33:51.640 に答える