Есть ли способ, либо с помощью запроса, либо программным путем идентифицировать все TFS-изменения, которые НЕ связаны с рабочим элементом?
Как найти обновления TFS, не связанные с рабочими элементами
Ответ 1
Конечно, вы можете использовать TFS API, чтобы сделать это очень легко.
public static void GetAllChangesetsWithNoWorkItems()
{
var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfs2010/tfs/default"));
var service = tfs.GetService<VersionControlServer>();
var histories = service.GetBranchHistory(new ItemSpec[] { new ItemSpec(@"$/ProjectName/MAIN/BUILD", RecursionType.OneLevel) }, VersionSpec.Latest);
foreach (BranchHistoryTreeItem history in histories[0])
{
var change = service.GetChangeset(history.Relative.BranchToItem.ChangesetId, true, true);
if(change.WorkItems.ToList().Count == 0)
{
Debug.Write(String.Format("Work Item Missing for Changeset {0}", change.ChangesetId));
}
}
}
Вы можете прочитать это сообщение в блоге о том, как программно подключиться к API TFS http://geekswithblogs.net/TarunArora/archive/2011/06/18/tfs-2010-sdk-connecting-to-tfs-2010-programmaticallyndashpart-1.aspx
Ответ 2
Использование модуля TFS PowerToy PowerShell:
Из любой папки в вашей рабочей области, в которой вы заинтересованы:
Get-TfsItemHistory . -Recurse | Where-Object { $_.WorkItems.Length -eq 0 }
Это приведет к истории для текущей папки и всех подпапок, а затем фильтра для пустых списков рабочих элементов.
Ответ 3
Я не знаю о Richard Answer, но принятый ответ занял почти 2 минуты, чтобы запустить из корня моей коллективной коллекции проектов. Это выполняется через 10 секунд, если вы ищете конкретного пользователя, 47 секунд, если вы этого не сделали.
service.QueryHistory("$/TeamProject/", VersionSpec.Latest,0, RecursionType.Full,userName,null,null, Int32.MaxValue,true,false)
.Cast<Changeset>()
.Where(cs=>cs.AssociatedWorkItems.Length==0)
если вы не ищете конкретного пользователя, просто установите userName
на null