2009-10-08 5 views
5

私は私の会社のsvnの外観を探しています、それは私たちのために良い機能になると思われる。私たちは共有コンポーネントを参照することが多い製品をいくつか用意していますが、古いバージョンやさらに分岐したコードベースにまで陥る癖があります。SVN外部の理解の助け

私は今、どのように動作しているかについてよく分かりました。私はOKという概念を理解していると思います。私が100%確信していないのは、複数のリポジトリの異なるリビジョンがどのようにリンクしているかです。

私は製品とライブラリを持っています。この製品はライブラリに対して構築されているため、そのリポジトリにはライブラリソースにリンクするsvn:externalsプロパティがあります。 svn:externalsの定義に特定のバージョンがない場合、私がProductのHEADをチェックアウトすると、LibraryのHEADも取得されます。

私は、毎回最新のバージョンのライブラリを参照して、何年にも渡って数種類の製品をビルドします。私は戻って製品のバージョン1をチェックしなければなりませんが、手動で正しいリビジョンを選択してください。私がそうしたとき、どのバージョンの図書館を手に入れるか、HEADか、初めてビルドしたときに使ったリビジョン?

私は優れた開発者であり、私がリリースしたすべてのバージョンの製品にタグを付けることを願っています。タグ 'Product-1-0-0'をリポジトリに適用すると、ライブラリリポジトリの正しいリビジョンにもタグが付けられますか?後で、 'Product-1-0-0'というタグに基づいてProductをチェックアウトすると、ライブラリの正しいリビジョンがチェックアウトされますか?

答えて

6

svn:externalsで気を付けなければならないのは、トランク以外のものが必要な場合は、リビジョンを明示的に指定する必要があるということです。詳細はGoogle "pinning svn:externals"をご覧ください。かなり現代的なバージョン、1.5以上のIIRCを使用している場合は、相対的な外部が少なくともサポートされています。私が現在使用しているバージョンのような古いバージョンでは、のsvn:externalsプロパティの-rNNNNNオプションを使用してリビジョンを明示的に固定する必要があります。

私たちはtigris.orgのperlスクリプトsvncopy.plという名前の変更を使用して、すべての分岐とタグ付けを行いました。それはそれほど悪くはありませんが、私たちはそれらを非常に使いすぎることに決めた前に、どれだけの作業があるかを知りたがっています。

+0

svn:externalsの場合は、ほとんどの場合、あなたの回転をペグする必要があります。そうしないと、外部参照されたもので何かを変更すると、プロジェクトを元の状態に戻すことはできません。また、あなたはそれを知らずに物を壊す危険があります。 http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-externals.html「明示的リビジョン番号を使用する」を参照してください。 –

5

date specifiersを使用すると、更新時に対応するリビジョンを確実に取得できます。

PC-Lintを実行するツールでこれを実行しました。私たちは結果を比較できるように、各リビジョンでそれを実行するのが好きです。

それは、その実装で少し不快だ - 私たちは:

  • は、作業コピーが
  • はHEADが
  • で(svn infoを使用して)されrevはどのような決定で(svnversionを使用して)されrevはどのような決定します(svn log
  • タイムスタンプを.999秒でバンプして、私たちがrev(yay magic!)を "確かめる"ようにバンプすると、すべてのリビジョンのタイムスタンプを取得できます。)作業コピー、差分、トランスポート、移動、トリガークラクソンズのsvn update -r {sometimestamp}を使用して、各リビジョンへ
  • 更新()
  • 実行PC-lintは、どんな

(ルーブ・ゴールドバーグの価値がある複雑さは、それではないでしょうか?アップボートとより良い解決策を提案できる人のための不死の感謝)Peg and Operative Revisionsのsvnの本のセクションに興味があるかもしれません - これは比較的新しい追加されているようです。

1

はい、docsに示唆されているように、外部に明示的なリビジョン番号を指定しているとします。そうでなければ、参照される外部のHEADリビジョンを使用します。

1.6でファイルベースのsvn:externalsを監視してください。彼らは非常に便利に見えるが、私はちょうど今日this bugを打つ:(

2

をあなたは、依存関係の管理職にまで読んでください - 私はあなたのプラットフォームが何であるかわからないんだけど、ツタやMavenは非常にクリーンな方法でこの問題を解決する

のsvn:見た目は転覆にはバージョン管理されない誰かがあなたの外観の1のリビジョンまたはタグを変更した場合、あなたはそれを変更する前に何であったか知る方法はありません

関連する問題