2017-07-24 6 views
1

Hier ist mein Post erhalten Haken:Wie kann ich Gitolite Post-Receive-Hook machen, um den vollständigen Pfad zur modifizierten Datei anzuzeigen?

#!/bin/bash 

while read oldrev newrev ref; do 
     git diff --name-only oldrev..newrev 
     git --work-tree=/tmp checkout HEAD -- plugin.yml 
     echo -e "Test complete maybe..." | tee >(exec logger) 
done 

Und hier ist die Ausgabe:

enter image description here

Und wenn ich durch OLDREV ersetzen oldrev..newrev - Newrev, der Ausgang ist: enter image description here

Ich brauche Ordner, in denen diese Datei (plugin.yml) geändert wurde. Vielen Dank.

+0

Ja, dies sollte $ oldrev und $ newrev innerhalb der Schleife sein. Weitere Beispiele finden Sie unter https://www.cyberciti.biz/faq/unix-linux-iterate-over-a-variable-range-of-numbers-in-bash/ oder https://www.cyberciti.biz/faq/bash-for-loop/ – VonC

+0

JA, es zeigt es: D Und die letzte Frage: Wie kann ich diesen Pfad in die Variable setzen? Vielleicht test = $ {git diff - nur-name oldrev..newrev}? –

+0

Ja, außer es ist test = $(), nicht $ {}. Siehe "Befehlsersetzung" unter https://unix.stackexchange.com/a/4570/7490 – VonC

Antwort

1

Zuerst kann jeder Haken einfach seine execution path überprüfen: das wird Ihnen den Namen des Repos geben.

Zweitens, die git diff --name-only ich in your previous question erwähnt wird geben Sie den relativen Pfad der Datei geschoben (einschließlich mod1/2).

git diff --name-only $1..$2 

da der post-Empfang Haken oldrev, newrevref und auf Standard-Eingang empfängt.

+0

- Nur-Name existiert nicht? "Ja wirklich?" Das klingt lustig .. –

+0

@AndrewGorpenko https://git-scm.com/docs/git-diff#git-diff---name-only – VonC

+0

Code aktualisiert und hinzugefügt Ausgabe. –

Verwandte Themen