Python 在没有本地工作目录的情况下将文件推送到 Github 远程仓库

标签 python github github-api

我正在开发一个基于 Python 的网络应用程序,用于协作编辑 xml/文档,客户的一个要求是用户应该能够将他们创建(并保存在服务器上)的文件直接推送到 Github 远程仓库,无需在服务器上创建本地克隆(即,没有本地工作目录或任何类型的跟踪)。在 GUI 术语中,这对应于转到 Github 网站并通过单击“上传文件”或“创建新文件”按钮将文件手动添加到远程仓库,或者只需在 Github 网站上编辑远程仓库上的现有文件然后在 Web 浏览器中提交更改。我想知道这个功能是否有可能通过使用一些 Python Github 模块或使用 Github API 或其他东西从头开始编写一些代码来实现?

最佳答案

因此您可以通过 API 创建文件,如果用户有自己的 GitHub 帐户,您可以作为他们上传。

让我们以 github3.py 为例来说明如何做到这一点:

import github3

gh = github3.login(username='foo', password='bar')
repository = gh.repository('organization-name', 'repository-name')
for file_info in files_to_upload:
    with open(file_info, 'rb') as fd:
        contents = fd.read()
    repository.create_file(
        path=file_info,
        message='Start tracking {!r}'.format(file_info),
        content=contents,
    )

您需要检查它是否返回一个您希望验证文件是否已成功上传的对象。您还可以指定 committerauthor 字典,这样您就可以将提交归因于您的服务,这样人们就不会假设该人是在本地 git 集上创作的-上。

关于Python 在没有本地工作目录的情况下将文件推送到 Github 远程仓库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39737192/

相关文章:

python - 在 Numpy 中使用 argsort 对列表进行排序?

docker - 在Heroku上设置多阶段Docker构建

git - 在不更改时间戳的情况下修改以前的提交

Git 和 Trac(或类似的)

r - 使用 httr 通过 Travis-CI 在 Github 进行身份验证以及本地身份验证(本地有效,远程无效)

python - 具有交叉熵损失的 Softmax 激活导致两个类别的输出分别准确地收敛于 0 和 1

python - 应用 Pandas 创建列方法和函数

python - 如何在一个主循环中创建两个 Tk 实例?

c# - retrofit 不起作用(Github API)

git - 通过终端在 Github/Gitlab 上创建一个新项目