web-dev-qa-db-ja.com

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
53
Martin

Mercurial:コマンドラインで複数行のコミットメッセージ?

Enterキーを押します。

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

1つは、hgログに最初の行だけが表示されることです。

$ 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

...しかし、「hg view」を起動すると、メッセージ全体がそこにあることがわかります。

追加するように編集:

...しかしhg -v logはメッセージ全体を表示します:

$ 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
77
Aaron Maenpaa

Windows cmdから、複数行のコミットに対してこのコマンドを実行します。

hg commit -l con

これにより、コマンドラインから直接複数行のコミットメッセージを入力できます。メッセージを終了するには、 Enter、そしてそれ自体でヒット Ctrl + Z そして Enter 再び。

なぜ?-lオプションhg commitはファイルからコミットメッセージを読み取ることを示し、conはファイルが実際にコンソールであることを指定します。

16
Cody Piersall

インタラクティブに(スクリプトから)実行している場合は、hg commit -mフラグなし。 LinuxまたはMacでの動作はわかりませんが、Windowsでは、メモ帳にポップアップが表示され、複数行のメッセージ用に入力して保存したファイルが表示されます。

9
Jason S

Linuxユーザー向けのソリューションはすでにありますが、Windowsコマンドライン用の別のソリューションが必要だったので、探していました...

そして私はそれを見つけました: https://www.Mercurial-scm.org/pipermail/Mercurial/2011-November/040855.html

hg commit -l filename.txt

私はそれがそこにいる誰かにとって有用であることを願っています、)

[編集] oO-すでにヘルプに追加されています

-l --logfile FILEファイルからコミットメッセージを読み取る

4
kapsiR

最初に試したものにより近い別の方法を次に示します。

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

Windows for PowerShellの場合:

 hg commit --message "foo`nbar"
0
CodeFox

Bashの場合(バージョン2.0以降):

hg commit -m $'foo\nbar'

(つまり、エスケープシーケンスを解析するために、開始単一引用符の前にドル記号を挿入します(文字列内の\n)のように、二重引用符では機能しないことに注意してください。)

0
Sasha