【问题标题】:Get file contents by commit hash using Octokit使用 Octokit 通过提交哈希获取文件内容
【发布时间】:2018-07-09 16:09:35
【问题描述】:

我无法获取给定提交哈希的文件内容。无论我的参考哈希值如何,我都会从默认分支获取当前文件版本。

我唯一的猜测是 ref 不能是普通哈希,但 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
        });
    }
}

【问题讨论】:

  • 以防万一有什么明显的,你能告诉我们你用提交哈希调用 Octokit 的代码吗?或者它正在生成和请求的 REST URL?谢谢。
  • 好的,谢谢。您确定正在使用if(ref) 分支吗? FWIW 我刚刚使用我的一个存储库自己尝试了 API,并且(没有实际检查压缩内容) ref 确实有所作为。
  • @Rup 是的,正在使用 if(ref) 分支。可以肯定的是,我有一个 console.log;为了清楚起见,我只是在提供的代码中省略了它。

标签: github npm octokit


【解决方案1】:

看起来这是 octokit/rest 中的错误,或者至少是意外行为,但可以说你给了它错误的输入。来自your example

path: './test.txt/'

Octokit 不喜欢前面的 ./,但如果您提供尾部斜杠,它会容忍它。但是,尾部斜杠导致它忽略 ref arg,即 path: 'test.txt/' 失败并出现与您看到的相同错误。 (并且可以说是错误的:斜线表示一个文件夹,而这只是一个文件 - 为什么要添加斜线?)你真的想要

path: 'test.txt'

可能值得提出反对 octokit/rest 的问题,但是如果您从路径中去除前导 ./ 和尾随 /s,它应该可以正常工作。

顺便说一句,来自你的 cmets

请注意,对象 'sha' 是相同的,并且都不匹配提供的 'ref' 哈希。

这是意料之中的:提供的 ref 用于提交,它是提交元数据和根树的哈希,它是根文件夹索引的哈希,这就是包含对象 SHA 哈希的内容。

【讨论】:

  • 哦,我看到你在 GitHub 上提出了问题:github.com/octokit/rest.js/issues/944
  • 做到了。这是我的一个愚蠢错误和一个奇怪的错误的结合。还要感谢您让我知道哈希;我只是假设响应对象中的 sha 是提交哈希。
猜你喜欢
  • 2012-12-31
  • 2015-10-01
  • 2021-05-21
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
相关资源
最近更新 更多