Программно найти перемещенный файл по старому имени - PullRequest
3 голосов
/ 21 марта 2012

В ответе на другой вопрос , Эдвард Томсон рекомендует использовать QueryItems для поиска перемещенного файла по его старому имени.

Однако я не могу понять этоиз.Похоже, это часть Microsoft.teamfoundation.versioncontrol.server.dll, но я не могу найти это где-нибудь.Интересно, это DLL на самом сервере TFS (к которому у меня сейчас нет доступа).Если это так, это не поможет мне в том, что мне нужно.

Как программно найти имя перемещенного файла по старому имени файла в TFS 2010?

Ответы [ 2 ]

3 голосов
/ 26 марта 2012

Если сервер, с которым вы разговариваете, имеет как минимум TFS 2010, вы можете сделать это с помощью Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer.GetChangesForChangeset (). Как только вы определите набор изменений, в котором произошло переименование, с помощью QueryHistory, вызовите GetChangesForChangeset и передайте «true» для параметра «includeMergeSourceInfo». Это заполнит свойство «MergeSources» для каждого объекта Change.

С переходом на «slotmode» в 2010 году переименование в TFS Version Control очень похоже на операцию «Разветвление и удаление» под обложками. Из-за этого переименования фактически отслеживаются как часть «истории слияния».

Таким образом, если вы перебираете изменения и находите изменение, которое имеет MergeSource, который является и переименованным (см. Свойство IsRename), и имеет ваш исходный элемент, то вы найдете целевой элемент операции переименования.

1 голос
/ 21 марта 2012

Я думаю, что он на самом деле имеет в виду методы GetItem (s) или QueryHistory

Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer
Namespace:  Microsoft.TeamFoundation.VersionControl.Client
Assembly:  Microsoft.TeamFoundation.VersionControl.Client (in Microsoft.TeamFoundation.VersionControl.Client.dll)

См. эту страницу MSDN для получения дополнительной информации об этих элементах. Вы можете указать VersionSpec, который может включать идентификатор удаления. Если я правильно помню, вам нужно быть осторожным, если вы хотите использовать этот код в старых версиях TFS. В TFS2010 был представлен слот-режим, который более эффективен и может отслеживать изменения имени файла в разных версиях. До этого переименование сводилось к удалению старой версии и добавлению новой версии, отношения не сохранялись.

...