我无法获取给定提交哈希的文件内容。无论我有什么哈希供参考,我都会从默认分支获取当前文件版本。
我唯一的猜测是,引用不能是普通哈希,但是documentation将“ ref”描述为“提交/分支/标记的名称”。并且没有提供有关格式化的进一步说明。
我使用Runkit here复制了该问题。并从下面的实际项目中提供了代码。
async getDifference(): Promise<void> {
let oldFile = await this.gitHubApi.getContent(this.repo.owner.login, this.repo.name, `./${this.file}`, this.oldHash);
let newFile = await this.gitHubApi.getContent(this.repo.owner.login, this.repo.name, `./${this.file}`, this.newHash);
if(oldFile.data.content === newFile.data.content) {
console.log('no differencce');
} else {
...
}
return;
}
public getContent(owner: string, repo: string, path: string, ref?: string): Promise<any> {
if(ref) {
return this.octokit.repos.getContent({
owner: owner,
repo: repo,
path: path,
ref: ref
});
} else {
return this.octokit.repos.getContent({
owner: owner,
repo: repo,
path: path
});
}
}
答案 0 :(得分:0)
这似乎是octokit / rest的错误,或者至少是意外行为,但是可以说您输入的是错误的。来自your example:
path: './test.txt/'
Octokit不喜欢前导./
,但是如果提供了斜杠,则会容忍它。但是,尾部的斜杠导致它忽略ref
arg,即path: 'test.txt/'
失败,并出现与您看到的相同的错误。 (而且可以说是错误的:斜杠表示一个文件夹,而这仅仅是一个文件-为什么要添加斜杠?)您真的想要
path: 'test.txt'
也许值得提出一个针对octokit / rest的问题,但是如果您删除开头的./
并从路径中拖尾的/
,它应该可以正常工作。
偶然地,根据您的评论
请注意,对象'sha'是相同的,并且都与提供的'ref'哈希不匹配。
这是预料之中的:提供的ref用于提交,这是提交元数据和根树的哈希,是根文件夹索引的哈希,并且包含对象SHA哈希。