1

以下のようなバージョンとファイル名のファイルのリストがあります。

1475|ペット/犬/GetName.sh

1476|priceLogic/CheckdogPrice.sh

これは小さなセットであり、より大きな数に拡張できます。

特定のリリース用にタグを付け、svn で 1 つのコマンドを使用してタグを付けたいと考えています。それ以外の場合は、一度に 1 つずつタグを付ける必要があります。

変更リストを使用することを考えましたが、ファイルのバージョン番号を保持するのに役立ちません。

助言がありますか?

4

3 に答える 3

1

これを誤解しないでください。ただし、Subversion でどのように処理を行うべきかがよくわからない可能性があります。

一致しなかったリビジョンの寄せ集めをタグ付けするべきではありません。Subversion のタグ付けは、ブランチまたはトランクから離れた統一されたリビジョンに基づいている必要があります。タグは、特定の時点でのリポジトリのスナップショットと考えてください。実際、多くのショップはわざわざタグ付けをせず、代わりに単に Subversion のリビジョン番号を使用しています。(「テストのためにリビジョン 14485 を QA に送信します」)。

問題は、なぜこれを行う必要があるかです。人々が疎なタグ付けをしようとする理由はいくつか考えられます:

  • 変更されたファイルのリストが必要です。を使用しsvn diff --summarizeてそれを行うことができます。
  • ワークスペースでチェックアウトされたさまざまなファイルのさまざまなバージョンがあります。この場合、特定のリリースに基づくブランチで作業し、それらの変更をブランチに配置する必要があります。
  • 彼らは CVS に慣れていて、すべてにタグを付けるのにかかる時間を無駄にしたくありません。CVS では、cat のタグ付けに 30 分から 40 分かかり、大規模なリポジトリではそれより長くかかることもあります。ただし、Subversion のタグ付けは、特定の URL とリビジョンへのリンクに基づいています。Subversion でのタグ付けは迅速かつ簡単なので、すべてにタグを付けるだけです。

ですから、あなたが何をしたいのか教えていただければ、Subversion でこれを行うためのより良い方法をご案内できるかもしれません。

于 2012-05-03T19:23:08.563 に答える
1

あなたの質問と David W's answer の下のコメントに基づいて、あなたが求めていると思うことをもう一度述べさせてください: 簡単にするために、製品のバージョン 1.6 をリリースしたばかりで、それを適切に実行したとしましょう。つまり、1.6 タグを作成し、すべてがうまくいっています。そこから先へ。しかし、あなたのチームはベスト プラクティスに従っておらず、バージョン 1.5、バージョン 1.4、またはそれ以前のバージョンにラベルを付けておらず、バグ修正またはその他の理由で 1 つまたは複数の以前のリビジョンに必然的に戻る必要があると予測しています。 .

私の提案する行動方針はこれです:

リリース 1.5 を表す単一のリビジョン番号を特定します。

あなたの質問から、あなたはこの影響についてはっきりとは分かっていないと思います。ファイル A をリビジョン 128 でコミットし、次にファイル B をリビジョン 129 でコミットすると、両方のファイルがリビジョン 129になります。(ファイル A を再度コミットして、リビジョン 130 を取得するとします。ファイル A をリビジョン 129 にロールバックすると、何が得られますか?コミットしたときに 128 に存在していたのと同じファイルです。) 図は、この点を説明しようとしています。バーの上部は、各ファイルの最新のコミット、つまり最新のリビジョンを表します。このヘッド リビジョンは、ファイル A の 128、ファイル B の 129、およびファイル C の 126 で構成されます。しかし、このヘッド リビジョンはリビジョン 129 でもあります。把握するポイントは、ファイルの現在のリビジョンがそうである必要はないということです (通常は一致しない)ファイルの最新のコミットされたリビジョン。この点は、最新のリビジョンについて話すときに最も簡単に理解できますが、以前のリビジョンにも同様に当てはまります。リビジョン 125 とは何ですか? ファイル A が 124 で、ファイル B が 125 で、ファイル C が 123 でコミットされたときです。したがって、特定のリリースについて、最新のコミットがすべて含まれているリビジョンを特定する必要があります。

Subversion コミットの可視化

識別されたリビジョン番号にタグを適用します。

リリース 1.5 の単一のリビジョン番号を特定したら、svn branch/tag コマンドを使用して、ヘッド リビジョンではなく、特定されたリビジョン番号をタグのターゲットとして指定します。

タグ付けする以前のリリースごとに上記を繰り返します。

完了するまで、すすぎ、洗浄を繰り返します。

合併症

上記の手順は、ほとんどの場合うまくいくはずです。ただし、混合リビジョンにタグを付けたい場合もあります。私の例によると、128 と 129 は混合リビジョンを構成しないことに注意してください。混合リビジョンは、たとえば、ファイル A が 124 で、ファイル B が 127 です。混合リビジョンにタグを付けるには、作業コピーをその混合リビジョンに更新し、作業コピーに基づいてタグを作成します。


この特定のトピックの詳細については、Simple-Talk.com で公開されている私のTortoiseSVN and Subversion Cookbookのパート 6も参照してください。

于 2012-05-04T16:30:21.353 に答える
0

リストから読み取って実行する標準的なコマンド方法はありません。トランク全体のすべてのファイルに同じバージョンがあれば、簡単にタグ付けできます。

実行できることは、リストからすべてのファイルをそれぞれのリビジョンとともに共通タグ フォルダーにコピーできる小さな perl/bash スクリプトです。

于 2012-05-03T14:40:05.767 に答える