8

有没有办法以编程方式(使用库PyGithubGitPythondulwich)将任何文件直接加载到MyRepo.wiki.git存储库中?当然,使用 Python。

MyRepo.git我可以在 的帮助下轻松地将文件直接上传到存储库PyGithub,但不幸的是,这个库没有 API 或使用MyRepo.wiki.git存储库的方法。

这是我如何将文件上传到MyRepo.git存储库的方法:

github_repo = github_account.get_user().get_repo('MyRepo')

head_ref = gh_repo.get_git_ref("heads/%s" % github_branch)
latest_commit = gh_repo.get_git_commit(head_ref.object.sha)

base_tree = latest_commit.tree

new_tree = gh_repo.create_git_tree(
    [github.InputGitTreeElement(
        path="test.txt",
        mode='100755' if github_executable else '100644',
        type='blob',
        content="test"
    )],
    base_tree)

new_commit = gh_repo.create_git_commit(
    message="test commit message",
    parents=[latest_commit],
    tree=new_tree)

head_ref.edit(sha=new_commit.sha, force=False)

那么,除了存储库,我怎么能做同样的事情呢?MyRepo.wiki.git如果你能提供一个使用 PyGithub 库的例子——那就太好了。

PS 我可以使用 Gollum API 做到这一点吗?

PPS 没有人*.wiki.git使用过任何类型的 python 库吗?我不相信 :(

PPPS 如果我不够清楚:我不想以任何方式创建本地存储库。我只想即时修改 repo 结构——就像我的示例所做的那样。但是使用 *.wiki.git 存储库。

谢谢!

4

1 回答 1

3

您无法通过 PyGithub 专门使用的 github Web API 访问 github wiki。但是你可以将你的 GitPython 指向 wiki 的 git URL。之后,您可以像访问任何其他 repo 一样访问此 git repo 中的文件。

已编辑

正如您所指出的,您限制自己不要创建 git 存储库的本地克隆,我建议您执行以下操作:

阅读https://github.com/github/gollum/blob/master/lib/gollum/frontend/app.rb中的代码,它可能定义了所有外部 HTTP 接口。

不存在一个很好的 Python 包装器。但是当你做一个(部分)比我推荐使用这里提到的 REST 客户端库时:https ://stackoverflow.com/questions/2176561/which-is-the-best-python-library-to-make-rest -request-like-put-get-delete-pos

如果您现在认为,您的限制可能会改变:

文档提供了一个很好的教程,涵盖了您需要一点 git 知识的所有内容。它归结为:

import git
repo = git.Repo.clone_from("git@github.com:user/project.wiki.git", "some-path")
repo.index.add(["your-new-file"])
repo.index.commit("your message to the world")
repo.remotes.origin.push()
于 2013-02-03T15:22:10.920 回答