How to view revision history for Mercurial file?

MercurialDiffRevision

Mercurial Problem Overview


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.

Mercurial Solutions


Solution 1 - Mercurial

hg log file

hg diff -r 10 -r 20 file

Solution 2 - Mercurial

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.

Solution 3 - Mercurial

For readability

hg diff -r revision1:revision2 file

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

Solution 4 - Mercurial

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMarcus LeonView Question on Stackoverflow
Solution 1 - MercurialzerkmsView Answer on Stackoverflow
Solution 2 - MercurialGeoffrey ZhengView Answer on Stackoverflow
Solution 3 - MercurialCarlo ChumView Answer on Stackoverflow
Solution 4 - MercurialJasper UijlingsView Answer on Stackoverflow