Sök…


Introduktion

Liksom många andra versionskontrollsystem har Git ett sätt att avfyra anpassade skript när vissa viktiga åtgärder inträffar. Det finns två grupper av dessa krokar: klientsidan och serversidan. Hakar på klientsidan utlöses av operationer som åtagande och sammanslagning, medan krokar på serversidan körs på nätverksoperationer som att ta emot drivna åtaganden. Du kan använda dessa krokar av alla möjliga skäl.

Installera en krok

Krokarna lagras alla i underkatalogen för hooks i Git-katalogen. I de flesta projekt är det .git/hooks .

För att aktivera ett krokskript, lägger du en fil i underkatalogen för hooks i din .git katalog som heter lämpligt (utan någon förlängning) och är körbar.

Git pre-push krok

pre-push- skriptet kallas med git push när det har kontrollerat fjärrstatus, men innan något har tryckts. Om detta skript avslutas med en status som inte är noll, kommer inget att tryckas.

Denna krok kallas med följande parametrar:

 $1 -- Name of the remote to which the push is being done (Ex: origin)
 $2 -- URL to which the push is being done (Ex: https://<host>:<port>/<username>/<project_name>.git)

Information om de åtaganden som skjuts levereras som rader till standardinmatningen i formen:

<local_ref> <local_sha1> <remote_ref> <remote_sha1>

Provvärden:

local_ref = refs/heads/master
local_sha1 = 68a07ee4f6af8271dc40caae6cc23f283122ed11
remote_ref = refs/heads/master
remote_sha1 = efd4d512f34b11e3cf5c12433bbedd4b1532716f

Nedanför exemplet pre-push-skript togs från standard pre-push.sample som skapades automatiskt när ett nytt arkiv initialiseras med git init

# This sample shows how to prevent push of commits where the log message starts
# with "WIP" (work in progress).

remote="$1"
url="$2"

z40=0000000000000000000000000000000000000000

while read local_ref local_sha remote_ref remote_sha
do
    if [ "$local_sha" = $z40 ]
    then
        # Handle delete
        :
    else
        if [ "$remote_sha" = $z40 ]
        then
            # New branch, examine all commits
            range="$local_sha"
        else
            # Update to existing branch, examine new commits
            range="$remote_sha..$local_sha"
        fi

        # Check for WIP commit
        commit=`git rev-list -n 1 --grep '^WIP' "$range"`
        if [ -n "$commit" ]
        then
            echo >&2 "Found WIP commit in $local_ref, not pushing"
            exit 1
        fi
    fi
done

exit 0


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow