2016-04-20 10 views
0

Wie man Nachrichten von commits erhält, die vom Server im pre-receive Haken mit bash empfangen werden?pre-receive hook - wie man Nachrichten von commits bekommt

Ich habe zu drucken versucht:

echo >&2 $1 $2 $3 

aber nur ich:

remote: 62e1ce5353f74f21eafac129dcff0074b2cc7a19 f58a366385ba105ecv1e2f3fbfe99ca60be737c72 refs/heads/master 

Antwort

1

Soweit ich erinnere Sie den alten Hash bekommen, den neuen Hash und den Referee, der gedrückt wird, . Also benutze einfach git-log um zu bekommen, was du willst.

Nur die Betreffzeilen: git log --format="%s" $1..$2
Nur die Körperlinien: git log --format="%b" $1..$2
Betreff und Linien: git log --format="%B" $1..$2

Weitere Formatoptionen finden Sie in der Manpage von git log

+0

Ihnen sehr danken. Es hat funktioniert. Obwohl alle Nachrichten in einer Zeile gedruckt sind, und ich sie separat überprüfen möchte, habe ich mit% f einen kleinen Trick gemacht, es gibt uns anstelle von Leerzeichen '-'. So können Leerzeichen jetzt Trennzeichen zwischen Commits sein. Es ist hilfreich, bis es keinen Unterschied macht, ob jemand "-" tatsächlich verwendet hat oder nicht. Wie auch immer, kann für leere Nachrichten validieren und nur Nachrichten "reparieren", also ja, funktioniert genial :) – Sarseth

+1

Es lohnt sich, darauf hinzuweisen, denke ich, dass diese gleiche Technik (aber mit vielen weiteren Funktionen) im Post-Receive verwendet wird -email'-Hook mit git (gefunden in '.../contrib/hooks/post-receive-email', wo der' ... '-Teil je nach Konfiguration variiert). Siehe 'generate_update_branch_email' für den typischen Update-Pfad und notieren Sie alle anderen Spezialfälle, die an anderer Stelle behandelt werden, für die Erstellung von Zweigen und Tags und so weiter. – torek