1

タグを付けるときは、次の形式を使用します。YYYYMMDD_SPRINTNAME

複数の環境があり、各環境には特定のスプリント (テレビ番組名) のみがインストールされている必要があります。たとえば、私たちの UAT 環境はFRIENDSコード ベースで動作しています。私たちの QA 環境は、LAWORDERコード ベースで機能しています。

タグ付けすると、それらはすべて同じリポジトリに移動します (ブランチとは異なります)。そのため、 ansvn ls <PATH_TO_REPO> | tail -n1を実行しても機能しません。私が実現したいのは、各スプリント名に対して同じコマンドを実行し、その特定のスプリントの最新のタグを取得することです。

たとえばsvn ls http://devbox/repos/projectname/tags、次のように表示されます。最新のタグは一番下にあります (tail -n1 は機能しますが、常に機能するとは限りません)。

20121210_CHOPPED
20121219_FRIENDS
20121220_MASH
20121220_FRIENDS
20121220_LAWORDER

FRIENDSでは、スプリントの最新のタグを取得したい場合があるでしょうか?

4

3 に答える 3

2

@msell コードに反して、盲目的に tail の結果に頼る代わりに、手作りのロジックと ls の小さな変更を提案します。

svn ls -v ROOT-OF-TAGS

この場合、各タグの最初の列は作成のリビジョンになり、grep の後、順序ではなく番号に基づいて最高のリビジョンを検出できます

于 2012-12-21T17:07:44.177 に答える
2

Subversion タグは、ブランチと同じように単なるディレクトリです。タグは (ブランチやディレクトリと同様に) 予告なしに簡単に変更できるため、この設計にはいくつかの論争がありました。私が最初にしたことの 1 つは、人々がタグを作成できるようにする一方で、タグが変更されないようにする pre-commit フックを作成することでした。

ただし、この設計の優れた点の 1 つは、タグに Subversion の全機能が付加されていることです。誰が、いつ、なぜタグを作成したかを確認できます。タグの由来、リビジョン、変更者を確認できます。

これは、すべてのタグが tags ディレクトリの直下にある場合、 を使用してディレクトリsvn log内の変更を簡単に確認できることを意味します。/tags

$ svn log -v $REPO/tags

最初のエントリは、最後に作成されたタグになります。Python または Perl を使用している場合は、PC と (U|li)nix システムの両方で実行され、最後に作成されたタグを返すスクリプトを作成できます。

于 2012-12-21T19:44:18.000 に答える
1

おそらく svn log を使用すると、たとえば次のように、必要なものが得られます。

$ svn log http://some/repos/tags
------------------------------------------------------------------------
r4443 | joe | 2012-12-18 15:35:27 -0800 (Tue, 18 Dec 2012) | 1 line
Changed paths:
   A /tags/release-2.2.3.1-ga (from /branches/release-2.2:4442)

------------------------------------------------------------------------
r4345 | joe | 2012-11-21 17:40:11 -0800 (Wed, 21 Nov 2012) | 1 line
Changed paths:
   A /tags/release-1.7.4.1-ga (from /branches/release-1.7.4:3872)

Create tag for 1.1.4.1

...

そのため、いくつかのシェル ツールを使用してスプリント名を選択するか、XML 形式のログ出力 (svn log --xml) を読み込んでそこから選択することができます。どちらの方法が得意な方でもかまいません。

于 2012-12-21T05:58:03.370 に答える