Ich bereite das Tracking-System eines Kunden auf, das Mercurial (Version 2.0.2) verwendet, um den Status zu erfassen, und alle Änderungen automatisch jede Stunde festschreibt. Ich habe es von Cron nach Rundeck migriert, damit sie den Status erhalten, wenn/falls die Dinge fehlschlagen, was sofort dazu führte, dass der Job begann, die fehlgeschlagenen Aufträge von Rundeck aufgrund von "nichts änderte" -Fehler zu füllen. Ich ging sofort zu Google und ich bin überrascht, dass dieses Problem ausgelöst wird, aber ich habe keine Antworten gefunden. *
Es scheint wie drei sollte eine grundlegende, saubere SH oder Bash Option sein (aber ihre Befehlszeile Umgebung unterstützt Python und pip-Module, falls erforderlich).
My go-to-Antworten für diese Art der Sache ist:
- Ausgabe des ‚richtige‘ Befehl, bevor Sie den Befehl ausgeben, die ausfallen könnte, wenn die Dinge in Ordnung sind, dann Ausfall des Befehls gibt tatsächlich Fehler
- die Dokumentation zu lesen und die Fehlercodes verwenden, um zu unterscheiden, was passiert ist, die Umsetzung geeignete Antworten **
- eine Variante von 1 # tun oder # 2, wo ich den Befehl ausgeben und grep die Ausgabe ***
* Ich werde zugeben, dass ich mich schwer damit beschäftige, nach hg-Material zu suchen, teilweise wegen der Fülle an Informationen, der Ähnlichkeit mit git und meiner schlechten Angewohnheit, in git-Begriffen zu denken. Davon abgesehen sehe ich das Problem dort, einschließlich "[issue2341] hg commit returns error when nothing changed". Ich habe keine Antworten darauf gefunden und finde keine entsprechende Diskussion zu StackOverflow.
** Ich sehe um https://www.selenic.com/mercurial/hg.1.html, dass hg commit "0 zurück auf Erfolg, 1 wenn nichts geändert hat." Leider weiß ich, dass es andere Möglichkeiten gibt, sich zu scheitern. Gerade habe ich einen Dummy-Mercurial-Patch (mq) erstellt und einen Commit mit "abort: cannot commit over an applied mq patch
" versucht. In diesem Fall war der Rückgabecode 255.
*** Ich nehme an, dass ich die anfängliche Festschreibung und Erfassung Fehlercode, stdout und stderr ausgeben kann; Verarbeite dann den Text, wenn Return 1 und Fehler ist, oder fahre fort, wie es angemessen ist.
[Es gab viele Antworten] (http://bz.mercurial-scm.org/show_bug.cgi?id=2341), aber sie waren nur Variationen über diese alte Open-Source-Kastanie "es ist kein Käfer, du benutzt es nur falsch. Lass uns in Ruhe." – miken32
Ordentlich notiert - ich meinte, dass ich keine Antworten sah, "die ich mochte" – sage