Comparison with Git, Mercurial or Darcs?

Zooko Wilcox-O'Hearn zooko at zooko.com
Wed Nov 4 04:10:27 GMT 2009


[My motivation in asking the following questions is mostly to improve  
darcs, but hopefully I'll accidentally improve bzr too.]

On Tuesday,2009-11-03, at 18:49 , Ben Finney wrote:

> I have recently been using Darcs, and many things about Bazaar are  
> much better in my experience:
>
> * It respects the recorded history of changes: When I make a change  
> and commit it, later changes don't threaten to alter or remove my  
> change from the ancestry. Changing history is possible, but is  
> exceptional; nothing like as common as ‘darcs amend’ or ‘darcs  
> obliterate’ etc.

Do you mean that you used 'darcs amend' or 'darcs obliterate' and  
then regretted it, or that someone else used them and removed your  
patch from their repository?  Of course changing the history of your  
own repo can't be prevented (without some sort of DRM), and of course  
it is possible to change history in bzr as well, but I wonder if  
there is some sort of "attractive nuisance" problem where darcs makes  
it too easy or makes it seem too safe and then you regret it.  (I've  
had that experience myself.)

>   On the other hand, “oops” moments are easy to undo (‘bzr uncommit’).

How does 'bzr uncommit' avoid the regret mentioned above?

> * It has a simple way to put some changes aside (‘bzr shelve’)  
> while committing the rest, and it's easy to bring uncommitted  
> changes from one branch to another, if while working on the change  
> there I decide they make more sense here (‘bzr merge --uncommitted  
> $OTHERBRANCH/’).

Are you saying that you find it to be *easier* to do that in bzr than  
in darcs?  I'm surprised, because I use darcs to do that sort of  
thing every day and it seems extremely easy to me.  Perhaps it is  
just that you were more expert at bzr when you made this comparison?

> * Especially, it allows for a centralised workflow when desired  
> (‘bzr checkout’ or ‘bzr bind’) without administrative overhead, and  
> without harming distributed operation.

Do 'bzr checkout' and 'bzr bind' do something different that 'darcs  
get' and 'darcs push' with regard to this?

> * Rename is a first-class operation
> * Directories — even empty ones — are first-class citizens

As Daniel Carrera already mentioned, both of these are true of  
darcs.  I don't know how you could make this mistake.  Did you read  
somewhere that rename wasn't first-class in darcs?

Thanks,

Zooko
---
Your cloud storage provider does not need access to your data.
Tahoe-LAFS -- http://allmydata.org




More information about the bazaar mailing list