Mercurial日志与单行

时间:2010-08-26 12:52:12

标签: mercurial command

常规hg log命令为每个变更集提供至少4行的输出。例如

changeset:   238:03a214f2a1cf
user:        My Name <my.name@example.com>
date:        Thu Aug 26 09:49:32 2010 +0200
summary:     Added tag v1.1 for changeset f22fd3974361

我的意思是要记住,有一个命令以更紧凑的方式打印日志,每个变更集只有一行。一种格式,你基本上可以在changelog.txt文件中,它看起来不错。

那存在吗?或者我将这与我用git或其他东西看到的东西混合在一起?

3 个答案:

答案 0 :(得分:46)

您可以将hg log - template 选项一起使用,例如:

hg log --template '{node|short} | {date|isodatesec} | {author|user}: {desc|strip|firstline}\n'

这应该显示类似的内容(例如来自我在本地转换为hg存储库的GNU Emacs主干):

$ hg log --limit 5 --template '{node|short} | {date|isodatesec} | {author|user}: {desc|strip|firstline}\n'
36ab2e3f8ebd | 2010-09-08 16:54:00 +0200 | agustin: textmodes/ispell.el (ispell-valid-dictionary-list): Simplify logic.
9f3ac6d4a645 | 2010-09-08 16:42:54 +0200 | michael: Migrate to Tramp 2.2.  Rearrange load dependencies.
8c696d2a7695 | 2010-09-07 20:01:23 +0200 | agustin: Make sure original ispell arg list is initialized in (ispell-start-process).
b5f110747072 | 2010-09-07 06:23:16 +0000 | yamaoka: gnus-html.el (gnus-html-wash-tags, gnus-html-put-image): Mark cid and internal images as deletable by `W D D'.
b53cfb7d099e | 2010-09-07 01:20:19 +0000 | yamaoka: gnus-async.el (gnus-html-prefetch-images): Autoload it when compiling; (gnus-async-article-callback): Fix typo.
$

如果您有一个很好的模板用于更改集的单行摘要,您可以在~/.hgrc文件中添加命令别名,如下所示:

[alias]
shortlog = log --template '{node|short} | {date|isodatesec} | {author|user}: {desc|strip|firstline}\n'

安装了别名后,您现在可以输入hg shortloghg short甚至hg shor(以唯一标识hg shortlog而不是hg showconfig)和所有常用内容`log'命令选项。例如,现在应该可以输入:

$ hg short -r 100:103
db9f8efcf689 | 1990-09-14 19:07:14 +0000 | jimb: *** empty log message ***
5874bf15e07d | 1990-09-19 18:22:41 +0000 | gnulists: Initial revision
797d304414fd | 1990-09-27 21:17:59 +0000 | mtr: Initial revision
b2656b7830e4 | 1990-10-09 02:52:33 +0000 | rms: *** empty log message ***
$

甚至使用标签名称的东西(来自mercurial crew repository本身的例子):

keramida@kobe:/hg/mercurial/crew$ hg short -r 1.4 -r 1.5 -r 1.6
31ec469f9b55 | 2009-11-16 21:25:36 +0100 | mg: i18n-ja: fixed bad indentation
ff2704a8ded3 | 2010-03-05 17:24:52 -0600 | mpm: mq: drop -Q in favor of --mq only
f786fc4b8764 | 2010-06-29 12:12:34 +0200 | mads: log: follow filenames through renames (issue647)
keramida@kobe:/hg/mercurial/crew$

答案 1 :(得分:27)

 hg log --style compact

您还可以使用模板以不同格式显示注销

hg help templates

在您的情况下,如果您只想显示节点ID,请执行以下操作

hg log --template "{node}\n"

答案 2 :(得分:4)

要在一行上获取描述,即使原始注释包含多行,也可以组合分割线和连接函数,如下所示:

{join(splitlines(desc), ' ')}

以下是我用来将数据提取为CSV的示例:

hg log --template "{node};{date|shortdate};{branch};{author};{join(splitlines(desc), ' ')};{diffstat};files: {join(files, ', ')}\n"