1

私は CVS のバックグラウンドを持っています。私は現在、プロジェクトにSVNを使用して調査しています。私が取り組んでいるコードは、次のディレクトリ構造にある傾向があります。

プロジェクト\libs\lib1

プロジェクト\libs\lib1\test

project\libs\lib1\mock

プロジェクト\ライブラリ\lib2

リリースにタグを付けるとき、CVS では、「project-release-1」と「project-release-1-with-tests」という 2 つのタグを作成する傾向があります。「project-release-1」タグは、テスト ディレクトリとモック ディレクトリ、および場合によってはその他のファイルを除外します。多くの場合、テストソースをクライアントに出荷しないという考えがあります。「project-release-1」タグをエクスポートすることで、出荷できるクライアントのソースセットを取得し、 「project-release-1-with-tests」タグは、進行中の開発に必要な場合に分岐に使用できるすべてのものを取得します。

SVNで同様のことを行うにはどうすればよいですか? 理想的には、スクリプト化できる形式です。SVN では、テスト ディレクトリやモック ディレクトリなどからタグを削除するだけで、両方のタグを適用し、クライアント タグを作成するプロジェクトごとのスクリプトがあります。

SVN で "with tests" タグを作成し、(どういうわけか) それをチェックアウトし、テスト ディレクトリとモック ディレクトリを削除して、クライアント リリース タグを作成すると思いますか?

更新

やり方を変えることにしました... プロジェクトごとに古いスタイルのツイン タグを設定するスクリプトを用意するのではなく、タグ付けされたリリースを取得するプロジェクトごとにスクリプトを用意するようになりました (これには、私が持っていないものが含まれます)クライアントに出荷する)、クライアントに出荷しないものは削除します。ジョブが完了しました。必要なタグは 1 つだけです。

4

2 に答える 2

2

これが「正しい」答えかどうかはわかりませんが、2 つの選択肢が考えられます。

A. タグ付けして削除:

  1. /project/libs ディレクトリに project-release-1 のタグを付けます。
  2. project-release-1 から「test」および「mock」ディレクトリを削除します。または、最初にすべてを含む project-release-1-with-tests タグを作成し、次にそのディレクトリを project-release-1 としてタグ付け (コピー) し、上記の #2 を繰り返します。

B. 「外部」を使用する:

  1. タグの下に空の project-release-1 ディレクトリを作成します。実際にはタグ付けせず、ディレクトリを作成するだけです。
  2. そのディレクトリのプロパティを編集し、「svn:externals」という名前のプロパティを追加します。そのプロパティの値に次のように入力します: lib1 -r $REV url:to/project/libs/lib1 lib2 -r $REV url:to/project/libs/lib2

$REV は、タグ付けされたソース コードのリビジョン番号です。後で「テストなし」ディレクトリをチェックアウトすると、2 つの「タグ付き」ディレクトリが得られます。

ブランチとタグを分析するツールは、あなたが何をしたかをよりよく理解できるため、最初のオプションの方が優れていると思います。

余談ですが、なぜ test-less タグが必要なのだろうかと思います。タグにテストがあるのはなぜ気になるのですか?

  • ノーム。
于 2008-11-20T12:14:01.600 に答える
1

タグは、他のコピーと同様に単なるコピーです。したがって、タグ内に空のディレクトリを作成してそのリリースをマークし、その中に 2 つのディレクトリを作成できます。1 つはテスト付きのリリース用で、もう 1 つはテストなしのリリース用です。

于 2008-11-22T07:10:54.413 に答える