Proper tracking of file-level operations: rename, directories, merges

Ben Finney ben+bazaar at benfinney.id.au
Tue Oct 25 04:47:11 UTC 2011


Martin Geisler <mg at aragost.com> writes:

> Ben Finney <ben+bazaar at benfinney.id.au> writes:
>
> > Martin Geisler <mg at aragost.com> writes:
> >> The point is that you cannot see the difference between a "rename"
> >> and a "copy+delete". If you can, then we have a bug in Mercurial
> >> (and we would like to fix it).
> >
> > Great: The bug is that Mercurial knows the difference between a
> > request to ‘hg mv foo bar’ versus a request to copy+delete, but
> > fails to maintain that distinction in the revision data.
>
> I've asked you many times, but you have failed to demonstrate why it
> is important to maintain the distinction. Please don't ignore this --
> show a situation where Mercurial fails to merge the same nice way as
> Bazaar does because Mercurial "only" has a copy+delete to work with.

I don't know why you're restricting the scope to merge; this is a
problem even if it doesn't affect merge. (Maybe it's because I listed
several distinct topics that were under discussion when I changed the
thread subject. If so, my apologies for the confusion.)

The distinction is important because it affects the behaviour of the VCS
for recipients of that revision data, as explained before. Mercurial
fails to support the distinct operation that is requested with ‘hg mv
foo bar’, Bazaar supports it correctly, that's why I'm saying Bazaar's
behaviour is superior here and Mercurial's is buggy.

> That's good -- can you then please tell me how this affects Bazaar's
> behavior in a way that copy+delete doens't do for Mercurial?

I believe I already have.

> I mean *merge* behavior

Why only merge?

> since merging is a killer feature of a DVCS.

I don't see why that one feature should constrain the set of features we
want to behave well.

> If you only care

I care about many things :-) but am trying to communicate a particular
behavioural flaw since I trust you are sincere about wanting to
understand it.

> about output behavior of 'hg status' vs 'bzr status', then yeah...
> looking at 'hg status' sucks when you're renaming things.

And when you receive (whether merged or not) revision data from some
other branch.

> Now, Bazaar has no 'copy' concept:
>
>   https://bugs.launchpad.net/bzr/+bug/269095

Does it affect behaviour in some manner that is semantically
significant? If so, I'm happy to consider that a bug too, if you like.

“Mercurial's lack of rename support is a bug” does not in any way
exclude “Bazaar's lack of copy support is a bug”, and acknowledging the
latter won't diminish the force of the former.

-- 
 \     “Facts are stubborn things; and whatever may be our wishes, our |
  `\   inclinations, or the dictates of our passion, they cannot alter |
_o__)        the state of facts and evidence.” —John Adams, 1770-12-04 |
Ben Finney




More information about the bazaar mailing list