4 Stimmen

Mercurial Kommandozeilen-Client, der Befehle, Optionen und Argumente aus einer Datei liest?

Gibt es eine Möglichkeit, Mercurial zu bitten, die meisten/alle Befehle, Optionen und Argumente, die ich ihm geben möchte, aus einer Antwortdatei zu lesen, anstatt sie auf der Kommandozeile zu übergeben?

Zum Beispiel anstelle von diesem:

hg commit -m "commit message" --INCLUDE file1 --INCLUDE file2 ...

Ich würde eine Textdatei erstellen, die Folgendes enthält

-m "commit message" --INCLUDE file1 --INCLUDE file2 ...

und bitten Sie dann Mercurial, es mit dieser (hyphotetischen) Syntax zu lesen:

hg commit @responses.txt

Der Grund, warum ich frage, ist, dass ich eine Wrapper-Bibliothek für .NET um den Mercurial-Befehlszeilen-Client herum erstelle, und diese Frage auf SO hat mich beunruhigt, dass die Länge der Befehlszeile irgendwann ein Problem für mich sein könnte: Fehler "Resultierende Befehlszeile für hg.exe zu lang" in Mercurial .

2voto

Paul Bissex Punkte 1431

Soweit ich weiß, gibt es keine eingebaute Möglichkeit, dies zu tun, aber ich denke, es gibt einen Weg, wie Sie das, was Sie brauchen, erstellen können.

Verwenden Sie die Mercurial interne API und schreiben Sie Ihr eigenes Wrapper-Skript. Anstatt zu versuchen, es dazu zu bringen, alle Befehle und Optionen zu lesen, wird es viel einfacher sein, sich an Ihr spezifisches Ziel zu halten (d.h. "commit" und die Optionen, die Sie brauchen).

(Beachten Sie die Warnhinweise auf der API-Seite. Wenn der Wrapper, den Sie erstellen, an andere Personen weitergegeben werden soll, sollten Sie sich mit dem Lizenzproblem befassen und einen Plan haben, wie Sie mit zukünftigen Mercurial-Upgrades umgehen, die Ihren Wrapper zerstören könnten).

0voto

Niall C. Punkte 10798

Hier ist eine plumpe Abhilfe...

  1. Erstellen Sie eine leere Dummy-Antwortdatei im .hg-Verzeichnis des Repo, zum Beispiel .hg \response.

  2. In der .hg-Datei des Repo \hgrc fügen Sie die Zeile

    %include response

  3. Bevor Sie irgendwelche Repository-Operationen durchführen, schreiben Sie die Befehlszeilenoptionen in diese Antwortdatei. Verwenden Sie die [defaults] (ich weiß, es ist veraltet), um Ihre Optionen zu spezifizieren.

    [defaults]
    commit = -m "This is a commit message" -I file1 -I file2 ...

(Nach Angaben von Microsofts Unterstützung Die maximale Befehlszeile beträgt 8.191 Zeichen unter XP und höher. Es könnte nützlich sein, zu wissen, ob Sie diesen Trick überhaupt anwenden müssen).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X