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

时间:2015-04-10 07:31:44

标签: svn mercurial

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

SVN示例:


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

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

Hg样本:


**变更集:276992:8b564af029aa

书签:writercompare01

标签:提示

父母:266455:8565218dc235

用户:thb@openoffice.org

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

摘要:CWS writercompare01:#i110237#来自Tzvetelina的变化**

我想知道以下内容:

  1. 如果上述提交信息与两个修订版的差异相关,则哪个版本显示为修订版(在svn 1667884中)Id和Changeset(Hg 276992:8b564af029aa)Id。是提交之前的修订还是提交后的修订ID?如果是第二个如何在svn和HG中获得相关的先前修订版?我可以使用 hg diff -c changesetid 来获取以前的版本吗?

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

  3. 是否有任何可用于获取更改类型的命令(修改,删除,忽略等等)ex:“ M / openoffice / trunk / main / vcl / Module_vcl。 MK” )在HG中,以及为上面给出的每次提交更改的文件?

  4. 谢谢 医生

1 个答案:

答案 0 :(得分:0)

我在这里说善变:

ad 2) 变更集ID(由全局唯一散列引用唯一的本地有效数字ID)表示一组更改。因此,如果您使用修订版276992:8b564af029aa签出您的存储库,那么它将包含所有更改的存储库,包括由该更改集创建的更改。

广告1) 我认为这是一个不幸的术语,但你似乎在提交后将其称为“修订版ID”。

您可以使用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是您要查询的changesetID;它模仿hg st的输出。也许还可以在模板中使用file_copies。请注意"忽略文件的概念"在调查变更集而不是工作目录的状态时,没有多大意义。如果您想要一个包含特定修订版本,更改或未更改的所有文件的列表,那么您可以hg manifest