Info Q article on DVCS - a request and some feedback

Ian Clatworthy ian.clatworthy at canonical.com
Thu May 15 01:00:13 BST 2008


Matthieu Moy wrote:

>> So A=add & R=remove => hg 0.95 is tracking a dir rename as a series of
>> deletes and a series of adds.
> 
> Reading "hg status --help" should help you understand your
> miss-understanding.
> 
> I like the way bzr deals with renames, and I don't know why -C is not
> the default for "hg status", but really, people should read the doc
> before trying to compare tools.

Matthieu,

Thanks for the tip - adding -C certainly helps and I wasn't aware of it.
After renaming dir2 to dir3, I then get:

  $hg st -C
  A dir3/greeting
    dir2/greeting
  R dir2/greeting

which I don't find obvious but --help clarifies the output. FWIW, if I
then commit this change, I'm back to the old output (in 0.95 at least):

  $hg ci -m "..."
  $hg st -C --rev 1
  A dir3/greeting
  R dir2/greeting

I'm sure hg's handling of renames is good enough for many - I'm not
suggesting it's broken and it's an improvement on git. I am suggesting
though that it's well short of what Bazaar does in several ways:

1. Reporting via status. Bazaar shows the rename as such (not as a
   copy+remove pair) and Bazaar shows directories as renamed (not
   each file inside it as changed).

2. Merging after directory renames.

The latter issue is the bigger one I feel.

Ian C.



More information about the bazaar mailing list