问题描述
最近,我从TFVC转到了Git版本控件。到目前为止,我一直在使用TfvcVersionDescriptor日期类型来获取特定日期的文件项:
var version = new TfvcVersionDescriptor { VersionType = TfvcVersionType.Date,Version = date };
有什么办法可以使用GitHttpClient做到这一点?我需要生成一些趋势分析,获取特定日期的文件列表非常重要。如果没有按日期检索的功能,是否可以解决此问题?
解决方法
对于TFVC::您已经使用TfvcVersionDescriptor
很长时间了。
对于Git::对应的类是GitVersionDescriptor。
它仅接受三个字段:branch,commit,tag
。它不像Date
一样支持TfvcVersionDescriptor
归档,由于它是SDK的设计,因此我们无法控制此行为。
(您可以从SDK here添加有关修改GitVersionType枚举的功能请求)
,您对哪个日期感兴趣?
- 原始作者写补丁
GitCommit.Author.GitUserDate.Date
时
- 创建此提交对象时
GitCommit.Committer.GitUserDate.Date
- 创建/推送请求时
- 该分支的更新时间
由于git被设计为分布式系统,因此commit与datetime值之间没有明显的关系。有时,现实世界很凌乱,没有一个简单的答案。
,将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);
它将返回List<GitCommitRef>
和GitCommitRef.CommitId
(SHA-1)来标识提交。
然后将GitHttpClient.GetItemsAsync
或其他变体与
new GitVersionDescriptor()
{
VersionType = GitVersionType.Commit,Version = commitId // value from above
};
获取文件。