2011-12-08 13 views

Odpowiedz

5

Condering post-commit hook robi:

coś, że hak wydrukowany na stderr będą przetaczane z powrotem do klienta, dzięki czemu łatwiej zdiagnozować awarie haka.

można sprawdzić, czy nie jest to proste zagadnienie cytat:

echo "my message" >&2 

można zobaczyć w tych hook examples że każdy echo do >&2 zawiera cytaty.

The bash chapter on redirection zawiera również przykłady z cytatami.

Jednakże, jak pmod szczegółów w his answer, że wiadomość stderr nie będzie widoczny, chyba że kod zakończenia skryptu różni się od 0, jak pokazano w „subversion post-commit hook: print an error message that the user can see?

#!/bin/bash 
echo "test" >&2 
exit 1 
+0

Jak to zostało powiedziane poniżej, ekran stderr jest drukowany tylko na kliencie, jeśli ten (lub dowolny) hak zwraca niezerową wartość zwracaną. To był prawdopodobnie problem napotkany na @CamelBlues. – physicsmichael

+0

Ta odpowiedź jest błędna. Pmod ma rację, że skrypt musi zwrócić wartość inną niż 0. – Catskul

11

Hak pokaże STDERR tylko jeśli się nie powiedzie (i jak możesz teraz, hook nie wyświetla STDOUT). W związku z tym musisz zwrócić niezerowy kod ze swojego skryptu, aby przekazać użytkownikowi "moją wiadomość" (po echo dodaj po prostu exit 1).

Spójrz here:

Jeśli post-commit zwraca niezerowy kod zakończenia, commit będzie nie zostanie przerwana, ponieważ został już zakończony. Jednak wszystko, co zostanie wydrukowane na stderr, zostanie przekazane klientowi, , co ułatwia diagnozowanie błędów haków.

4

miałem ten sam problem, z Apache i mod_svn. Okazało się, że zestawianie zakończyło się niepowodzeniem, gdy dyskutowany tekst zawierał znaki &, < lub >. Po zamianie ich na tekst &amp;, &lt; i &gt; tekst został sprawdzony.

+0

Dzięki! Właśnie z tym mieliśmy do czynienia przy pomocy mod_svn. Nigdy bym tego nie rozgryzł ... –

Powiązane problemy