58

如何在命令行上为 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
4

7 回答 7

83

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

点击进入。

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

其中一件事是只有第一行显示在 hg 日志中:

$ 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
于 2009-01-24T12:45:43.440 回答
16

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

hg commit -l con

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

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

于 2013-04-26T19:20:19.067 回答
9

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

于 2009-01-24T16:06:39.353 回答
5

我知道,已经有针对 linux 用户的解决方案,但是我需要针对 windows 命令行的另一种解决方案,所以我一直在寻找它......

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

hg commit -l filename.txt

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

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

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

于 2012-10-17T12:40:41.543 回答
2

这是另一种更接近您最初尝试的方法:

hg commit -m "$(echo -e 'foo\nbar')"
于 2009-02-17T18:43:19.583 回答
2

在 bash 中(从 2.0 版开始):

hg commit -m $'foo\nbar'

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

于 2018-03-17T09:02:46.053 回答
1

对于带有 PowerShell的Windows :

 hg commit --message "foo`nbar"
于 2018-02-19T08:11:53.123 回答