Frage

Mein Plan besteht darin, Git zu verwenden, um Änderungen in /etc zu verfolgen, aber beim Festschreiben möchte ich, dass die Person, die die Änderung vornimmt, sich selbst als Autor angibt, indem sie die Option --author in der Befehlszeile hinzufügt.

Daher möchte ich versehentliche Commits als Root verhindern.

Ich habe versucht, diesen Pre-Commit-Hook zu erstellen, aber er funktioniert nicht – git var gibt immer noch root zurück, selbst wenn ich den Autor in der Commit-Zeile angebe.

AUTHOR=`git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/\1/p'`
if [ "$AUTHOR" == "root <root@localhost>" ];
then
   echo "Please commit under your own user name instead of \"$AUTHOR\":"
   echo 'git commit --author="Adrian"'
   echo "or if your name is not already in logs use full ident"
   echo 'git commit --author="Adrian Cornish <a@localhost>"'
   exit 1
fi
exit 0
War es hilfreich?

Lösung

Die aktuelle Version von Git macht das nicht --author Informationen, die Git-Hooks über Umgebungsvariablen, Befehlszeilenargumente oder stdin zur Verfügung stehen.Anstatt jedoch die Verwendung des zu verlangen --author In der Befehlszeile können Sie Benutzer anweisen, das festzulegen GIT_AUTHOR_NAME Und GIT_AUTHOR_EMAIL Umgebungsvariablen:

#!/bin/sh
AUTHORINFO=$(git var GIT_AUTHOR_IDENT) || exit 1
NAME=$(printf '%s\n' "${AUTHORINFO}" | sed -n 's/^\(.*\) <.*$/\1/p')
EMAIL=$(printf '%s\n' "${AUTHORINFO}" | sed -n 's/^.* <\(.*\)> .*$/\1/p')
[ "${NAME}" != root ] && [ "${EMAIL}" != "root@localhost" ] || {
    cat <<EOF >&2
Please commit under your own name and email instead of "${NAME} <${EMAIL}>":
GIT_AUTHOR_NAME="Your Name" GIT_AUTHOR_EMAIL="your@email.com" git commit
EOF
    exit 1
}

Wie --author Argument: Diese Umgebungsvariablen steuern den Autor des Commits.Da sich diese Umgebungsvariablen in der Git-Umgebung befinden, befinden sie sich auch in der Umgebung von pre-commit Haken.Und weil sie sich in der Umgebung der befinden pre-commit Haken, sie werden weitergegeben git var GIT_AUTHOR_IDENT was sie gerne nutzt git commit tut.

Leider ist das Festlegen dieser Variablen viel weniger praktisch als das Verwenden --author.Ich schlage vor, die Git-Entwickler zu kontaktieren und sie zu bitten, diese Umgebungsvariablen festzulegen (unter Verwendung des über übergebenen Werts). --author), bevor Sie das starten pre-commit Haken.

Andere Tipps

Ich habe Folgendes verwendet und das System hinzugefügt .Bashrc.

Es fängt das Volk nicht auf, der eigentlich in dieser Schale wurzelt und lebt, (schlecht!) Aber es hält meine Protokolle nützlich, wenn Folk nur Sudo verwenden. Ich versuche auch, ein / etc Changelog mit Git zu halten - also kann ich sehen, was monatlich monatlich gemacht wurde. generasacodicetagpre.

https://serverfault.com/questions/256754/correct-user-Names-wenn-Tracking-etc-in-git-repository-und-committing-as-woor

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top