Octokit 返回一个拉取请求而不是所有问题

Posted

技术标签:

【中文标题】Octokit 返回一个拉取请求而不是所有问题【英文标题】:Octokit returning one pull request rather than all issues 【发布时间】:2018-10-31 20:17:18 【问题描述】:

我希望从我的 Node.js 应用程序的 GitHub 存储库中检索所有问题。我已经使用 octokit 来做到这一点。从我收集的文档中,我必须使用repo.getIssueEvents(),但这只是返回第一个拉取请求,这不是我所期望的。

我试过用谷歌搜索这个,但总是遇到我已经使用过的相同文档。我哪里做错了?

这是我的代码:

var GitHubApi = require('octokit');
retrieveIssues: function(owner, repoName) 

  var gh = GitHubApi.new(  
  username: "user",
  password: "password"
  );


  var repo = gh.getRepo(owner, repoName);

  repo.getIssueEvents()
    .then(function(events) console.log(events))


【问题讨论】:

【参考方案1】:

如果您引用this octokit project,它似乎不会将 Github API 公开给get issues,而只是将issue events 公开给特定的存储库。

Here,Github 推荐使用octokit/rest 代替node.js

npm install @octokit/rest

要获取所有问题(所有状态的问题和拉取请求),它将是:

const octokit = require('@octokit/rest')()

async function paginate(method) 
    let response = await method(
        owner: "google",
        repo: "gson",
        state: "all",
        per_page: 100
    )
    let 
        data
     = response
    var count = 0;
    while (octokit.hasNextPage(response)) 
        count++;
        console.log(`$count request`);
        response = await octokit.getNextPage(response)
        data = data.concat(response.data)
    
    return data


paginate(octokit.issues.getForRepo)
    .then(data => 
        console.log(data);
    )

查看issues.getForRepo

如果您不想要拉取请求而只想要问题,您也可以执行这样的搜索请求:

const octokit = require('@octokit/rest')()

octokit.authenticate(
    type: 'oauth',
    token: 'YOUR_TOKEN'
);

async function paginate(method) 
    let response = await method(
        q: "repo:google/gson is:issue",
        per_page: 100
    )
    let data = response.data.items;
    var count = 0;
    while (octokit.hasNextPage(response)) 
        count++;
        console.log(`request n°$count`);
        response = await octokit.getNextPage(response);
        data = data.concat(response.data.items);
    
    return data


paginate(octokit.search.issues)
    .then(data => 
        console.log(data);
        console.log(`retrieved $data.length issues`);
    )

但请注意,搜索请求中仅返回前 1000 个问题

【讨论】:

我意识到我使用了错误的包,但就我所知。谢谢你的解释。它非常有帮助。

以上是关于Octokit 返回一个拉取请求而不是所有问题的主要内容,如果未能解决你的问题,请参考以下文章

获取为拉取请求列表添加/删除的行

Octokit GitHub API

octokit getLabel 返回 TypeError:callback.bind 不是函数

如何避免使用 API 延迟 github 拉取请求合并

Azure DevOps 上的拉取请求以强制替换而不是合并

Octokit客户端如何提出请求