我正在开发一个基于 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,
)
您需要检查它是否返回一个您希望验证文件是否已成功上传的对象。您还可以指定 committer
和 author
字典,这样您就可以将提交归因于您的服务,这样人们就不会假设该人是在本地 git 集上创作的-上。
关于Python 在没有本地工作目录的情况下将文件推送到 Github 远程仓库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39737192/