【发布时间】:2012-11-13 00:38:58
【问题描述】:
我有一个包含数千行代码的 CSS 文件。我想查看何时更改了特定的代码行/代码块,而无需返回并查看更改此文件的每个修订版(这将花费很长时间!)
有没有办法使用 TortoiseHg、带有 Mercurial 插件的 Eclipse 或命令行来查看特定代码的历史记录?
【问题讨论】:
我有一个包含数千行代码的 CSS 文件。我想查看何时更改了特定的代码行/代码块,而无需返回并查看更改此文件的每个修订版(这将花费很长时间!)
有没有办法使用 TortoiseHg、带有 Mercurial 插件的 Eclipse 或命令行来查看特定代码的历史记录?
【问题讨论】:
使用hg histgrep --all PATTERN FILENAME(以前在旧版本中是hg grep,现在已经不行了)
【讨论】:
我认为没有查看文件特定部分的选项。但是要查看多个修订版中总文件的差异,您可以使用hg diff:
hg diff -r firstrevisionnumber:otherrevnumber filename
例如,hg diff -r 0:8 screen.css
或者命令hg log screen.css。
【讨论】:
正确答案是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 提供了正确的信息,但您仍然必须手动跨越历史记录才能获得完整的事件链。
你可以使用:
hg annotate <file>
找出哪个修订行被更改,然后在末尾使用带有-r <revision> 的相同命令来回溯修订。
【讨论】: