2009-06-05 42 views
31

TFSソースコントロールの使用に関するベストプラクティスを考え出しています。現在、ビルドを行うたびに、TFSにチェックインされたファイルにバージョン番号を付けます。このアプローチは、単にファイルをチェックしてコメントにバージョン番号を付けるよりも良いか悪いですか? チェンジセットを使用して、必要に応じて戻ることができますか、ラベルはまだまだ汎用性がありますか?TFS:ラベルとチェンジセット

ありがとうございます!

答えて

32

2つの異なる目的があります.ChangeSetsは、ファイルが実際に変更されたときに、その変更を永続的に記録したいときです。ラベルはファイルの特定のバージョンをマークして、そのポイントに簡単に戻ることができます。あなたのビルドが実際にソース管理下のファイルを変更し、これらの変更を記録しない限り。ラベルを付ける必要があります。

また、ラベリングはリソースを大幅に節約します。また、同じバージョンのファイルに複数のラベルを付けることができます。今

+16

ラベルは恐ろしいことがあり、コードベースの一部にしか適用できず、事実の後で変更することができ、削除することができます。 CS番号は定数です。変更することはできません。TFS管理者がDestroyを使用してソース管理からファイルを削除する場合(ただし、ラベルは復元できません)は常に最新のバージョンを取得する必要があります。 私の経験では、人間が読める名前を付けて検索することができるので、ラベルはいいです。 CS番号は別の方法としてうまく機能します。 – jessehouwing

2

、我々はビルドを行ういつでも、私たちは、あなたがこれを行う必要はありませんバージョン番号

でTFSにチェックインされたファイルにラベルを付けます。 TFSは、さまざまな方法でコードベースの状態を参照することができますが、ラベルは実際には1つですが、ビルドやチェンジセットもそうです。あなたはGet Specific Version...をやってTypeドロップダウンにオプションを調べることによって、特定の時点を再構築するために利用可能な方法を見ることができます:

Changeset 
Date 
Label 
Latest Version 
Workspace Version 

Changesetはあなただけで任意のチェンジ後に取得することができます。 Dateは明らかです。 Labelもそうですが、自動的に*ラベルを作成します(このドロップダウンからLabelを選択してFind Labelダイアログを見てください)。

*私はそれが自動だと思います!それが何かのものでない限り、私は今どこにいるのですか?

+3

ビルド定義設定(詳細セクションの下)でオプションを選択すると、Team Buildは自動的にラベルを付けることができます。 – jessehouwing

7

あなたのビルドを構成するソースファイルのバージョンにラベルを付ける必要があります。 TeamBuildを使用している場合は、自動的にそれが実行されます。ビルド定義の名前、日付、およびビルド番号が結合されています。だからあなたは何もする必要はありません。

あなたの他の選択肢はそれほど慣習的ではなく、多くの不必要な作業を必要とします。私が正しく理解していれば、ビルドプロセス中にソースファイルをチェックアウトし、チェックインのコメントで指定されたバージョン番号でチェックインします。これはAlexがあなたのビルドプロセスとソース管理リポジトリに関して非常にリソース集約的であると言いました。さらに、バージョン情報がコメントに埋め込まれていると、特定のバージョンのソースファイルをどのように入手できますか?非常に難しく、チェックインのコメントでバージョン番号を検索してTFSソース管理APIを使用してソースファイルをワークスペースにダウンロードする独自のアプリケーションを作成して書く必要があります。これは不必要な複雑さと頭痛を引き起こす。

代わりにラベルを使用する場合は、VS IDEのget byラベルを使用して、そのラベルを構成するソースファイルをダウンロードできます。ビルドの自動化中に最新のソースファイルをダウンロードする代わりに、TeamBuildにラベルを使用するよう指示することもできます。そうすれば、以前のバージョンのアプリケーションを簡単に構築できます。ラベルを使用すると、後でそのラベルを取得して特定のチェンジセットを取得してからクイックラベルを実行するか、まったく新しいラベルを作成するだけで、コード変更があった場合でも後でチェンジセットを既存のラベルに適用できます。

ラベルは非常に強力で使いやすく、TFSの一部です。独自のソリューションを用意するのではなく、それを稼動させ維持するために多くの努力を必要とするのではなく、すでに利用可能なものを使用しようとします。

0

StackOverflowは上記の回答にコメントすることはできませんので、私はこれを新しい「回答」として書いています。上記の誤解のいくつかを明確にしたいと思います。

最初に、TFVCラベルを使用すると、チェンジセットを使用するよりもリソースが大幅に消費されます。もっとたくさん。 Branch、Merge、Get Labelなどのコマンドは遅くなります。巨大なデータベースを持つエンタープライズサーバーの場合、ラベルを使用したくない場合があります。

第2に、ビルドでは自動的にラベルが作成されませんが、デフォルトのビルドステップにはラベルを作成するステップが含まれています。

第3に、すでに言及した他のものと同様に、ラベルは移動または削除することができるので、不変の変更セットよりも信頼性が低い。

全体的に、ラベルを使用しないことをお勧めします。最も簡単な方法は、ビルドのチェンジセット番号を覚えておくことです。または、異なるリリースのバージョンを分離する場合は、リリースブランチを作成する必要があります。

ラベルは小規模システムでは問題ありませんが、大企業には適していません。

+0

セットアップでは、VSTSエージェントのビルドプロセスで、ビルドが成功した後にそのバージョンのコードにラベルを作成します。これはあなたが話したパフォーマンスの問題を緩和するものではありませんが、ラベルはChanset数と同じように永続的かつ決定的なものを参照しているので、ラベルの信頼性は向上します。これにより、ビルドに含まれるコードのバージョンを簡単に見つけることができますが、誰かがラベルを編集または削除しても、それは災害ではありません。 –

関連する問題