2017-03-24 1 views
0

Ich versuche zu vermeiden, versehentlich Binärdateien in meine Repo zu übergeben. Ich dachte über einen Hook nach, der Dateigrößen über einem bestimmten Schwellenwert erkennt, aber ich denke, es wird nützlicher sein, den Pre-Commit-Hook zu beenden, wenn mein Commit eine Datei mit einem ausführbaren Berechtigungsbit ändert.Git Pre-Commit-Hook: Verhindern Sie Commits, die ausführbare Dateien enthalten

Ich weiß, wie man das mit Python/Ruby/anderen Skriptsprachen anpackt, aber im Idealfall kann ich es mit nur bash tun. Irgendwelche Ideen?

Antwort

0

Ich endete damit. Es listet die Dateinamen auf, die relativ zu REPO_ROOT festgeschrieben werden. Es übergibt diese an ls mit -1 Flag für eine pro Zeile und -F Flag, das an ausführbare Dateien * anfügt. Es greps für nachfolgende *. Jedes passende Grep schlägt fehl.

cd $REPO_ROOT 
STAGED_EXECUTABLES=$(git diff --diff-filter=ACMRTUXB --cached HEAD --name-only | xargs ls -1F | egrep '\*$') 
EXECUTABLES_MISSING=$? 
if [ $EXECUTABLES_MISSING -eq 0 ]; then 
    echo "You tried to commit an executable file. Override with \`git commit --no-verify\` if required." > /dev/stderr 
    exit 1 
fi 
Verwandte Themen