我有一個包含數千行代碼的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