【问题标题】:Mercurial - how to see the history for a specific line of codeMercurial - 如何查看特定代码行的历史记录
【发布时间】:2012-11-13 00:38:58
【问题描述】:

我有一个包含数千行代码的 CSS 文件。我想查看何时更改了特定的代码行/代码块,而无需返回并查看更改此文件的每个修订版(这将花费很长时间!)

有没有办法使用 TortoiseHg、带有 Mercurial 插件的 Eclipse 或命令行来查看特定代码的历史记录?

【问题讨论】:

    标签: eclipse mercurial


    【解决方案1】:

    使用hg histgrep --all PATTERN FILENAME(以前在旧版本中是hg grep,现在已经不行了)

    【讨论】:

      【解决方案2】:

      我认为没有查看文件特定部分的选项。但是要查看多个修订版中总文件的差异,您可以使用hg diff

      hg diff -r firstrevisionnumber:otherrevnumber filename
      

      例如,hg diff -r 0:8 screen.css

      或者命令hg log screen.css

      【讨论】:

      • 这很高兴知道,但对这种特殊情况没有帮助,因为我不知道要查看的修订范围,到目前为止,我们在历史上已有近 3,000 个修订。
      【解决方案3】:

      正确答案是hg grep (Mercurial grep page)。

      更深入:

      hg grep --all "PATTERN" FILENAME
      

      样本输出:

      >hg grep --all "textdomain" functions.php
      functions.php:2:-:load_theme_textdomain('fiver', get_template_directory() . '/translation');
      functions.php:2:+:load_theme_textdomain('fiver', get_template_directory() . '/languages');
      functions.php:1:+:load_theme_textdomain('fiver', get_template_directory() . '/translation');
      

      (按顺序 - 此版本中的文件名、修订版、操作、字符串)

      【讨论】:

      • 我不认为这是一个非常正确的答案,尽管它被接受了。这将在整个历史记录中搜索文件中某个模式的出现。它不会为您提供文件中特定行的历史记录,除非恰好只有一行与整个历史记录中的模式匹配。 hg annotate 提供了正确的信息,但您仍然必须手动跨越历史记录才能获得完整的事件链。
      【解决方案4】:

      你可以使用:

      hg annotate <file>
      

      找出哪个修订行被更改,然后在末尾使用带有-r &lt;revision&gt; 的相同命令来回溯修订。

      【讨论】:

      • 仅责备显示:1. 更改的最新版本 2. 无法显示当前已删除字符串的信息
      猜你喜欢
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      相关资源
      最近更新 更多