Comment puis-je déboguer un pre-commit script hook Subversion?
-
25-10-2019 - |
Question
Cela semble être question fondamentale mais je suis assommé. Comment tester les scripts que l'on a écrit pour accrochage fin.
Comme nous le savons ce script est en cours d'exécution en arrière-plan et seule erreur est de lancer de retour sur nous par la console SVN. J'ai essayé avec point d'arrêt, mais il n'y a rien que je peux contribuer au script.
Est-ce que quelqu'un a une idée à ce sujet. Je vous écris script crochet svn sur les fenêtres tant déjà des scripts écrits crochet soit ne fonctionne pas ou ne donnant pas la sortie désirée par exemple l'enregistrement type MIME et script eol de apache.
La solution
Je peux vous donner quelques conseils:
- Vous devez imprimer à
STDERR
. C'est la seule façon que votre script vous rendra compte des erreurs. Vous pouvez l'utiliser pour le test réel. - J'ai écrit mon script de pré-engageront à prendre à la fois un
-t
ou un paramètre de ligne de commande-r
. Lors de l'exécution d'un crochet de pré-validation, je peux utiliser le paramètre-t
pour passer dans le numéro de transaction. Lors de l'exécution depuis la ligne de commande, je peux utiliser le paramètre-r
et lui donner un numéro de révision à courir contre. - J'ai aussi écrit une fonction
debug
qui m'a permis d'imprimer des informations quand je définissaient un paramètre de ligne de commande-debug
. Je pouvais et désactiver cette fonction. - Si vous testez réellement votre crochet, utilisez une copie du référentiel, et assurez-vous que le script shell
pre-commit
échouera en terminant avec un code de sortie de2
. Vous ne serez jamais engager votre transaction, mais vous obtenez des messages dans votre script pre-commit ce qui se passe (qui est, si vous imprimez tout à STDERR).
Vous pouvez regarder les scripts hook que je développe pour obtenir quelques idées. J'utilise le module Perl Data::Dumper
qui peut aider à imprimer des structures de données dans mon script.