我可以按照他们的指示使用 GitHub v3 API 创建带注释的标签。我创建标签对象,然后创建引用对象。那里一切都很好。
我可以像这样删除引用:
curl -X DELETE -i -u 'myuser:mypassword' https://api.github.com/repos/:user/:repo/git/refs/tags/ben-test-310
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎还不够。如何使用 API 完全删除标签?
我必须获取在 Git 存储库上创建新标签时作为一部分的所有新提交。这需要通过 GitHub API 来完成。
例如,Git UI 说 Tagging Tag1 并有一个与之关联的 sha...假设 sha 是:SHA1
现在我如何通过 GitHub API 获取所有发生的或属于 Tag1 的提交?我想存储所有这些提交并对它们进行一些分析。
如何从提交哈希中获取 GitHub PR id?可以在 git 控制台或 GitHub API 中使用吗?
我不确定这到底是如何工作的,但我希望运行一个 bash 脚本,每次通过Github. 是否有可以在 PR 合并时触发的 GitHub webhook?另外,我不确定如何通过此网络钩子更新 master?或任何其他建议如何做到这一点?我不知道我是否朝着正确的方向前进。
通过updating master,我的意思是,拉一切从主。运行一个 bash 脚本,该脚本几乎没有更改并将新更改推送回 master。
我正在尝试编写一个脚本来使用自定义 CI 触发器自动设置 github 版本。我有一个pygithub用于自动创建标签和发布的 python 脚本。
# roughly the following code:
repo.create_git_tag(...)
repo.create_git_ref(...)
repo.create_git_release(...)
Run Code Online (Sandbox Code Playgroud)
运行脚本后,一切都显示在 GitHub Web UI 中,在 之后git fetch origin && git tag -l,我可以在本地看到标签。但是当我使用git describe(甚至使用--tags)时,它失败了fatal: No tags can describe '<head_commit_hash>'
使用git show-ref --tags,我得到如下内容:
hash1 refs/tags/releases/1.0.0
hash2 refs/tags/releases/1.1.0
hash3 refs/tags/releases/1.1.1
Run Code Online (Sandbox Code Playgroud)
然后git cat-file -p hash1给我:
object hash_of_commit_at_tag
type commit
tag releases/1.0.0
tagger ...
Release: 1.0.0
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用 自己创建并推送标签git tag -a releases/1.0.0 hash_of_commit -m "Release 1.0.0",则会为我 …
要使用GitHub应用程序对用户进行身份验证,我们只需要向loginapi发出两个请求:
GET https://github.com/login/oauth/authorize
POST https://github.com/login/oauth/access_token
Run Code Online (Sandbox Code Playgroud)
现在我们已经使用了token,我们如何撤销它以注销用户?
我拥有许多 github 存储库,我通常每周添加项目。我正在使用 github 页面制作自己的网站,因为我只能在 Github 页面上托管静态网站,因此我将使用 Github API 来自动更新我网站上的新项目。但我也想为其添加预览/示例图像。
我知道有一个名为 Social Preview 的选项,我可以在其中添加要在社交媒体上显示的存储库图像。
虽然我可以从中获取我的所有回购信息,api.github.com但我无法获取我的社交媒体预览图像 URL。
我有一个Rmd文件,它使用httr访问Github的API。在本地,如果我R在渲染之前在控制台中运行以下内容,我可以很好地通过 Github 进行身份验证Rmd:
myapp <- oauth_app("APP", key = "xyz", secret = "pqr")
github_token <- oauth2.0_token(oauth_endpoints("github"), myapp)
Run Code Online (Sandbox Code Playgroud)
密钥和秘密是在 Github 上创建的,并且在我渲染时存在于我的工作区中,因此github_token被选中并且我可以在本地渲染时访问 Github-API 而不会达到访问限制。
现在,同样Rmd在 Travis-CI 中自动构建,然后在我推送 master 分支时部署到 gh-pages。我有这个没有身份验证的工作,但这将我的 Githhub-API 请求限制限制为 60/小时,我需要通过身份验证获得的更高限制。为此,我在 Github 中也设置了个人访问令牌 (PAT);设置 PAT 的页面说“个人访问令牌的功能类似于普通的 OAuth 访问令牌。它们可以用来代替 Git over HTTPS 的密码,或者可以用来通过基本身份验证对 API 进行身份验证”。
这是Rmd我尝试检测渲染是本地还是远程并获取适当令牌的部分内容。但是,当它在 Travis-CI 上运行时,令牌似乎没有被识别,所以我认为我没有正确使用它。
# Figure out the build location, and get the needed token
at_home <- FALSE
at_TCI <- FALSE
token_found <- FALSE …Run Code Online (Sandbox Code Playgroud) (请原谅问题标题;很难总结这个问题。)
在 Facebook 上,你的like东西。在推特上,你们这些follow人。在 GitHub 上,您还可以看到follow人员、star存储库和要点。
所有这些情况都非常相似:这些连接是轻量级的,本身并不是真正的“资源”。例如,这三个 API 都没有公开此类连接的公共 ID。
这就提出了一个问题:公开用于创建/查询/删除这些连接的 API 的“最佳”(就 REST 而言)方法是什么?
Facebook 的做法 [ 1 ]:
GET /:id/likes查询某个对象的喜欢程度(更准确地说,喜欢该对象的用户)
POST /:id/likes喜欢某事(代表经过授权的用户;不需要请求正文)
DELETE /:id/likes不喜欢某些东西(代表经过授权的用户)
查询和创建是有意义的,但DELETE有点“非 RESTful”,因为您实际上并没有删除/:id/likes资源(喜欢该对象的用户数组)。
这种差异在另一种情况下也表现出来[ 2 ]:
GET /me/likes/:id询问你是否喜欢某事因此,查询连接是查询与创建或删除它完全不同的资源。
GitHub倾向于/me/likes/:id以下用户和明星存储库的风格[ 3 ]:
(请注意,GitHub/user代表经过身份验证的用户,如 Facebook 的/me。)
GET /user/starred/:owner/:repo用于查询您是否有一个已加星标的存储库(返回 204 或 404,两者都没有正文)
PUT /user/starred/:owner/:repo用于为回购加注星标(请求中不需要正文)
DELETE /user/starred/:owner/:repo用于取消仓库星标
这更加一致,但不幸的是,这将个体“明星”与群体分开: …
我试图从https://github.com/notifications页面上显示的GitHub中获取相同的信息.不幸的是,标准通知API与该视图并不真正匹配.
如果我从该API获得通知(即使有participating=false),我也看不到网站上显示的所有项目.另一方面,API似乎是基于这个last_read_at想法,我在网站上看到的东西不会自动从通知列表中消失.
有没有办法(没有抓取网站)获得相同的/notifications视图?
github-api ×10
github ×6
git ×2
api ×1
git-commit ×1
git-tag ×1
githooks ×1
httr ×1
javascript ×1
logout ×1
oauth ×1
pygithub ×1
python-3.x ×1
r ×1
rest ×1
travis-ci ×1
web-services ×1