0

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

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

4

2 回答 2

1

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

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

于 2014-11-05T16:50:05.800 回答
0

如果您知道历史上字符串的任何不可变部分,您可以尝试使用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');

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

于 2014-11-10T03:48:55.473 回答