Georg wrote:
> Hi,
>
> in the 0.12 multi repository branch, when I display a merge changeset, I get
> a very unusual display (see attachment).
> The .ccinventory file exists, but it is not the only file that changed.  The
> "." for current directory occurs twice.
> Clicking on .ccinventory or any of the "." displays the .ccinventory file
> (download dialog).  Clicking on any of the "view diffs" simply redisplays
> the same page ?
>   

Ok, the display of a changeset could certainly be improved when there's 
only one file to show (no Location: and "." entries).

The very unusual display you're seeing is actually expected. Let me explain.

I'm seeing the same kind of effect on some of my own merge changesets 
and I verified that what I was seeing was actually the right thing.  
First, for any changeset, Mercurial gives you the list of files for 
which the corresponding index files (.i) had to be modified in the 
repository. So for a merge changeset, this corresponds to the files that 
have evolved differently in *both* branches being merged. Index files 
which have evolved only in one branch are left unmodified after a merge 
and therefore won't show up in the list.

In your case:
$ hg log --template='{files}' -r 120
..... .ccinventory .... someotherfile ....

Then, it can happen that for someotherfile, there has been a different 
*history* along the different branches (so a new revision will have to 
appended to someotherfile.i), but in the end the content is actually the 
same in both parents, before the merge.

$ hg log --template='{parents}' -r 120
parent1:... parent2:...

$ hg log -r parent1 -r parent2 someotherfile
<no differences>

In that case, Trac can't show a diff as there's none.

According to the same effects, a merged file can differ from only one of 
the parents and then Trac will show you only that diff. If the merged 
file differs from both parents, Trac will show you *both* diffs (and in 
the future that will be shown as a 3-way diff).


> I expected to see a normal changeset display, listing the differences to the
> first parent.
>   

Well, I can understand that one would like to see the net effect of a 
merge, i.e. all the differences from a selected parent, especially since 
this is not yet very intuitive to do from the revision log interface (it 
will when the revision log will show the graph).

But that sort of diff is simply not what you get when you focus on the 
changeset data itself. Furthermore I think it's actually a good thing 
that the changeset view focus on the changes corresponding to the 
changeset itself and only on those:
 - this allows you to identify extra changes that were eventually added 
during the merge itself,
 - this allows you to see when there have been conflicts and how they 
were resolved (and as noted before this will be improved in the future 
by the 3-way diff)
 - if there's no diff shown, that was obviously a clean merge

That being said, I have to think a bit to see how this alternative 
changeset view could be implemented.
Btw, shouldn't that rather default to the second parent, which 
corresponds to the merged head, i.e. the branch you're merging "in"?

-- Christian


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Trac 
Development" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/trac-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to