如何在Mercurial的hg日志中获取修改后的文件列表及其修订版本?

时间:2013-06-18 06:21:47

标签: version-control mercurial report

我的想法是,从具有多个转速的仓库开始,获取修订列表,以及每个版本中已更改的{matching-file-patterns}。

目标是,使用该数据,获取每个.CPP和.H文件已更改的次数,以及作为日期的其他数据,更改文件的用户,...以更全面地跟踪进度项目

hg log --template "revision:{rev}\nfiles:\n{files % '  {file}\n'}"

以上将部分完成我的声明(连同将输出管道传输到.txt文件并在外部解析),但我仍然觉得有趣的是预先过滤结果,这就是hg日志只显示.CPP和.H文件,例如。

我已经调查过了,选项“set:* .cpp或* .h”会这样做,但是

hg log "set: **.cpp or **.h" --template "revision:{rev}\nfiles:\n{files % '  {file}\n'}"

不会过滤任何类型。

在此任务中欢迎任何建议/解决方案,即使在自动化报告的主要任务中也是如此! (我完全相信有一种更容易实现的方法)

谢谢。

1 个答案:

答案 0 :(得分:0)

  1. 在日志命令
  2. 中使用revsets而非filesets
  3. 使用更简单的模板:您的模板在我的测试中输出任何内容(在相关的条件编辑之后),但--template "{rev} {author}\n"显示修订列表
  4. Revset将为-r "file('**.cpp') + file('**.h')"

    修改

    使用文件集实现日志,用于我的 repo和文件

    >hg log "set: **.txt or **.png" --template "{rev}:{node|short} {author|user} {date|isodate}\n{files % '  {file}\n'"
    

    由于某些原因,构造\nfiles:\n{files % ' {file}\n'不起作用,但可以使用静态文本。

    日志输出

    6:e0670b3704b4 lazybadger 2012-06-24 15:20 +0600
      functions.php
      readme.txt
      screenshot.png
      style.css
    5:1c722f4facda lazybadger 2012-02-07 07:56 +0600
      readme.txt
      sidebar.php
      style.css
    4:630f5c2e836a lazybadger 2012-01-09 22:33 +0600
      comments.php
      functions.php
      header.php
      readme.txt
      sidebar.php
      style.css
    3:168c55fc758d lazybadger 2011-12-14 04:01 +0600
      footer.php
      functions.php
      header.php
      readme.txt
      search.php
      style.css
    0:f4413f649a23 lazybadger 2011-08-06 01:13 +0600
      404.php
      archive.php
      archives.php
      comments.php
      footer.php
      functions.php
      header.php
      html5.js
      image.php
      index.php
      license.txt
      links.php
      page.php
      screenshot.png
      search.php
      sidebar.php
      single.php
      style.css
    

    注意变更集的文件列表 - 它们包括所有类型的文件,而不仅仅是所需的类型