Azure Devops Git - 按日期获取版本
Azure Devops Git - Get version by date
最近我从 TFVC 转向了 Git 版本控制。到目前为止,我一直在使用 TfvcVersionDescriptor 日期类型获取特定日期的文件项,如下所示:
var version = new TfvcVersionDescriptor { VersionType = TfvcVersionType.Date, Version = date };
有什么方法可以使用 GitHttpClient 来实现吗?我需要生成一些趋势分析,获取特定日期的文件列表非常重要。如果没有按日期检索的功能,是否有解决方法?
对于 TFVC: 你已经 TfvcVersionDescriptor
已经使用了很长时间了。
而对于Git:对应的class为GitVersionDescriptor。
它只接受三个字段:branch, commit, tag
。它不支持像 TfvcVersionDescriptor
那样的 Date
归档,我们无法控制这种行为,因为它是 SDK 的设计。
(您可以添加有关从 SDK here 修改 GitVersionType 枚举的功能请求)
您对哪个日期感兴趣?
- 当原作者写他们的补丁时
GitCommit.Author.GitUserDate.Date
- 创建此提交对象的时间
GitCommit.Committer.GitUserDate.Date
- 创建/推送拉取请求时
- 更新此分支的时间
因为 git 被设计为分布式系统,提交与日期时间值没有明显的关系。有时 real-world 很乱,没有简单的答案。
将 GitHttpClient.GetCommitsAsync
与类似于
的 GitQueryCommitsCriteria
对象一起使用
GitQueryCommitsCriteria searchCriteria = new GitQueryCommitsCriteria()
{
FromDate = new DateTime(2019, 2, 2).ToString(),
ToDate = DateTime.Now.ToString(),
ItemVersion = new GitVersionDescriptor()
{
Version = "master",
VersionType = GitVersionType.Branch
}
};
var commits = await client.GetCommitsAsync(repo.Id, searchCriteria);
它将 return List<GitCommitRef>
与 GitCommitRef.CommitId
(SHA-1) 来识别提交。
然后使用 GitHttpClient.GetItemsAsync
或其他变体
new GitVersionDescriptor()
{
VersionType = GitVersionType.Commit,
Version = commitId // value from above
};
获取文件。
最近我从 TFVC 转向了 Git 版本控制。到目前为止,我一直在使用 TfvcVersionDescriptor 日期类型获取特定日期的文件项,如下所示:
var version = new TfvcVersionDescriptor { VersionType = TfvcVersionType.Date, Version = date };
有什么方法可以使用 GitHttpClient 来实现吗?我需要生成一些趋势分析,获取特定日期的文件列表非常重要。如果没有按日期检索的功能,是否有解决方法?
对于 TFVC: 你已经 TfvcVersionDescriptor
已经使用了很长时间了。
而对于Git:对应的class为GitVersionDescriptor。
它只接受三个字段:branch, commit, tag
。它不支持像 TfvcVersionDescriptor
那样的 Date
归档,我们无法控制这种行为,因为它是 SDK 的设计。
(您可以添加有关从 SDK here 修改 GitVersionType 枚举的功能请求)
您对哪个日期感兴趣?
- 当原作者写他们的补丁时
GitCommit.Author.GitUserDate.Date
- 创建此提交对象的时间
GitCommit.Committer.GitUserDate.Date
- 创建/推送拉取请求时
- 更新此分支的时间
因为 git 被设计为分布式系统,提交与日期时间值没有明显的关系。有时 real-world 很乱,没有简单的答案。
将 GitHttpClient.GetCommitsAsync
与类似于
GitQueryCommitsCriteria
对象一起使用
GitQueryCommitsCriteria searchCriteria = new GitQueryCommitsCriteria()
{
FromDate = new DateTime(2019, 2, 2).ToString(),
ToDate = DateTime.Now.ToString(),
ItemVersion = new GitVersionDescriptor()
{
Version = "master",
VersionType = GitVersionType.Branch
}
};
var commits = await client.GetCommitsAsync(repo.Id, searchCriteria);
它将 return List<GitCommitRef>
与 GitCommitRef.CommitId
(SHA-1) 来识别提交。
然后使用 GitHttpClient.GetItemsAsync
或其他变体
new GitVersionDescriptor()
{
VersionType = GitVersionType.Commit,
Version = commitId // value from above
};
获取文件。