Richard Lowe wrote:
> Mike Kupfer <mike.kupfer at sun.com> writes:
> 
>>>>>>> "Nathan" == Nathan Bush <nathan.bush at sun.com> writes:
>> Nathan> webrev tries to execute "hg diff -g -r $HG_PARENT $CWS/$DIR/$F".
>> Nathan> In the case of this file, there is a strange discrepancy and the
>> Nathan> rename is getting lost.  For example, if I try the same command
>> Nathan> manually, it is shown as a new file:
>>
> 
> [much snipping]
> 
>> I wish I understood the implications of this, especially for Cadmium.
> 
> This problem, and similar, are why hg-active exists.  The effort to
> make webrev do the right thing in the face of branches and merges
> using purely the CLI was too great to bear, so we didn't.  If that's
> going to be the same in this case, I'd advocate the same solution,
> teach hg-active to spit out the info you need (which is trivially
> available there, as best as I can tell).

I think there is already enough information available to webrev to
detect this situation, since hg-active provides both the old and new
filenames in case of a rename.  I think webrev could be changed to
check that if the hg-active output reflects a rename, but the first
diff did not show it as one, try a second time with the other filename.
This would give one "deleted file" diff for the old filename, and one
"new file" diff for the new filename.  It's enough to get the permissions
for both.

> 
> I'm not sure what implications you're expecting for cdm?
> 
> The behaviour described above is also not the same with 1.0, against
> 6349:0f466480ceaf it notices the rename.
> 
> The fact the results differ between the two sides of a merge is, I
> think, correct.  When you say "if you think of the repo as having two
> unnamed branches", this is literally the truth, and the behaviour we
> get now is what I'd expect from that.  The diff is between the
> absolute revisions specified, not across a path in the history between
> the two.

Does this mean we should use different terminology on the webrev
index page if the parent and child are on different branches?  Such
as "compare to" instead of "rename", "no comparable file" instead
of "deleted", etc?  In other words, the branches could be evolving
towards the same eventual merge but at different rates -- how do we
know, when comparing two revisions from arbitrary points on each
branch, if a particular file is deleted or just not yet created?

--Nathan

> 
> Perhaps I'm not understanding though?
> 
> -- Rich


Reply via email to