6

私は Team Foundation Server 2012 を使用して、データ ウェアハウス プロジェクトの継続的インテグレーション ビルドを機能させてきました。そうすることで、ラベル付けとラベルからの構築が、期待した結果をもたらさないことに気付きました. 問題を調査する際に、Team Foundation Servers コマンド ライン ツールによって提供されるコマンド ライン引数のみを使用して、問題を再現することができました。これにより、ビルドに影響を与えている可能性のあるビルド定義をすべて排除することができました。

これが私の問題です。1 つのビルドで 2 つの異なるプロジェクトをビルドしているビルドがあります。基本的に、2 つの *.SLN ファイルが関連付けられています。各プロジェクトに 1 つずつ、2 つのアセットにラベルを適用しました。その後、コマンドを実行して、どのアセットにラベルが付いているかを表示できます。これを行うと、期待される結果が得られます。ただし、このラベルに関連付けられたアセットを取得するコマンドを実行すると、2 つのファイルのうちの 1 つしかプルされません。プロジェクトの 1 つを削除することで、両方のファイルをプルできることを確認しました。これは、ビルド定義、ワークスペース、およびラベルを使用したセットアップです

TFS パス:
$/Dev/Project1
$/Dev/Project2

ワークスペース マッピング
Project1: C:/SourceControl/Project1
Project2: C:/SourceControl/Project2

DeploymentFolder
Project1: //DevServer/SSIS/Project1
Project2: //DevServer/SSIS/Project2

実行コマンド:
Apply Label :
tf label TestLabel $/DEV/Project1/PackageA.dtsx
tf label TestLabel $/DEV/Project2/PackageA.dtsx

レビュー ラベル:
tf ラベル /format:Detailed LTestLabel

ラベルから取得:
tf get /r /version:LTestLabel

tf get コマンドを実行すると、次の結果が得られます

展開フォルダー: //DevServer/SSIS/Project1 には PackageA.dtsx ファイルが含まれます。
展開フォルダー: //DevServer/SSIS/Project2 には 0 個のファイルが含まれます。

同じラベルを持つ異なるプロジェクトのアセットをプルすることには、フィルターまたは制限があるようです。TFS の任意のアセットにラベルを適用してからラベルを取得すると、そのラベルが適用されたすべてのアセットを取得できるはずです。誰かがこれを聞いたり経験したりしましたか? 提供されたヘルプをいただければ幸いです。

4

1 に答える 1

2

get を実行するときに、現在の (ローカル) フォルダーを指定しません。取得するフォルダーを指定していないため、現在のフォルダーを意味し、次のようになります。

tf get /recursive /version:Llabelname .

両方を取得する場合は、両方を含むディレクトリを指定します。例:

tf get /recursive /version:Llabelname $/

もちろん、これはラベル内の両方のファイルがマップされていることを前提としています。

于 2013-12-15T10:25:44.107 に答える