Mercurial:命令行上的多行提交消息?

时间:2009-01-24 12:40:38

标签: command-line mercurial

如何在命令行上为mercurial指定多行提交消息?

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

不起作用。日志显示:

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

7 个答案:

答案 0 :(得分:77)

  

Mercurial:多行提交消息   命令行?

点击进入。

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

其中一件事是只有第一行显示在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

...但是如果您启动“hg view”,您可以看到整个消息都在那里。

编辑添加:

...但是hg -v log显示了整个消息:

$ 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

答案 1 :(得分:16)

Windows cmd ,为多行提交执行此命令。

hg commit -l con

这允许您直接从命令行输入多行提交消息。要结束消息,请按 Enter ,然后单击一行,再次按 Ctrl + Z Enter

为什么? -l的{​​{1}}选项表示从文件中读取提交消息,而hg commit指定该文件实际上是控制台。

答案 2 :(得分:9)

如果您是以交互方式(而不是脚本)进行,只需执行hg commit而不使用-m标志。我不确定Linux或Mac上的行为是什么,但在Windows上,它会弹出记事本,其中包含您填写的文件并保存为多行消息。

答案 3 :(得分:4)

我知道,Linux用户已经有了一个解决方案,但我需要另一个Windows命令行解决方案,所以我一直在寻找...

我发现了一个: https://www.mercurial-scm.org/pipermail/mercurial/2011-November/040855.html

hg commit -l filename.txt

我希望,这对那里的人有用,)

[编辑] oO - 它已被添加到帮助

  

-l --logfile FILE从文件读取提交消息

答案 4 :(得分:2)

这是另一种更接近你最初尝试的方式:

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

答案 5 :(得分:0)

对于使用PowerShell的 Windows

 hg commit --message "foo`nbar"

答案 6 :(得分:0)

在bash中(从2.0版开始):

hg commit -m $'foo\nbar'

(即在开头的单引号前加上美元符号以使其解析转义序列(如字符串中的\n) - 请注意它不适用于双引号。)