我正在尝试用C#编写一个小的Relase Notes程序。我需要在指定日期之间获取所有变更集和相关工作项属于指定项目。
我尝试使用QueryHistory方法,但我找不到如何给出日期过滤器。
答案 0 :(得分:9)
您可以设置
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, "");
}
我在我自己的一个工具中使用它,最初我找到了这个here的核心(Robaticus的一篇伟大的帖子)
答案 1 :(得分:3)
刚刚发现有几个类继承自VersionSpec并且将为您完成工作并且非常易于使用。例如,有一个 DateVersionSpec ,它接受DateTime。特定VersionSpec类的完整列表是:
WorkspaceVersionSpec LatestVersionSpec LabelVersionSpec DateVersionSpec ChangesetVersionSpec
希望这有帮助。