8

プログラムで (や などPyGithubのライブラリを使用して) ファイルをリポジトリに直接ロードする方法はありますか? もちろん、Python を使用します。GitPythondulwichMyRepo.wiki.git

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)

では、リポジトリを使用して同じことを行うにはどうすればよいですか? PyGithub ライブラリを使用して例を提供できれば、それは本当に素晴らしいことです。MyRepo.wiki.git

PS Gollum APIを使用してこれを行うことはできますか?

PPS *.wiki.gitPython ライブラリを使って作業した人はいませんか? 私は信じていません:(

PPPS 説明が不十分だった場合: ローカル リポジトリを作成したくありません。オンザフライでレポ構造を変更したいだけです-私の例のように。ただし、*.wiki.git リポジトリを使用します。

ありがとうございました!

4

1 に答える 1

3

PyGithub が排他的に使用する github Web API 経由で github wiki にアクセスすることはできません。ただし、GitPython を wiki の git URL に向けることはできます。その後、他のリポジトリと同様に、この git リポジトリのファイルにアクセスできます。

編集済み

ご指摘のとおり、git リポジトリのローカル クローンを作成しないように制限することをお勧めします。

おそらくすべての外部 HTTP インターフェイスを定義するhttps://github.com/github/gollum/blob/master/lib/gollum/frontend/app.rbのコードを読んでください。

Python 用の適切なラッパーは存在しません。ただし、(部分的に) 作成する場合は、ここで説明したように 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 に答える