2009-01-24 84 views
52

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

我想这必须通过命令外壳本身来解决。如果你的命令行可以给你提供一些多行文本作为单一参数(也许在行尾有一个'\'),那么HG shold就没有问题了...... – 2009-01-24 12:44:48

+0

是的,我猜你是对的。然而,这是我个人唯一的使用场合,我会定期使用它,这就是为什么我没有问它作为一个bash问题。 – Martin 2009-01-24 12:50:20

回答

73

水银:多行上 命令行提交消息?

点击进入。

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

的事情之一,是只有第一行中的汞日志显示了:

$ 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 

...但如果你火了“汞视图”,你可以看到整个消息那里。

编辑补充:

...但汞-v日志显示整个消息:

$ 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 
+5

“Enter”行为依赖于类似UNIX的shell。有没有办法与Windows CMD做到这一点? – 2009-01-24 12:52:12

+0

@Hosam除了安装cygwin(或mingwin)和使用bash我什么也想不到。 – 2009-01-24 13:02:20

9

如果你(对从脚本)交互做,只是做hg commit没有-m标志。我不确定Linux或Mac上的行为是什么,但在Windows上,它会弹出一个记事本文件,您可以填写并保存多行消息。

2

这里的另一种方式,是更接近您最初试图什么:

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

的Windows在cmd提交信息,这样做的命令用于多行提交。

hg commit -l con 

这允许您直接从命令行输入多行提交消息。要结束的消息,打输入,并在线通过自身打按Ctrl +ž再次输入

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

0

对于的Windows使用PowerShell:

hg commit --message "foo`nbar"