コマンドラインで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
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
Windows cmdから、複数行のコミットに対してこのコマンドを実行します。
hg commit -l con
これにより、コマンドラインから直接複数行のコミットメッセージを入力できます。メッセージを終了するには、 Enter、そしてそれ自体でヒット Ctrl + Z そして Enter 再び。
なぜ?-l
オプションhg commit
はファイルからコミットメッセージを読み取ることを示し、con
はファイルが実際にコンソールであることを指定します。
インタラクティブに(スクリプトから)実行している場合は、hg commit
-mフラグなし。 LinuxまたはMacでの動作はわかりませんが、Windowsでは、メモ帳にポップアップが表示され、複数行のメッセージ用に入力して保存したファイルが表示されます。
Linuxユーザー向けのソリューションはすでにありますが、Windowsコマンドライン用の別のソリューションが必要だったので、探していました...
そして私はそれを見つけました: https://www.Mercurial-scm.org/pipermail/Mercurial/2011-November/040855.html
hg commit -l filename.txt
私はそれがそこにいる誰かにとって有用であることを願っています、)
[編集] oO-すでにヘルプに追加されています
-l --logfile FILEファイルからコミットメッセージを読み取る
最初に試したものにより近い別の方法を次に示します。
hg commit -m "$(echo -e 'foo\nbar')"
Windows for PowerShellの場合:
hg commit --message "foo`nbar"
Bashの場合(バージョン2.0以降):
hg commit -m $'foo\nbar'
(つまり、エスケープシーケンスを解析するために、開始単一引用符の前にドル記号を挿入します(文字列内の\n)
のように、二重引用符では機能しないことに注意してください。)