Pygithub: [Contoh] Contoh lengkap komit banyak file

Dibuat pada 30 Jul 2020  ·  5Komentar  ·  Sumber: PyGithub/PyGithub

Saya pindah dari gitlab ke github.
Kami menggunakan https://github.com/python-gitlab/python-gitlab sebagai perpustakaan
Untuk membuat komit untuk banyak file, kami menggunakan persis contoh ini: https://python-gitlab.readthedocs.io/en/stable/gl_objects/commits.html

Saya menemukan create_git_commit akan melakukan hal yang sama di github tetapi kekurangan dokumen.
Bisakah seseorang membantu memberikan contoh pembuatan staf Pohon dll.?

Terima kasih banyak.

stale

Komentar yang paling membantu

Berikut adalah contoh lengkap yang disarikan dari penggunaan saya yang sebenarnya:
Saya mendapatkan banyak petunjuk dari ini https://github.com/PyGithub/PyGithub/issues/863#issuecomment -517927446

Untuk berkomitmen pada cabang utama

import github
g = github.Github(base_url="https://git.mycompany.com/api/v3",login_or_token="mytoken")
repo = g.get_repo('myorg/myrepo')
# you can read file content into blob, here just use str for example
blob1 = repo.create_git_blob("file-content", "utf-8")
element1 = github.InputGitTreeElement(path="path-in-repo.ext", mode='100644', type='blob', sha=blob1.sha)
blob2 = repo.create_git_blob("file-content2", "utf-8")
element2 = github.InputGitTreeElement(path="folder/path-in-repo.ext", mode='100644', type='blob', sha=blob2.sha)
head_sha = repo.get_branch('master').commit.sha
base_tree = repo.get_git_tree(sha=head_sha)
tree = repo.create_git_tree([element1, element2], base_tree)
parent = repo.get_git_commit(sha=head_sha)
commit = repo.create_git_commit("commit_message", tree, [parent])
master_refs = self.github_repo.get_git_ref('heads/master')
master_ref.edit(sha=commit.sha)

Semua 5 komentar

nah akhirnya saya akhiri juga dengan proses lengkapnya...semoga nanti bisa di share...

Berikut adalah contoh lengkap yang disarikan dari penggunaan saya yang sebenarnya:
Saya mendapatkan banyak petunjuk dari ini https://github.com/PyGithub/PyGithub/issues/863#issuecomment -517927446

Untuk berkomitmen pada cabang utama

import github
g = github.Github(base_url="https://git.mycompany.com/api/v3",login_or_token="mytoken")
repo = g.get_repo('myorg/myrepo')
# you can read file content into blob, here just use str for example
blob1 = repo.create_git_blob("file-content", "utf-8")
element1 = github.InputGitTreeElement(path="path-in-repo.ext", mode='100644', type='blob', sha=blob1.sha)
blob2 = repo.create_git_blob("file-content2", "utf-8")
element2 = github.InputGitTreeElement(path="folder/path-in-repo.ext", mode='100644', type='blob', sha=blob2.sha)
head_sha = repo.get_branch('master').commit.sha
base_tree = repo.get_git_tree(sha=head_sha)
tree = repo.create_git_tree([element1, element2], base_tree)
parent = repo.get_git_commit(sha=head_sha)
commit = repo.create_git_commit("commit_message", tree, [parent])
master_refs = self.github_repo.get_git_ref('heads/master')
master_ref.edit(sha=commit.sha)

Masalah ini secara otomatis ditandai sebagai basi karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi. Terima kasih atas kontribusi Anda.

Saya ingin melakukan sesuatu yang serupa (yaitu mengkomit banyak file sekaligus), tetapi kali ini di cabang. Di bawah ini adalah kode yang berfungsi (beri tahu saya jika itu dapat dioptimalkan)

import github
g = github.Github("mytoken")
repo = g.get_repo('myorg/myrepo')

blob1 = repo.create_git_blob("file-content", "utf-8")
element1 = github.InputGitTreeElement(path="path-in-repo.ext", mode='100644', type='blob', sha=blob1.sha)
blob2 = repo.create_git_blob("file-content2", "utf-8")
element2 = github.InputGitTreeElement(path="folder/path-in-repo.ext", mode='100644', type='blob', sha=blob2.sha)

head_sha = repo.get_branch('master').commit.sha

# everything above is identical to <strong i="6">@xpdable</strong> 
# but here I create the branch
branch = repo.create_git_ref(ref=f"refs/heads/branch-name", sha=head_sha)
branch_sha = repo.get_branch("branch-name").commit.sha

# similar to <strong i="7">@xpdable</strong> but replacing head_sha with branch_sha
base_tree = repo.get_git_tree(sha=branch_sha)
tree = repo.create_git_tree([configuration_element, stats_element], base_tree)
parent = repo.get_git_commit(sha=branch_sha)
commit = repo.create_git_commit("commit_message", tree, [parent])
branch_refs = repo.get_git_ref("heads/branch-name")
branch_refs.edit(sha=commit.sha)

# optional : open a PR with the new branch
repo.create_pull(title="PR title", body="PR body", base="master", head="branch-name")

Adakah saran tentang cara menghapus file sebagai bagian dari beberapa file yang dikomit?

Beberapa posting berbicara tentang membuat pohon baru dengan referensi ke jalur dengan null sha, atau memodifikasi pohon yang ada termasuk. ide tentang perulangan dan menemukan semua referensi ke gumpalan yang dihapus?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat