web-dev-qa-db-ja.com

TFS:ラベルvsチェンジセット

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

ありがとう!

34
laconicdev

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

また、ラベル付けはリソースをあまり必要としません。また、同じバージョンのファイルに複数のラベルを付けることができます。

35
Alex

ビルドを構成するソースファイルのバージョンにラベルを付ける必要があります。 TeamBuildを使用している場合は、自動的に行われます。ビルド定義の名前、日付、ビルド番号を組み合わせます。したがって、何もする必要はありません。

他のオプションはあまり一般的ではなく、多くの不要な作業が必要です。私がそれを正しく理解している場合は、ビルドプロセス中にソースファイルをチェックアウトし、チェックインコメントで指定されたバージョン番号でそれらをチェックインします。これは、Alexがビルドプロセスとソース管理リポジトリの面で非常にリソースを消費することを述べたとおりです。さらに、バージョン情報がコメントに埋め込まれている場合、特定のバージョンのソースファイルをどのように取得しますか?これは非常に難しく、TFSソース管理APIを使用して、チェックインコメントでバージョン番号を検索することにより、ソースファイルをワークスペースにダウンロードする独自のアプリケーションを作成する必要があります。これにより、不必要な複雑さと頭痛が生じます。

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

ラベル付けは非常に強力で使いやすく、TFSの一部です。それを機能させ維持するために多くの労力を必要とするカスタムソリューションを思いつくのではなく、すでに利用可能なものを使用してみてください。

7
Mehmet Aras

現在、ビルドを行うときはいつでも、TFSにチェックインされるファイルにバージョン番号のラベルを付けます

これを行う必要はありません。 TFSはコードベースの状態をさまざまな方法で参照できますが、実際にはラベルは1つですが、ビルドやチェンジセットもそうです。 Get Specific Version...を実行し、Typeドロップダウンのオプションを調べることで、特定の時点を再構築するために利用できる方法を確認できます。

Changeset
Date
Label
Latest Version
Workspace Version

Changesetを使用すると、変更セットの直後に取得できます。 Dateは明らかです。 Labelも同じですが、ビルドが自動的に作成される*ラベルが作成されます(このドロップダウンからLabelを選択すると、Find Labelダイアログが表示されます)。

*自動だと思います!それが私が今いるところに特別にセットアップしたものでない限り...

2
AakashM

StackOverflowは上記の回答についてコメントさせないため、これを新しい「回答」として記述します。上記の誤解のいくつかを明確にしたいと思います。

まず、TFVCラベルを使用すると、チェンジセットを使用するよりも多くのリソースを消費します。もっとたくさん。 Branch、Merge、Get by Labelなどのコマンドは低速です。巨大なデータベースを備えたエンタープライズサーバーの場合、ラベルを使用する必要はありません。

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

3番目に、他の人がすでに述べたように、ラベルは移動または削除できるため、不変のチェンジセットよりも信頼性が低くなります。

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

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

1