Subject: Re: bug#13405: 24.3; log-view-diff-changeset reports wrong results

From: Andy Moreton <[email-masked]>
Date: Sat, 12 Jan 2013 14:22:27 +0000

On 11/01/2013 23:13, Stefan Monnier wrote:
>> 3) In the *vc-change-log* buffer, type D (log-view-diff-changeset) to view
>>     the changeset for that single revision.
>>     Emacs runs "hg diff --git -r 46768 -r 46769", but this does not show
>>     the expected contents of the changeset, as the previous revision was
>>     on a different named branch. Instead this shows the (large) diff between
>>     the two branches. The line counts illustrate this:
>
>>     # hg diff -r 46768 -r 46769 | wc -l   ## Diff between branches
>>     102276
>>     # hg diff -c 46769 | wc -l            ## Changeset diff
>>     295
>>     # hg log -p -r 46769 | wc -l          ## Changeset diff + hg metadata
>>     302
>
>>     The second and third commands give the expected output.
>>     Can log-view-diff-changeset be changed to deal with this case more
>>     gracefully ?
>
> VC assumes you can get the changeset by running
> "hg diff -r <something> -r 46769".  Is there a <something> that would
> give the right answer?  Ideally this <something> should be computable
> from "46769".

This can be done using revsets:
# hg diff -r46769^1 -r 46769 | wc -l
295

However that relies on having a new enough version of mercurial that 
supports the revsets syntax. The "hg diff -c" or "hg log -p" commands 
work with older mercurial versions that do not support revset syntax.

     AndyM