Список всех наборов изменений и связанных рабочих элементов, принадлежащих конкретному проекту в период между указанными датами

Я пытаюсь написать небольшую программу Relase Notes с С#. Мне нужно получить все наборы изменений и связанные рабочие элементы, принадлежащие указанному проекту между указанными датами.

Я пытался использовать метод QueryHistory, но не смог найти, как задать фильтр даты.


person bahadir arslan    schedule 08.12.2011    source источник


Ответы (2)


Вы можете установить

VersionSpec versionFrom = GetDateVSpec(date);
VersionSpec versionTo = GetDateVSpec(DateTime.Now);

Затем с

IEnumerable results = versionServer.QueryHistory(sourceControlPath, VersionSpec.Latest, 0, RecursionType.Full, null, versionFrom, versionTo, int.MaxValue, true, true);
List<Changeset> changesets = results.Cast<Changeset>().ToList();

вы получаете наборы изменений, которые вам нужны.

GetDateVSpec выглядит следующим образом:

private static VersionSpec GetDateVSpec(DateTime date)
{
   string dateSpec = string.Format("D{0:yyy}-{0:MM}-{0:dd}T{0:HH}:{0:mm}", date);
   return VersionSpec.ParseSingleSpec(dateSpec, "");
}

Я использую это в одном из своих собственных инструментов, изначально я нашел ядро ​​для этого здесь (отличный пост Робатикуса)

person pantelif    schedule 08.12.2011
comment
Это ответ, который я хочу. Спасибо :) Теперь я могу найти легко связанный рабочий элемент. [Редактировать: я видел, что каждый элемент набора изменений содержит коллекцию WorkItems. Так что это очень хорошо :)] - person bahadir arslan; 08.12.2011
comment
Эй, спасибо @dbobrowski, но, как уже упоминалось, я скопировал только работу Робатикуса. - person pantelif; 27.03.2012

Только что узнал, что есть несколько классов, которые унаследованы от VersionSpec, которые сделают всю работу за вас и очень просты в использовании. Например, существует DateVersionSpec, который принимает DateTime. Полный список конкретных классов VersionSpec:

WorkspaceVersionSpec LatestVersionSpec LabelVersionSpec DateVersionSpec ChangesetVersionSpec

Надеюсь это поможет.

person Milan Nankov    schedule 06.05.2012