有没有办法以编程方式(使用 PyGithub
、 GitPython
或 dulwich
等库)将任何文件直接加载到MyRepo.wiki.git
存储库中?当然,使用Python。
我可以在 PyGithub
的帮助下轻松地将文件直接上传到MyRepo.git
存储库中,但不幸的是,该库没有 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 库的例子 - 那就太好了。
附言我可以使用 Gollum API 来做到这一点吗?
P.P.S. 没有人使用任何类型的 PYTHON 库与*.wiki.git
一起工作吗?我不相信:(
P.P.P.S.如果我不够清楚:我不想以任何方式创建本地存储库。我只想即时修改存储库结构 - 就像我的示例一样。但是使用*.wiki.git存储库。
谢谢!
您无法通过 github web API 访问 github wiki,而 PyGithub 只使用 github Web API。但是你可以将你的GitPython指向wiki的git URL。之后,您可以像访问任何其他存储库一样访问此 git 存储库中的文件。
编辑
正如您所指出的,您限制自己不要创建 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()