現在、開発とリリースの 2 つのブランチがあります。
開発からリリースまで、マージされていない変更セットをすべて取得することは可能ですか?
現在、デフォルトのマージ ウィザードを使用しています。ただし、大きな制限が 1 つあります。ユーザーごとにフィルタリングすることはできません。そこで、マージされていないすべてのチェンジセットを開発からリリースにプルし、それらのチェンジセットをユーザーごとにフィルターできるアプリを構築することを考えていました。
次のような小さなコンソール アプリを作成できます。
using System;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
namespace UnmergedChangesets
{
class Program
{
static void Main(string[] args)
{
TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://myserver:8080/collection"));
VersionControlServer vcs = (VersionControlServer) tpc.GetService(typeof (VersionControlServer));
MergeCandidate[] mergeCandidates = vcs.GetMergeCandidates("$/Development", "$/Release", RecursionType.Full);
}
}
}
このようにして、ブランチmergeCandidates
にないすべての変更セットにアクセスできます。
特定のユーザーをさらにフィルタリングしたい場合は、次のようにしてこれを行うことができます。 Release
foreach (var mergeCandidate in mergeCandidates)
{
if(mergeCandidate.Changeset.Owner == @"DOMAIN\ChuckNorris")
{
//This is an unmerged changeset commited by Chuck
}
}
標準のウィンドウがニーズに合わない場合は、codeproject を参照してください。
誰かがそのようなタイプのアプリケーションを作成したので、それがどのように機能するかを見ることができます
TFS 2010 SDK: スマート マージ - プログラムによる独自のマージ ツールの作成
編集
VS2010 用のこのプロジェクト テンプレートを使用して作業することを忘れていました