Comment puis-je empêcher la soumission d'une liste de change perforce vide d'être une erreur?

StackOverflow https://stackoverflow.com/questions/5032688

Question

Tenter de soumettre une liste de change sans fichiers est considérée par la performité comme une erreur (p4 submit ... Renvoie le code de sortie 1). Cela provoque une panne de construction d'intégration périodique sur notre serveur de construction (nous utilisons Système d'impulsion de Zutubi); Dans ce cas, je préfère que la construction réussisse, peut-être avec un avertissement.

Pulse a des fonctionnalités de remappage de code de sortie, mais les performances ne semblent pas désambigurées entre un échec à soumettre une liste de change vide et tout autre échec de soumission (une telle défaillance de déclenchement de validation, que je fais veulent échouer la construction).

La solution immédiatement évidente (mais, dans mon esprit, inélégant) qui vient à l'esprit est d'envelopper l'exécution de p4 submit dans un fichier batch qui vérifie d'abord si la liste de change cible est vide en comptant les lignes de sortie de p4 opened - ou simplement analyser la sortie de p4 submit pour le message "sans fichiers" et renvoyant avec succès à partir du fichier batch.

Y a-t-il de meilleures techniques pour gérer cela que je ne vois pas?

Était-ce utile?

La solution

Il n'y a probablement pas de bonnes techniques juste avec les performances, si je comprends correctement votre problème. Le problème, comme vous l'avez vu, est que les codes de retour des exécutions de la ligne de commande perforce sont, bien, ambigus. Une soumission d'un change la liste de change vide est-elle vraiment une erreur? Peut-être, peut-être pas - pourrait dépendre de qui vous demandez.

Ce n'est pas vraiment si conseillé d'examiner les codes de retour des commandes «p4». Votre meilleur pari comme vous l'avez suggéré est d'analyser la sortie de la commande, puis de faire ce dont vous avez besoin.

La plupart des commandes prennent désormais en charge l'option -ztag (voir «P4 Help Usage»), qui sera pourrait faciliter l'analyse de la sortie, selon ce que vous voulez faire. Si votre cas, il est probablement suffisant pour simplement chercher le texte dans la sortie, puis décider quoi faire à partir de là.

Autres conseils

Avant d'essayer de soumettre une liste de change, vous pouvez d'abord tenter de le supprimer.

p4 change -d ###

Cette opération ne réussira que si le ChangeList est vide, alors ne le soumettez pas (vous venez de le supprimer). S'il échoue, il y a des fichiers dans la liste de change, alors allez-y et soumettez-les.

Cependant, si vous utilisez des emplois, cela ne fonctionnera pas pour vous car vous ne pouvez pas supprimer un change la liste qui a un travail attaché, même si elle est vide.

J'ai finalement fini par analyser la sortie dans un fichier batch, en utilisant quelque chose comme ceci:

for /f "delims=" %%I in ('p4 submit -d "<message>" 2^>^&1 1^>NUL') do    
set SUBMIT_OUTPUT=%%I
if "%SUBMIT_OUTPUT%"=="No files to submit from the default changelist." exit /b 0

C'est nécessaire depuis p4Le message "pas de fichiers" est réellement écrit à Stderr normalement. Si la sortie est le message que je considère "sûr" je sors avec un code de sortie zéro, sinon le script se poursuivra avec le niveau d'erreur défini par le p4 commande.

Notez que le message "aucun fichier" pour un numéroté ChangeList est légèrement différent, si vous utilisez cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top