如何在命令行上为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
答案 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)
- 请注意它不适用于双引号。)