Git-Post-Receive-Hook, der Commit-Nachrichten erfasst und an die URL zurücksendet

Lesezeit: 2 Minuten

Wir verwenden ein Ticketsystem, das ich automatisch aktualisieren möchte, wenn Entwickler ihre Änderungen auf den Server übertragen. Um es zu aktualisieren, muss ich nur eine bestimmte URL mit der Commit-Nachricht als GET-Variable bereitstellen. Die aufgerufene Seite protokolliert dann diese Änderung. Ich weiß, mein Weg ist mit Haken, aber ich bin weder mit Bash noch mit Perl vertraut, daher ist es ziemlich herausfordernd.

Das möchte ich erreichen:

  • Entwickler PUSHes auf den Server
  • post-receive Hook läuft und prüft, welche verschiedenen Commits neu sind (weil es mehrere in einem Push geben könnte)
  • Es durchläuft sie und öffnet für jeden Commit eine URL mit der Commit-Nachricht (curl http://server.com/logthis.asp?msg=Here_goes_the_commit_message, so ähnlich)

Das ist es. Obwohl ich ausgecheckt habe manche Proben Im Zusammenhang mit dieser Art von Idee tut keiner genau dies. Wie könnte dies geschehen?

Die wichtigste PITA besteht darin, die korrekte Liste neuer Revisionen zu isolieren, die ich aus /usr/share/doc/git/contrib/hooks/post-receive-email(show_new_revisions) ausgeliehen habe.

while read oval nval ref ; do
    if expr "$ref" : "^refs/heads/"; then
        if expr "$oval" : '0*$' >/dev/null
        then
            revspec=$nval
        else
            revspec=$oval..$nval
        fi
        other_branches=$(git for-each-ref --format="%(refname)" refs/heads/ |
            grep -F -v $ref)

        # You may want to collect the revisions to sort out
        # duplicates before the transmission to the bugtracker,
        # but not sorting is easier ;-)
        for revision in `git rev-parse --not $other_branches | git rev-list --stdin $revspec`; do
                    # I don't know if you need to url-escape the content
                    # Also you may want to transmit the data in a POST request,
            wget "http://server.com/logthis.asp?msg=$(git log $revision~1..$revision)"
        done
    fi
done

  • Vorsichtig. Wenn Sie beide eine Revision erstellen und sie im selben Push mit einem anderen Zweig zusammenführen, wird sie vom obigen Code übersprungen.

    – Mattweiß

    8. Dezember 14 um 0:05 Uhr

.

649450cookie-checkGit-Post-Receive-Hook, der Commit-Nachrichten erfasst und an die URL zurücksendet

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy