2012-11-25 162 views
5

我有一个包含数千行代码的CSS文件。我想看看当一个特定的行/代码块被改变,而无需返回和审查,改变了这个文件,每个版本(这将需要一个一长串的时间!)Mercurial - 如何查看特定代码行的历史记录

有没有一种方法,即使用TortoiseHg,日食带一个Mercurial插件或命令行来查看特定代码的历史记录?

回答

16

正确答案是hg grepMercurial 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'); 

(按顺序 - 文件名,修订,行动,串在本次修订)

+1

- 这是正确的标志。 - 全部不起作用。 – Sasha

+1

我不认为这是一个相当正确的答案,尽管它被接受。这将在历史中搜索文件中特定模式的发生。它不会给你一个文件中特定行的历史记录,除非在整个历史过程中碰巧只有一行符合该模式。 'hg annotate'给出了正确的信息,尽管你仍然需要通过历史手动跳回来获得完整的事件链。 – jwd

1

我不认为有一个选项可以查看文件的特定部分。但要看到,在总文件的差异过多次修改,你可以使用hg diff

hg diff -r firstrevisionnumber:otherrevnumber filename 

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

或命令hg log screen.css

+0

这是很好的了解,但确实对于这种特殊情况没有帮助,因为我不知道需要修改的范围,迄今为止我们对历史进行了近3000个修订。 –

13

您可以使用:

hg annotate <file> 

找出在哪个版本线被改变,然后用同样的命令-r <revision>末通过修订倒退。

+0

谢谢,这正是我需要的! –

+1

怪只显示:1.最新版本的更改2.无法显示当前删除的字符串的信息 –

+1

不幸的是,这是一个非常手动的过程..:} – user2864740

相关问题