将Github与Pythonanywhere同步

时间:2018-01-01 04:25:05

标签: git github pythonanywhere

我想用github帐户同步pythonanywhere项目。 就像我在github上的项目中进行更改一样,它会在pythonanywhere自动更新。 原谅我,我是github的新手。

3 个答案:

答案 0 :(得分:3)

您可以考虑:

如果你只想在pythonanywhere上开发,你需要生成一个SSH密钥,并将公共密钥添加到你的GitHub帐户,如" How to get your code in and out of PythonAnywhere"。

答案 1 :(得分:3)

我刚刚为自己的Pythonanywhere项目解决了此问题。我不想打扰SSH密钥,所以我使用了Github Webhooks和在我的pythonanywhere帐户上运行的Python脚本。更新源代码后,Python脚本会监听Github发出的Webhook,并在pythonanywhere上执行脚本以提取新文件。

这是场景:

  • 我在本地计算机上的Visual Studio中进行开发,并将代码推送到我的Github存储库中
  • Github会自动发出一个带有json文件的接收后Webhook,我在pythonanywhere服务器上监听
  • 在我的python脚本中,只要触发webhook URL,我就简单地执行pull命令。之后,我在pythonanyh上的所有文件都是最新的

提示:

  • 如果您尚未在pythonanywhere项目上启动git,只需打开bash控制台,导航到您的根文件夹,例如“家庭/用户名”,然后输入git init,然后输入git remote add origin https://github.com/yourusername/yourreponame.git
  • 您可以在github存储库的设置页面中创建接收后Webhook
  • 我使用GitPython包执行拉取请求
  • 下面是我在烧瓶Web服务器中使用的python代码,以等待webhook执行(它基本上执行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

让我知道是否需要更多信息。

答案 2 :(得分:1)

对于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)