質問

協力して仕事と私は引数の値および使用のタグでリリース/SCMシステム。私たちは、StackOverflowの地域を自立を解決するものとします。

片側の債権そのタグは貴重なほか、リリース。例の使用私たちは、Mavenのリリース、新しいタグ(電話が1.0)であるコードのスナップショットに用います。このタグは読み取り専用になります。がバニーズに固定させることができまコピータグの新しい支店では11).バグ修正碁あります。これらの修正の場合併に戻幹線の主dev支店を修正。最後に、1.1るのですが、このときに放出されるaタグ1.1は自動的に生成されます。このサイクルが続きます。る場合、このタグであることが必要で再リリースするバージョン1.0、何らかの理由でリリースのタグ1.0からの信頼ることなんてことはありませんを変更したいつでもどなたでもご覧いたまた、"リリースのタグ1.0"リーダーは"リリース修正1支店1.0の原1.0の修正".

の他の債権そのタグがなく提供する他の貴重な利益には、特にシステムのようにSubversionのグローバル改正は、法のようにタグCVS.プラス、Subversionなければならないわけではなく、たときに警告を決断するタグなので実際に停止します。その方法を開発トンネルにリリースいくの支店という1.0です。つだけのバグ修正幹線、要望の受け入れが大変良いと思い再リリースそのバグ修正を産んが合併し1.0支店および再リリース1.0です。でも、その後の主要な修正や機能幹んのリリースや支店1.1.サイクルが続きます。ばくの原1.0版んのスニーカーとして親しまれてきた支店1.0改訂1.

明方法。いても教えてください、コミュニティの考える方法が好とはいかがでしょうか。

編集:イベントでは、会って話しての"最高"の方法により基本となるSCMシステム。のいずれかの解決にSubversionの回答が可能でSCM agnostic.

役に立ちましたか?

解決

からSCM agnostic点 タグ とは大きく異な改訂される。

両て実装される可能性があるので同じように、両方を表す"時間とともに、グラフィックスが彼らの目標は、異なる:

  • タグを表す 不変なので 状態がすべてのファイルによって参照される独自のidです。名 を表す多くのこと その中に安定な状態...)
  • 改正は、コミット取引のないすべてのSCMを有してい, 特に、古いものは"ファイルによるファイルにアプローチ').すべての犯を示すものではありません、"安定的"状態としての"コンパイル"または"実行"成功).あるいは新しい要素のグローバル-ヒストリー

問題はSVNはその改正は、タグや支店は全て実施します。
がいまだ希望のオプションタグとして使用 "読み取り専用"支店.

他のヒント

私の意見タグには便利です。あなたはバグや変更渡って来て、あなたはそれが以前のリリースにあったかどうかを知りたいプロジェクトの生活の中でいくつかの点で時間があるでしょう。パフォーマンスとコードの実際の開発では、両方の効率を測定するために、別のリリースからのコードを比較するための理由があるでしょう。

確かに、そこにあなたがそれを台無しにすることができます可能性があるが、それは常に元に戻すことができます。本当にない理由はない、それが将来的に役に立つかもしれないいくつかの理由があります。私にはそのA誰でも思いつきそう。

私はあなたにも支店を使用すると、そこにあなたの開発をやってますが、いつでもあなたが実際に、何かを解放するそれからタグを作成する必要があることに同意するものとします。

はい、あなたがタグを使用します。

ちょうどラベルまたは特定のリビジョンの名前としてタグと考えてください。それは製品リリースのために、あるいは暫定QAリリースのためだかどうか、プロジェクト内の重要なマイルストーンをタグ付けするために私の経験では非常に便利です。あなたは多くの場合、時間に戻って、特定のリリースのためのソースコードを見たいと思ってます。

あなたはリリース時に分岐する場合は、

、あなたは常に生産にリリースされた改正把握することができますが、これは単にタグを見に比べて痛みのようなものです。あなたはリリースブランチを使用しない場合、特定のビルドを作成するために使用されたリビジョンのトラックを失うことは容易になります。

SVNの問題点は、タグとブランチとの間の区別をあいまいということです。誰もが常にタグにコミットすることができ、不変/固定される保証はありません。 PVCSのような他のVCSでは、「タグ」は不変です。あなたは、タグにコミットを防ぐために、チームの規則を採用、あるいは多分タグにコミットを防ぐためのフックをコミット使用することができます。

新しいベースラインを作成するときに

私たちは、タグ(ラベル)を使用します。私たちは週に一度、それを行うが、いくつかのチームは、さらに数回の日にそれを行うます。

(私たちのために)

ポイントは、常に新しいベースラインが安定していることを確認作っている:それはただのビルドではありません、あまりにも全体のテストスイート、自動テストに加えて、潜在的に手動探索的なものの数時間を渡すビルドです。

次に、ベースラインは、次の反復の間、すべてのタスクのための出発点として使用されます。すべての新しいタスクがタスクに壊れているものは何でもそう安定していることが知られており、ベースラインから始まる新しい枝が内部のトレースが容易であるべきですタスクそのものます。

通常、我々は他のすべての支店の統合点である(あなたのSCMの風味に応じて、またはトランクまたはマスター)メインブランチ上のタグ(ラベル)を入れます。

我々は正式な製品をリリースすると、新たな開発は、「メイン」にとどまる一方で、それが唯一の修正を受け取ることになりますので、

私たちは「それについては、リリースブランチ」を作成します。そして、これらの「メンテナンスの枝」(一度にうまくいけば1つまたは2つだけが)あまりにもタグを付けることができます。

私は「改正のためだけの空想の名前」などのタグを考えるのが好き。私はいつもそれについてそのように思っている、とIIRCは水銀に彼らがまさにそれです。転覆ではしかし、あなたが言うように、彼らは確かにトランク/ *タグへ/空想名/

の(安い)コピーです リリース時にタグとブランチ:

正直なところ、私は、最適な結果を得るための2つの戦略を組み合わせると思います。あなたのタグがブランチ1.0-MAINT、1.0.0と呼ばれています。 (特定の時点で1.0 MAINTをエイリアスすることを意図タグによって1.0.1よい。)バグ修正は、ブランチに入る、およびバグ修正リリースは再びタグである

安いコピー:

Subversionではタグとブランチが実際に同じものであることをしかし忘れないでください。それらの間の唯一の違いは、あなたが/あなたのチームが彼らに属性のセマンティクスであるので、それはかなり(除い/例えば、タグにコミットを許可しない、サーバー上で実施される可能性があります1つのparticualr方法に同意し、それに固執する人々を得ることに帰着しますリリースコーディネーターなどのため。)

私は第二のアプローチといえ参照の問題がある:どのようにあなたが1.0を再リリースする場合は、フィールド内のソフトウェアとの容易な区別を作るつもりですか?それはあなたが実際には異なるコードベースを参照1.0と別の1.0を有することができることを意味します...。

プロジェクトのソースコード(と実行)の不変のスナップショットは、テストやフィールドの使用を構造化するかどうか、どのような種類のテストを行うための非常に貴重です。構造化されたテストのために、あなたは将来的に数ヶ月または数年を参照される可能性のあるデータを作成することになるだろう。いつでもあなたがそのデータを再訪、マーフィーの法則は、あなたがそれから来てどのようなコードを知る必要がありますと言うと、あなたは、ソースコードの特定のスナップショットを引用のトラブルに行っていない限り、ソースコードがに対応したものを自信を持って言うことは不可能になりますそのテストデータます。

私は「あなたが助けることができ、このマイクロコードが動作しないのですか?」誰かが私に来ると言われていますどのように多くの時間を伝えることはできません「使用しているバージョンは何?」と私は、それらを求めますそして彼らは(リアルタイムで照会することができEEPROMにバージョン管理情報を入れた方が良い、非常に少なくとも、デバイス上のステッカーを入れて)良いリリース管理を行っていないので、「私はわからない」と言います。 >:(

にSVN、技術の差を利用タグの追跡修正は無料。私が最小限のタグ利用に基づかなければならないSVNの実装は、単に安いコピー cluttersアップ"構造の空間"にします。

のグアダラハラアセンブリが登場 通信 特定のベースラインを大きなチーム開発者向けです。改正で追跡するのは、"キャリー抽象化できる源となっていく。として認識し、ついに50以上の開発者、任意のソースのエラーになりの混乱と無駄な時間。A詳細なタグを排除することができる混乱を解除して疑義が生じた場合にどのベースラインの目的です。

私の両方を組み合わせ方法きくリリースには、タグです。タグは変更できませんので、存在感の"1.0.0"タグの指標であることなんかいリリースは何として1.0.0.

同時に、かな1.0.0って、1.0です。その流れ:支部幹1.0には、タグこの新しい1.0として1.0.0、展開している。そのバグ修正行うことができます1.0支店(くにあり、混大切にし1.1-標的の開発を見つけることのできるラー)と合併幹.各リリースの固定1.0はタグとして1.0です。xからは1.0です。これは基本的にアプローチを使用していましながら、Perforceことになると非常に似うにSubversion.(読書を通じて回答んが、実質的に同一であるヴィンセントの推薦)

どについてのコメントタグが冗長いのでョン番号---ときtrueを除き、そのタグが指定した範囲:すなわちファイルのリポジトリに対象として含まれています。できる合理的にお知らせを聞いてみ/svn/proj1/tag/1.0.0もすぐに見るコヒーレントスペースが活用できます。だって眺める改正のXは、最初に見改Xしているのを見るのは変化(例えば)/svn/proj1の/trunk/Makefileが猟/svn/proj1の/trunk/@Xは何をすべきかれます。この改正のXタッチファイルproj1とproj2?はもちろん悪だが、厳密にいえばださい/svn/proj1の/trunk/@X所のリストの改訂番号保管?どうしたらい1.0.0は改X?ので厚さを特定することはできるだけでは、リポジトリから.

システムGitのように、タグや支店が、基本的には同じことだけでは、オブジェクトへの参照データベース)ですが、 条約 このタグrefsな店refsおいて、好ましくは、特定の制約はどのようになります。Perforceもにラベルする方法の分類の設定ファイルの修正と独自のchangelist;は基本的にタグが混乱:歴史的に使用していますchangelist番号(Subversionョン番号)の名を店しているだろうが特定できます。この両者はほぼ同じなので、こちらかTMTOWTDI.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top