【问题标题】:Show Mercurial commits modifying a piece of code (multiple lines)显示 Mercurial 提交修改一段代码(多行)
【发布时间】:2015-01-01 11:17:27
【问题描述】:

因此,假设我有一段由文件中连续几行组成的代码,并且我想查找历史中影响这段代码的所有提交。有没有办法用 mercurial 做到这一点?

我不是指单个内置命令,因为 AFAIK Mercurial 没有为此提供命令,所以这可能需要一个包含多个命令的小脚本。

【问题讨论】:

    标签: version-control mercurial revision-history


    【解决方案1】:

    您可能希望从hg blame 开始。这将为您提供更改每一行的最新版本。然后,您可以使用-r 选项到hg blame 来回溯历史。

    任何数量的文本处理程序都可以从blame 中提取修订号并自动执行此过程。

    【讨论】:

      【解决方案2】:

      如果您知道历史上字符串的任何不可变部分,您可以尝试使用hg grep --all ...(PATTERN 可以是正则表达式,而不仅仅是普通的文本字符串),而不是循环指责(以及内部的一些逻辑) )。

      只是最简单的示例(对于硬编码模式,我懒得构建任何正则表达式)

      >hg grep --all DATE_FORMAT_ENTRY serendipity_lang_ru.inc.php
      lang/UTF-8/serendipity_lang_ru.inc.php:9:-:@define('DATE_FORMAT_ENTRY', '%A, %e %B. %Y');
      lang/UTF-8/serendipity_lang_ru.inc.php:9:+:@define('DATE_FORMAT_ENTRY', '%A, %e %B %Y');
      lang/UTF-8/serendipity_lang_ru.inc.php:7:-:@define('DATE_FORMAT_ENTRY', '%A, %e %B %Y');
      lang/UTF-8/serendipity_lang_ru.inc.php:7:+:@define('DATE_FORMAT_ENTRY', '%A, %e %B. %Y');
      lang/UTF-8/serendipity_lang_ru.inc.php:3:-:@define('DATE_FORMAT_ENTRY', '%A, %e %B. %Y');
      lang/UTF-8/serendipity_lang_ru.inc.php:3:+:@define('DATE_FORMAT_ENTRY', '%A, %e %B %Y');
      lang/UTF-8/serendipity_lang_ru.inc.php:0:+:@define('DATE_FORMAT_ENTRY', '%A, %e %B. %Y');
      

      (这是最明显的输出,不是吗?)

      【讨论】:

        猜你喜欢
        • 2012-01-01
        • 2014-07-14
        • 1970-01-01
        • 2013-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多