2010-10-13 2 views
1

En écrivant un crochet pre-commit pour subversion, je suis dans une situation où mon appel à svnlook commeEst-ce que "svnlook cat" peut être forcé à sortir du texte correctement formaté pendant une transaction de validation?

MESSAGE=`svnlook cat -t $TXN $REPOS $FILE` 

résultats dans une valeur retournée qui consiste en une ligne continue simple, au lieu du fichier correctement formaté (s) qui a changé dans la tentative de validation. Ceci est problématique car le formatage de la source est important pour la compilation. Une idée de pourquoi tout cela finit sur une seule ligne? Est-ce que je manque quelque chose?

Répondre

1

La mise en forme est toujours là, mais disparaît lorsque vous essayez d'utiliser $MESSAGE sans guillemets. Le shell convertit toutes les séquences d'espace blanc en un seul espace sauf s'il est protégé par des guillemets. Pour donner un exemple:

$ var='foo 
    bar' 
$ echo $var 
> foo bar 
$ echo "$var" 
> foo 
> bar 
0

Je viens de rencontrer le même problème à la condition que les fins de ligne dans le fichier se composent d'un seul CR (0x0D). Cela fonctionne bien avec LF (0x0A) et CRLF (0x0D0A). Le chat de commande shell a le même problème. Editer: Si utilisé dans un script Perl, le résultat est une ligne continue unique. Si elle est utilisée directement sur la ligne de commande du shell, le résultat est que toute la ligne est mélangée verticalement en une ligne courte. Strictement technique, c'est le bon résultat - pas de saut de ligne, juste des retours chariot. Mais cela n'a pas beaucoup de valeur pratique.

Questions connexes