3

現在、開発とリリースの 2 つのブランチがあります。

開発からリリースまで、マージされていない変更セットをすべて取得することは可能ですか?

現在、デフォルトのマージ ウィザードを使用しています。ただし、大きな制限が 1 つあります。ユーザーごとにフィルタリングすることはできません。そこで、マージされていないすべてのチェンジセットを開発からリリースにプルし、それらのチェンジセットをユーザーごとにフィルターできるアプリを構築することを考えていました。

4

2 に答える 2

5

次のような小さなコンソール アプリを作成できます。

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 
  }
}
于 2011-11-21T13:42:48.743 に答える
1

標準のウィンドウがニーズに合わない場合は、codeproject を参照してください。

誰かがそのようなタイプのアプリケーションを作成したので、それがどのように機能するかを見ることができます

TFS 2010 SDK: スマート マージ - プログラムによる独自のマージ ツールの作成

編集

VS2010 用のこのプロジェクト テンプレートを使用して作業することを忘れていました

TFS ユーティリティ用の Visual Studio 2010 プロジェクト テンプレート

于 2011-11-20T12:43:34.197 に答える