2010-10-04 6 views
1

Idéalement, j'aimerais avoir une réponse à la question sur le titre.Comment puis-je savoir si une commande Mercurial a passé une option via un hook externe?

Cependant, pour mon cas particulier, j'ai un script Perl que je veux courir à partir du crochet precommit et je voudrais savoir si Mercurial a été invoqué avec l'option -A passé à la commande commit (par exemple hg commit -A) et si ce n'était pas le cas, est-il possible de le "passer" à ce moment-là?

Répondre

2

Cela va sembler un peu stupide, mais en plus le crochet precommit, il y a une pré-XXXX (et post-XXXX) crochet pour chaque commande, qui obtient des variables différentes:

pre-<command> Exécuter avant d'exécuter la commande associée. Le contenu de la ligne est passé en $ HG_ARGS. Parsed Les arguments de ligne de commande sont passés en tant que $ HG_PATS et $ HG_OPTS. Ceux-ci contiennent représentations de chaîne des données transmises en interne à. $ HG_OPTS est un dictionnaire d'options (avec des options non spécifiées définies sur leurs valeurs par défaut ). $ HG_PATS est une liste d'arguments . Si le crochet renvoie , la commande n'exécute pas et Mercurial renvoie le code d'échec .

Donc faites un crochet pre-commit à la place et vérifiez ces variables.

+0

De quelle page 'man' ou d'autres documents obtenez-vous cela? – gvkv

+0

De la page de manuel 'hgrc': http://www.selenic.com/mercurial/hgrc.5.html –