我目前正在使用为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的变化**
我想知道以下内容:
如果上述提交信息与两个修订版的差异相关,则哪个版本显示为修订版(在svn 1667884中)Id和Changeset(Hg 276992:8b564af029aa)Id。是提交之前的修订还是提交后的修订ID?如果是第二个如何在svn和HG中获得相关的先前修订版?我可以使用 hg diff -c changesetid 来获取以前的版本吗?
考虑变更集时,第一个数字部分被视为修订版ID?
是否有任何可用于获取更改类型的命令(修改,删除,忽略等等)ex:“ M / openoffice / trunk / main / vcl / Module_vcl。 MK” )在HG中,以及为上面给出的每次提交更改的文件?
谢谢 医生
答案 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
。