gitPython: не ошибка git-репозитория, только когда я запускаю скрипт - PullRequest
0 голосов
/ 22 октября 2018

У меня возникли некоторые трудности с созданием собственного слушателя webhook для моего весеннего приложения. Я хочу автоматически запускать git pull и перезапускать мое весеннее приложение при наличии обновлений из bitbucket.однако при извлечении из прослушивателя возникают ошибки.

git.pull () код хорошо работает, когда я вручную использую в подсказке screencapture_prompt

, но когда я запускаю скрипт git.pull () не работает с "fatal: not the git repository" screencapture_script

есть файл .git и

вот код скрипта python мой gitверсия 1.8.3.1

"""Listener module."""
from sys import platform as _platform
from os import environ
import subprocess
import git

from flask import Flask, request
app = Flask(__name__)

# check for ngrok subdomain
# ngrok = environ.get("NGROK_SUBDOMAIN", "")
git_dir = "/root/data/lxper/src/main/resources"
spring_dir = "/root/data/lxper"

def display_intro():
    """Helper method to display introduction message."""
    message = "Webhook server online! Go to http://localhost:5001"
    print message


def display_html(request):
    """
    Helper method to display message in HTML format.

    :param request: HTTP request from flask
    :type  request: werkzeug.local.LocalProxy
    :returns message in HTML format
    :rtype basestring
    """
    url_root = request.url_root
    return "".join([
        """Webhook server online! """,
        """Go to <a href="https://bitbucket.com">Bitbucket</a>""",
        """ to configure your repository webhook for """,
        """<a href="%s/webhook">%s/webhook</a>""" % (url_root, url_root)
    ])


@app.route("/", methods=["GET"])
def index():
    """Endpoint for the root of the Flask app."""
    return display_html(request)


@app.route("/webhook", methods=["GET", "POST"])
def tracking():
    """Endpoint for receiving webhook from bitbucket."""
    if request.method == "POST":
        data = request.get_json()
        commit_author = data["actor"]["username"]
        commit_hash = data["push"]["changes"][0]["new"]["target"]["hash"][:7]
        commit_url = data["push"]["changes"][0]["new"]["target"]["links"]
        commit_url = commit_url["html"]["href"]
        print "Webhook received! %s committed %s" % (commit_author, commit_hash)
        g = git.cmd.Git(git_dir)
        g.pull()
        subprocess.call(["".join(spring_dir, "/restart.sh")])
        return "OK"
    else:
        return display_html(request)

if __name__ == "__main__":
    display_intro()
    app.run(host="0.0.0.0", port=5001, debug=True, use_reloader=False)
...