gpt4 book ai didi

api - Github API - 检索用户提交?

转载 作者:行者123 更新时间:2023-12-04 03:04:12 26 4
gpt4 key购买 nike

我正在尝试构建一种方法,在该方法中我可以访问 Github 用户名,并发布该用户的所有提交或至少一些提交。

是否有调用 GET user/repo/commit 关联或直接用户/提交?

现在,我认为需要以下几点:

  • 获取与特定名称关联的存储库:api.github.com/users/:name/repos .
  • 从提要获取 repo 名称。
  • 将 repo 名称放在一个数组中,例如:
  •     api.github.com/repos/:user/:repo1/commits
    api.github.com/repos/:user/:repo2/commits
    api.github.com/repos/:user/:repo3/commits
  • 从提要中获取 shas 的数量?
  • 最佳答案

    遍历用户的存储库是次优的,因为它会错过他们在其他存储库中所做的任何提交。更好的方法是使用 Events API反而。

    第一步是到get the user's events :

    GET /users/:username/events

    接下来您需要遍历返回的事件,检查项目 where result.type is set to PushEvent .每一个都对应一个 git push由用户和来自该推送的提交可用(按时间倒序)为 result.payload.commits .

    您可以通过检查 commit.author.email 来过滤这些以忽略其他用户所做的任何提交。符合您的期望。您还可以访问类似 sha 的属性。 , messageurl在该对象上,您可以使用 distinct 消除多次推送中的重复提交。属性(property)。

    总体而言,涉及更多的跑腿工作,但它也让您更准确地表示用户实际提交的内容。

    如果有帮助,这里有一些 example code取自我的网站,该网站使用上述方法获取用户的最后一次提交(使用 Node.js 和 octokat npm module 实现):
    const USER = 'TODO: your GitHub user name'
    const EMAIL = 'TODO: your GitHub email address'

    const github = require('octokat')({ token: 'TODO: your GitHub API token' })

    return github.fromUrl(`https://api.github.com/users/${USER}/events`)
    .fetch()
    .then(events => {
    let lastCommit

    events.some(event => {
    return event.type === 'PushEvent' && event.payload.commits.reverse().some(commit => {
    if (commit.author.email === EMAIL) {
    lastCommit = {
    repo: event.repo.name,
    sha: commit.sha,
    time: new Date(event.createdAt),
    message: commit.message,
    url: commit.url
    }

    return true
    }

    return false
    })
    })

    return lastCommit
    })

    关于api - Github API - 检索用户提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21869795/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com