質問
TFSでラベルを作成して複数のファイルに割り当てた場合、同僚はそのラベルにファイルのバージョンを変更したり、他のファイルを追加したりすることはできません。このエラーが表示されます:
TF14077: The owner of a label cannot be changed.
問題を調査すると、この記事が見つかりました。
ユーザーが 共有ラベルの操作を許可 開発フォルダー内のみ 所有するラベルを操作する 運用フォルダー。 (強調鉱山)
「共有ラベル」への参照が見つかりません。私が見る限り、ラベルには所有者が必要です。
FWIW、私がやろうとしているのは、「フローティング」を採用することです。開発者がコードに特定のラベルを付けてビルドの一部になる準備ができていることを示すことができるようにします。ビルドプロセスでは、そのラベルを持つすべてのものを取得するだけでよく、実際にビルドする準備ができている最新のものを自動的に取得し、過去のバージョンとプライムタイムの準備ができていない新しいものの両方を無視します。
更新: 本当に共有されたラベルを作成できない場合は、少なくとも、同僚が作成したラベルを編集する権利をユーザーに与えることができます。これはかなり明示的にサポートされています。通常の Contributor ユーザーにはこの権限はありませんが、MSDNによると(ソース管理権限の記事 Team Foundation Serverの権限を参照)、 LabelOther 権限を介して付与できます:
ソース管理権限は ソースコードファイルに固有の フォルダー。これらの権限を設定できます フォルダーまたはファイルを右クリックして ソース管理エクスプローラーで、クリック プロパティ、および[セキュリティ]タブで、 対象のユーザーまたはグループを選択する 許可を変更したい 次に、リストされている権限を編集します 許可。これらを設定できます tfを使用したアクセス許可 ソース用のコマンドラインユーティリティ コントロール。
...
ラベルの管理| tf: LabelOther |この権限を持つユーザーは、別のユーザーが作成したラベルを編集または削除できます。
そのため、上記のように、すべての開発者を含むドメイングループにその権利を割り当てました。 tf permission コマンドを使用して、設定されていることを確認できます:
tf permission /group:"CORP\Web Team"
そして結果は期待通りです(楽しみのためにLabelも割り当てました)
===============================================================================
Server item: $/Test1/TeamBuildTypes (Inherit: Yes)
Identity: CORP\Web Team
Allow:
Deny:
Allow (Inherited): Label, LabelOther
Deny (Inherited):
まだ、テストユーザーは作成したラベルの編集を許可されていません。
解決 2
これをラベルで機能させることはできませんでした。代わりに、分岐を使用してまったく異なるプロセスを考案しました。これを読んでいる人には強くお勧めします。
一般的な開発ブランチがあるように、分岐スキームを設定しました。それから、各開発者は自分が望むブランチを実行できる独自のブランチを持ち、プロダクションブランチがあります。
- 開発者は「汚い」ことをします意図せずに資料をリリースしたり、同僚と干渉したりすることを恐れることなく、自分の支店で働いています。
- 統合する準備が整ったら、変更を開発ブランチにマージします。そこで継続的なビルドを行い、結果をテストします。
- 統合ビルドが完全にテストされ、展開の準備が整うと、変更は実稼働ブランチにマージされます。これはビルドおよびデプロイされます。
欲しいと言っていた
私がやろうとしているのは 「フローティング」開発者が コードの準備ができていることを示すことができます タグ付けによってビルドの一部になる 特定のラベルが付いています。
上記で概要を説明したスキームは、これを完全に実現します。
他のヒント
棚セットは、あなたがしていることのより良い解決策でしょうか? IIRCには、ビルド(または他の)プロセスの一部としてコミットするなど、シェルフセットを操作するためのかなり豊富なAPIがあります。
TFSのラベルは、使用したときに非常に制限されていることがわかりました。