107
votes

For a given file in a Mercurial repository, how can you see the revision history?

And how can you diff two revisions of the file?

Ideally doing all this with visual tools (we use ExamDiff to do some other diffs).

I'd say this is basic source control functionality but I can't seem to figure out how to do this with Mercurial.

4

4 Answers

130
votes
hg log file

hg diff -r 10 -r 20 file
28
votes

The hgk extension gives you hg view file command that shows a visual history, from which you can diff/vdiff arbitrary pair of revisions.

TortoiseHg gives you thg log file command that does the same thing but looks better.

9
votes

For readability

hg diff -r revision1:revision2 file

Where revision1 and revision2 can be a tag, changeset etc.

5
votes

If you use TortoiseHg: Windows users can use Windows Explorer and view the revision history by right-clicking on the file.

For Linux users, you can do it within TortoiseHg but it took me a while to figure out how. You need to right-click on the desired file and select "File History". However, for some mysterious reason, the file needs to be unaltered. Furthermore, to find the desired file there are two options:

In ### revision set query### one can type:

file("**<myfile>")

The double ** are necessary to search directories recursively. This gives you immediately an list of all repositories in which the desired file was changed.

Alternatively, next to the ### filter text ### click first on the question mark sign and select "clean" to see all files in the repository. Then inside the ### filter text ### box you can narrow down the number of files shown.

Alternatively, Linux users can do it from a terminal as suggested by Geoffrey Zheng above:

thg log file