2012-11-25 77 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

相關問題