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

时间:2016-09-28 02:41:54

标签: python github github-api

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

1 个答案:

答案 0 :(得分:3)

因此,您可以通过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设置上创作了它。