How can I specify a multiline commit message for mercurial on the command line?
hg commit -m \"* add foo\\n* fix bar\"
does not work. The log
Mercurial: multiline commit message on the command line?
Hit enter.
$ hg commit -m "Did some work
> Now I'm done"
One of the things is that only the first line shows up in hg log:
$ hg log
changeset: 0:d2dc019450a2
tag: tip
user: Aaron Maenpaa <zacherates@gmail.com>
date: Sat Jan 24 07:46:23 2009 -0500
summary: Did some work
... but if you fire up "hg view" you can see that the whole message is there.
Edited to add:
... but hg -v log shows the whole message:
$ hg -v log
changeset: 0:d2dc019450a2
tag: tip
user: Aaron Maenpaa <zacherates@gmail.com>
date: Sat Jan 24 07:46:23 2009 -0500
files: work
description:
Did some work
Now I'm done
I know, there is already a solution for linux users, but I needed another solution for windows command line, so I was looking for it...
And I found one: https://www.mercurial-scm.org/pipermail/mercurial/2011-November/040855.html
hg commit -l filename.txt
I hope, it's useful for someone out there ,)
[EDIT] oO - it has already been added to the help
-l --logfile FILE read commit message from file
In bash (since version 2.0):
hg commit -m $'foo\nbar'
(I.e. put a dollar sign before an opening single quote to make it parse escape sequences (like \n)
within the string — note that it doesn't work with double quotes.)
If you're doing it interactively (vs. from a script), just do hg commit
without the -m flag. I'm not sure what the behavior is on Linux or Mac, but on Windows it pops up Notepad with a file that you fill out and save for a multiline message.
Here's another way that is more close to what you tried at first:
hg commit -m "$(echo -e 'foo\nbar')"
For Windows with PowerShell:
hg commit --message "foo`nbar"