Tunelovani GIT konfigurace na server prez SSH aneb konec commitum root [email protected]

Urcite se vam nekdy stalo, ze jste neco commitovali na serveru a do historie jste si zavlekly neco jako:

commit 8f160534070012c87c409e5b19028ad0062f0310
Author: root <[email protected]>
Date: Wed Jun 26 17:16:31 2013 +0000
blocks.pickle, peers.pickle added to .gitignore

Asi to znate. Ale nastavit uzivatele a email na serveru neni nejlepsi reseni, protoze muze pristupovat vice lidi a kazdy chce vytvaret commity pod svym jmenem.

SSH forward proměnných

Resenim muze byt posilani environment promenych po SSH. Vyzaduje to sice zmenu nastaveni SSH serveru, ale je to jediny zpusob, jak nastavit prostredi Gitu automaticky pro konkretniho uzivatele.

Na lokalnim pocitaci

Na straně klienta musíme mít v bashrc vyexportované proměnné, které nastavují v Gitu jméno a email pro autora i commitera. Jsou to tyto proměnné:

export GIT_AUTHOR_NAME="Ondrej Sika"
export GIT_AUTHOR_EMAIL="[email protected]"
export GIT_COMMITTER_NAME=$GIT_AUTHOR_NAME
export GIT_COMMITTER_EMAIL=$GIT_AUTHOR_EMAIL

a je jestě nutné tyto proměnné posílat při SSH spojení. To se dá globálně povolit v SSH konfigu (.ssh/config) takto: Host SendEnv GIT_ A to je na straně klienta vše.

Na serveru

Na serverů je nutné povolit přijímání env proměnných Gitu. Do souboru /etc/ssh/sshd_config je nutné přidat následující řádku:

AcceptEnv GIT_*

A pak jen restartovat SSH server (service ssh restart), odpojit a připojit se znovu. Zda vše zafungovalo, zjistíte když si vypíšete proměnné prostředí pomoci:

[email protected]:~# env | grep GIT
GIT_COMMITTER_NAME=Ondrej Sika
[email protected]
GIT_AUTHOR_NAME=Ondrej Sika
[email protected]

Ted uz vse funguje, dalsi commit na serveru bude uz se spravnym autorem.