2

現在の TFS ユーザーのリストを取得する方法を示す例はたくさんありますが、過去に変更をコミットしたが、どのセキュリティ グループにも属していない古いユーザーのリストを取得するにはどうすればよいでしょうか?

記録のために、これは私が現在のすべてのユーザーを見つけるために使用しているコードです:

var gss = tfs.GetService<IGroupSecurityService>();
var members = gss.ReadIdentity(SearchFactor.EveryoneApplicationGroup,
                               null,
                               QueryMembership.Expanded).Members;
return gss.ReadIdentities(SearchFactor.Sid, members, QueryMembership.None)
    .Where(identity => identity != null &&
                       identity.Type == IdentityType.WindowsUser)
    .Select(identity => string.Format(@"{0}\{1}",
                                      identity.Domain,
                                      identity.AccountName));
4

2 に答える 2

1

正確な答えを提供することはできませんが、うまくいけばこれが役立つでしょう...

ワークスペース(つまり、tf.exeワークスペースコマンドおよび同等のAPI)を介して、保留中のすべての変更を一覧表示できます。コミットされていない変更を含む各ワークスペースの所有者を使用すると、既に取得しているアクティブユーザーのリストと相互参照できるようになります。

于 2011-12-04T12:41:00.780 に答える
0

次のスニペットは、TeamCollection リポジトリで変更をコミットしたことのあるすべての人を明らかにする必要があります。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.VersionControl.Client;

namespace PeopleWhoHaveCommitedChangesets
{
    class Program
    {
        static void Main()
        {
            TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://TFSServer:8080"));
            VersionControlServer vcs = (VersionControlServer) tpc.GetService(typeof (VersionControlServer));
            IEnumerable results = vcs.QueryHistory(@"$/",
                                                    VersionSpec.Latest, 0, RecursionType.Full, null, null, null, int.MaxValue, true, true);
            List<Changeset> changesets = results.Cast<Changeset>().ToList();

            List<string> Users = new List<string>();
            foreach (var changeset in changesets)
            {
                if(!Users.Contains(changeset.Owner))
                {
                    Users.Add(changeset.Owner);
                }
            }
        }
    }
}

これは総当たりであり、変更セットが多いと実行にかなりの時間がかかることに注意してください。

于 2011-12-05T11:17:41.253 に答える