wake-up-neo.com

Mercurial: mehrzeilige Commit-Nachricht in der Befehlszeile?

Wie kann ich in der Befehlszeile eine mehrzeilige Commit-Nachricht für Mercurial angeben?

hg commit -m "* add foo\n* fix bar"

funktioniert nicht. Das Protokoll zeigt:

changeset:   13:f2c6526e5911
tag:         tip
date:        Fri Jan 23 23:22:36 2009 +0100
files:       foobar.cpp
description:
    * add foo\n*fix bar
53
Martin

Mercurial: mehrzeilige Commit-Nachricht zu die Befehlszeile?

Drücke Enter.

$ hg commit -m "Did some work
> Now I'm done"

Eines der Dinge ist, dass nur die erste Zeile in hg log angezeigt wird:

$ hg log
changeset:   0:d2dc019450a2
tag:         tip
user:        Aaron Maenpaa <[email protected]>
date:        Sat Jan 24 07:46:23 2009 -0500
summary:     Did some work

... aber wenn Sie "hg view" starten, können Sie sehen, dass die ganze Nachricht vorhanden ist.

Zum Hinzufügen hinzugefügt:

... aber hg -v log zeigt die gesamte Nachricht an:

$ hg -v log
changeset:   0:d2dc019450a2
tag:         tip
user:        Aaron Maenpaa <[email protected]>
date:        Sat Jan 24 07:46:23 2009 -0500
files:       work
description:
Did some work
Now I'm done
77
Aaron Maenpaa

Führen Sie unter Windows cmd diesen Befehl für ein mehrzeiliges Festschreiben aus.

hg commit -l con

Auf diese Weise können Sie eine mehrzeilige Festschreibungsnachricht direkt über die Befehlszeile eingeben. Um Ihre Nachricht zu beenden, drücken Sie Enter, und auf einer Linie von selbst getroffen Ctrl + Z und Enter nochmal.

Warum? Die Option -l zu hg commit sagt, dass die Festschreibungsnachricht aus einer Datei gelesen werden soll, und con gibt an, dass die Datei tatsächlich die Konsole ist.

16
Cody Piersall

Wenn Sie dies interaktiv machen (im Gegensatz zu einem Skript), müssen Sie einfach hg commit ohne das Flag -m ausführen. Ich bin nicht sicher, was das Verhalten auf Linux oder Mac ist, aber unter Windows wird Notepad mit einer Datei angezeigt, die Sie ausfüllen und für eine mehrzeilige Nachricht speichern.

9
Jason S

Ich weiß, es gibt bereits eine Lösung für Linux-Benutzer, aber ich brauchte eine andere Lösung für die Windows-Befehlszeile, also habe ich danach gesucht ... 

Und ich habe eine gefunden: https://www.Mercurial-scm.org/pipermail/Mercurial/2011-November/040855.html

hg commit -l filename.txt

Ich hoffe, es ist nützlich für jemanden da draußen.

[EDIT] OO - wurde bereits zur Hilfe hinzugefügt

-l --logfile FILE liest Commit-Nachricht aus der Datei

4
kapsi

Hier ist ein anderer Weg, der dem, was Sie anfangs versucht haben, näher kommt:

hg commit -m "$(echo -e 'foo\nbar')"
2

Für Windows mit PowerShell:

 hg commit --message "foo`nbar"
0
CodeFox

In Bash (seit Version 2.0):

hg commit -m $'foo\nbar'

(Das heißt, ein Dollar-Zeichen vor einem öffnenden einfachen Anführungszeichen setzen, um Escape-Sequenzen zu analysieren (wie \n) innerhalb der Zeichenfolge - beachten Sie, dass es nicht mit doppelten Anführungszeichen funktioniert)

0
Sasha