具有文件状态的mercurial日志格式

时间:2011-05-12 11:51:50

标签: git mercurial diff logging show

我想知道,如何以这种格式返回为提交添加/修改/删除的文件:

<modifier> file
<modifier> path/to/a/file
<modifier> path/to/another/file

在git中我这样做:“git show --pretty =”format:“ - name-status commitish”并获取:

D       file
A       path/to/a/file
M       path/to/another/file

对于mercurial,我无法弄清楚如何使用模板。我有一个样式文件:

changeset = "{file_mods}{file_adds}{file_dels}"
file_add  = "A {file_add}\n"
file_mod  = "M {file_mod}\n"
file_del  = "D {file_del}\n"

并且使用这个样式和命令“hg log -r commitish-style~ / .hgstyle”我得到几乎我想要的东西:

M path/to/another/file
A path/to/a/file
D file

mercurial还有一个问题 - 文件排序不正确。

如何在mercurial上获得与git命令相同的结果(使用修饰符并正确排序)?

4 个答案:

答案 0 :(得分:1)

试试这个:

hg stat --change THE_REV_YOU_WANT

答案 1 :(得分:0)

也许我没有正确理解,但是如果你想先删除,然后添加和最后修改,请简单地更改你的样式文件的第一行:

changeset = "{file_dels}{file_adds}{file_mods}"

如果您想更接近Git外观,还可以添加制表符(\t)而不是空格:

file_add  = "A\t{file_add}\n"

答案 2 :(得分:0)

使用模板引擎没有直接的方法,但您可以尝试:

hg log --style ~/.hgstyle -r <rev> | sort -k2

这将对第二列数据(即文件名)上的log命令的输出进行排序。

答案 3 :(得分:0)

将其添加到您的.hgrc文件

[alias]
prettylog = log -r : --template "{rev} | {date|shortdate} | {desc|strip|firstline}\n{file_dels % '  - {file}\n'}{file_adds % '  + {file}\n'}{file_mods % '  ~ {file}\n'}\n"

它会打印一个整齐格式的输出,如下所示(2是转速):

2 | 2014-03-21 | my new log format
  - js/remove_me.js
  + js/add_me.js
  ~ doc/modified_me.txt
  ~ www/index.html