【发布时间】:2018-06-11 08:12:15
【问题描述】:
我想将 pythonanywhere 项目与 github 帐户同步。 就像如果我在 github 上对我的项目进行更改,它会在 pythonanywhere 自动更新。 请原谅我是 github 新手。
【问题讨论】:
标签: git github pythonanywhere
我想将 pythonanywhere 项目与 github 帐户同步。 就像如果我在 github 上对我的项目进行更改,它会在 pythonanywhere 自动更新。 请原谅我是 github 新手。
【问题讨论】:
标签: git github pythonanywhere
我刚刚为我自己的 Pythonanywhere 项目解决了这个问题。我不想打扰 SSH 密钥,所以我使用了 Github webhooks 和一个在我的 pythonanywhere 帐户上运行的 Python 脚本。 Python 脚本在源代码更新时侦听 Github 发出的 webhook,并在 pythonanywhere 上执行脚本以拉入新文件。
这是场景:
提示:
git init,然后输入git remote add origin https://github.com/yourusername/yourreponame.git
.git/hooks/ 下。这个 bash 文件将执行一个简单的git pull origin master
from flask import Flask, request
import git
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def webhook():
if request.method == 'POST':
repo = git.Repo('./myproject')
origin = repo.remotes.origin
repo.create_head('master',
origin.refs.master).set_tracking_branch(origin.refs.master).checkout()
origin.pull()
return '', 200
else:
return '', 400
#
# Below here follows you python back-end code
#
如果您需要更多信息,请告诉我。
【讨论】:
你可以考虑:
如果您只想在 pythonanywhere 上进行开发,您需要生成一个 SSH 密钥,并将公共密钥添加到您的 GitHub 帐户,如“How to get your code in and out of PythonAnywhere”中的建议。
【讨论】:
对于 Django:
首先你需要安装 gitpython:pip install gitpython
更新views.py:
from django.http import HttpResponse
from git import Repo #
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def webhook(request):
if request.method == 'POST':
repo = Repo('./django-schools')
git = repo.git
git.checkout('master')
git.pull()
return HttpResponse('pulled_success')
return HttpResponse('get_request', status=400)
【讨论】: