在 HG 中获取更改后的文件类型和之前的版本

Getting the changed type of files and the previous version in HG

我目前正在使用为 HG 和 SVN 生成的提交日志收集一些信息。

SVN 示例:


r1667884 |克申克 | 2015-03-20 05:37:55 +0800(2015 年 3 月 20 日,星期五)| 1 行

#126118# 修复 makefile 中格式错误的 if 语句。

汞样本:


**变更集:276992:8b564af029aa

书签:writercompare01

标签:提示

parent: 266455:8565218dc235

用户:thb@openoffice.org

日期:3 月 19 日星期五 00:16:57 2010 +0100

总结:CWS writercompare01: #i110237# Tzvetelina 的变化 as-is**

我想了解以下内容:

  1. 如果上面的commit infor是关于两个revisions的diff,哪个revision显示为Revision (in svn 1667884) Id 和Changeset(Hg 276992:8b564af029aa) Id。是commit前的revision还是commit后的revision id?如果是第二个如何在 svn 和 HG 中获取相关的先前修订?我可以使用 hg diff -c changesetid 来获取以前的版本吗?

  2. 考虑变更集时,第一个数字部分是否被视为修订 ID?

  3. 有没有我可以用来获取更改类型(修改、删除、忽略等)的命令。例如:“M [=60= .mk" ) 在 HG 中连同上面给出的每次提交更改的文件?

谢谢 博士

我在这里说的是善变:

广告 2) 变更集 ID(由全局唯一哈希 唯一本地有效数字 ID 表示)表示一组更改。因此,如果您检出版本为 276992:8b564af029aa 的存储库,那么它会包含包含所有更改的存储库,包括由该变更集所做的更改。

广告 1) 我认为这是不幸的术语,但你似乎称它为 'the revision id after commit'.

您可以使用 mercurials revset 术语来了解历史。如果它是您感兴趣的前一次提交,并且 hg diff -c changesetID 的输出适合您,请改用 hg diff -c changesetID^(注意尾随 ^)。另见 hg help revset

广告 3) 同样,mercurials 模板引擎非常强大:请参阅 hg help templates 了解如何根据需要定制日志输出 - 它允许进行出色的微调。如果 hg log -rXXX --stat 的输出对你来说不够,我建议你使用这样的模板:

hg log -rXXX --template="{file_adds % 'A {file}\n'}{file_mods % 'M {file}\n}{file_dels, 'R {file}\n'}"

其中XXX是您要查询的变更集ID;它模仿 hg st 的输出。也许还可以在模板中使用 file_copies。请注意,在调查变更集而不是工作目录的状态时,"ignored files" 的概念没有多大意义。如果您想要一份构成特定修订版的所有文件的列表,更改或未更改,hg manifest 适合您。