7

我正在尝试用 C# 编写一个小的 Relase Notes 程序。我需要在指定日期之间获取属于指定项目的所有变更集和相关工作项。

我尝试使用 QueryHistory 方法,但我找不到如何提供日期过滤器。

4

2 回答 2

10

你可以设置

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, "");
}

我在我自己的一个工具中使用它,最初我在这里找到了它的核心(Robaticus 的一篇很棒的帖子)

于 2011-12-08T11:30:32.677 回答
3

刚刚发现有几个类继承自 VersionSpec 并且会为您完成工作并且非常易于使用。例如,有一个接受 DateTime的DateVersionSpec 。特定 VersionSpec 类的完整列表是:

WorkspaceVersionSpec LatestVersionSpec LabelVersionSpec DateVersionSpec ChangesetVersionSpec

希望这可以帮助。

于 2012-05-06T09:26:39.763 回答