2015-07-15 3 views
0

У меня есть проект Visual Studio 2010 C# в TFS. Я хочу загрузить все файлы из TFS за определенную дату.Как получить список файлов из TFS с указанной даты?

Каков наилучший подход для этого, используя TFS API в C#? Что я сделал: получить все объекты проекта из TFS, для каждой даты проверки чек и загрузить его. К сожалению, у меня есть много этих файлов, и для их загрузки требуется много времени, а затем их фильтрация по дате.

Мой код:

var tfs = RegisteredTfsConnections.GetProjectCollection(new Uri("MyTfsUri")); 
var projects = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfs); 
var versionControl = (VersionControlServer)projects.GetService(typeof(VersionControlServer)); 
ItemSet itemsSqlScripts = versionControl.GetItems("Path in TFS", RecursionType.Full); 

foreach (var item in itemsSqlScripts.Items) 
{ 
       if (item.CheckinDate > date) 
       { 
        item.DownloadFile("C:\\SqlScripts\\" + Path.GetFileName(item.ServerItem)); 
       } 
} 

И я хочу что-то вроде этого:

ItemSet itemsSqlScripts = versionControl.GetItems("Path in TFS", RecursionType.Full, and here parameter filter -> for example new DateTime(2015, 5, 1, 0, 0, 0); 

я смотрел и читал о:

tfs.GetService<VersionControlServer>().QueryHistory(...) 

, но я понятия не имею, как использовать эту функцию делать то, что я хочу :(

Пожалуйста, помогите

ответ

0

Вы можете сделать что-то вроде этого:

DateTime targetDate = DateTime.Now.AddDays(-1); 
string downloadLocation; 

var changes = versionControl.QueryHistory(
      "$/MyProject", 
      VersionSpec.Latest, 
      0, 
      RecursionType.Full, 
      null, 
      new DateVersionSpec(targetDate), 
      VersionSpec.Latest, 
      int.MaxValue, 
      true, 
      false); 

foreach (Changeset changeset in changes) 
{ 
    foreach (var change in changeset.Changes.Where(c => c.Item.ItemType == ItemType.File)) 
    { 
     change.Item.DownloadFile(downloadLocation + change.Item.ServerItem.Substring(2)); 
    }         
} 
Смежные вопросы