我有一个包含数千行代码的CSS文件。我想看看当一个特定的行/代码块被改变,而无需返回和审查,改变了这个文件,每个版本(这将需要一个一长串的时间!)Mercurial - 如何查看特定代码行的历史记录
有没有一种方法,即使用TortoiseHg,日食带一个Mercurial插件或命令行来查看特定代码的历史记录?
我有一个包含数千行代码的CSS文件。我想看看当一个特定的行/代码块被改变,而无需返回和审查,改变了这个文件,每个版本(这将需要一个一长串的时间!)Mercurial - 如何查看特定代码行的历史记录
有没有一种方法,即使用TortoiseHg,日食带一个Mercurial插件或命令行来查看特定代码的历史记录?
正确答案是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 diff
:
hg diff -r firstrevisionnumber:otherrevnumber filename
例如,hg diff -r 0:8 screen.css
或命令hg log screen.css
。
这是很好的了解,但确实对于这种特殊情况没有帮助,因为我不知道需要修改的范围,迄今为止我们对历史进行了近3000个修订。 –
您可以使用:
hg annotate <file>
找出在哪个版本线被改变,然后用同样的命令-r <revision>
末通过修订倒退。
- 这是正确的标志。 - 全部不起作用。 – Sasha
我不认为这是一个相当正确的答案,尽管它被接受。这将在历史中搜索文件中特定模式的发生。它不会给你一个文件中特定行的历史记录,除非在整个历史过程中碰巧只有一行符合该模式。 'hg annotate'给出了正确的信息,尽管你仍然需要通过历史手动跳回来获得完整的事件链。 – jwd