2011-12-08 14 views

risposta

5

Condering un post-commit hook fa:

tutto ciò che il gancio stampato stderr sarà schierò al client, rendendo più facile diagnosticare guasti gancio.

si può controllare se questo non è un semplice problema di citazione:

echo "my message" >&2 

Si può vedere in quelli hook examples che qualsiasi echo->&2 include citazioni.

Il bash chapter on redirection include anche esempi con citazioni.

Tuttavia, come pmod dettagli in his answer, quel messaggio stderr non sarà visibile a meno che lo stato di uscita dello script è diverso da 0, come illustrato in "subversion post-commit hook: print an error message that the user can see?"

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

Come dice pmod di seguito, la schermata di stderr viene stampata sul client solo se questo (o qualsiasi) hook restituisce un valore di ritorno diverso da zero. Questo è probabilmente il problema riscontrato con @CamelBlues. – physicsmichael

+0

Questa risposta è sbagliata. Pmod ha ragione che lo script deve restituire un valore non 0. – Catskul

11

Il gancio mostrerà STDERR solo se fallisce (e come è possibile ora, il gancio non visualizza STDOUT). Pertanto, è necessario restituire un codice diverso dallo script per passare "il mio messaggio" all'utente (è sufficiente aggiungere exit 1 dopo l'eco).

Date un'occhiata here:

Se il post-commit hook restituisce un exit status diverso da zero, il commit sarà non essere interrotta in quanto ha già completato. Tuttavia, qualsiasi cosa che l'hook stampato su stderr verrà reinviata al client, semplificando la diagnostica dei guasti dell'hook.

4

Ho avuto lo stesso problema, con Apache e mod_svn. Si è scoperto che il marshalling non riesce quando il testo da sottoporre a marshalling conteneva &, < o > caratteri. Dopo averli sostituiti con &amp;, &lt; e &gt;, il testo è passato.

+0

Grazie! Questo è esattamente ciò che stavamo affrontando con mod_svn. Non l'avrei mai capito ... –

Problemi correlati