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
-~----------~----~----~----~------~----~------~--~---