Domanda

Il mio piano è utilizzare GIT per tenere traccia dei cambiamenti in / ecc. Ma quando commitò che voglio avere la persona che effettua la modifica specificata come autore aggiungendo l'opzione -

Quindi vorrei fermare i commit accidentali come root.

Ho provato a creare questo gancio di pre-commit ma non funziona - GIT VAR sta ancora restituendo la root anche se specifico l'autore su commit line.

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
.

È stato utile?

Soluzione

La versione corrente di Git non ha le informazioni --author disponibili per GIT Ganci tramite variabili di ambiente, argomenti della riga di comando o STDIN. Tuttavia, invece di richiedere l'uso della riga di comando --author, è possibile istruire gli utenti di impostare le variabili di ambiente GIT_AUTHOR_NAME e GIT_AUTHOR_EMAIL:

#!/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
}
.

Come l'argomento --author, queste variabili di ambiente controllano l'autore dell'autorizzazione. Poiché queste variabili di ambiente sono nell'ambiente di Git, sono anche nell'ambiente del gancio pre-commit. E poiché sono nell'ambiente del gancio pre-commit, sono passati a git var GIT_AUTHOR_IDENT che li utilizza come git commit.

Sfortunatamente, l'impostazione di queste variabili è molto meno conveniente rispetto all'utilizzo di --author. Suggerisco di contattare gli sviluppatori Git e richiedendo di impostare queste variabili di ambiente (utilizzando il valore passato tramite --author) prima di avviare il gancio pre-commit.

Altri suggerimenti

Ho usato quanto segue, aggiungendo questo ai sistemi .bashrc.

Non prenderà la gente che ha in realtà su radice e vivi in quel guscio, (cattivo!) Ma tiene i miei tronchi utili quando la gente usa solo sudo. Anch'io sto cercando di mantenere un Changelog a / ecc con Git - così posso vedere cosa è stato fatto mese mese-mese.

#I want everyone to check in changes to /etc files, but also want their names even when they use sudo.
export GIT_COMMITTER_EMAIL=${USER}@ourcompany.co.nz
export GIT_AUTHOR_EMAIL=${USER}@ourcompany.co.nz
.

https://serverfault.com/questions/256754/Correct-User-NAMES-WHEN-Racking-etc-in-git-repository-and-committing-as-Root

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top