Ian Bicking: the old part of his blog

Bazaar-NG, try 1

Some thoughts on bzr, aka Bazaar-NG (a distributed version control system, like Subversion, BitKeeper, Arch, etc)

So... I'm not sure what the next step is for me. I don't have a project I'm looking to make distributed at the moment, and I can't really consider moving an existing project until I understand how this stuff is supposed to work. There's a document for CVS users (CVS?), but it kind of drifts off just at the point it would get interesting.

Created 28 Mar '06

Comments:

Check out darcs.

--titus

# Titus Brown

I concur. I'm a big big fan of darcs. Took me a little while to figure out the right way to do some things, but now it seems like such a natural way to do source control. Haven't tried it in a team though.

Jay P.

# Jay P.

I tried Darcs quite some time ago, but like Bazaar I didn't have anything I wanted to use it on at the time. I like Darcs' relatively small command set, and it didn't take me long to be able to use it. But I never really used it, and it's the workflow that most concerns me. I notice they do have a best practices document, which is nice.

Other than that, I don't really know why to choose one over the other. My interest in Bazaar is in part the implementation language, and that it is backed by a real institution. But, I must admit I am also impressed by Darcs' implementation language; it really seemed to set off a lot of true productive Haskell programming. This comparison doesn't find Bazaar better in many ways, though many Darcs items are blank (someone should fill them in).

I think Bazaar probably has the most potential of success if it can act just like Subversion, except with nice merging. Then people can use other features incrementally, but Subversion (or the CVS model more generally) is the proper starting point (at least from a marketing point of view). Which leads one to svk. Which is also easy to type than bzr or darcs.

# Ian Bicking

OK -- use svn, and then use tailor to export it as a distributed project ;).

The only real solution, I think, is to actually use one or the other. Try contributing to twill, why not? ;)

# Titus Brown

My brief experiences with svk were:

  1. It was very, very slow.
  2. It fell over with odd errors.
  3. It had even worse documentation than most other [RV]CSs I've encountered.

Having worked mostly with Bazaar and CVS, the one thing about CVS I miss with Bazaar is the documentation, particularly examples. Being told over and over again that some special name or token I'm using is invalid, without any documentation about what is actually valid, really annoys. Having to trawl various blogs, some being out-of-date, just to find stuff out also really annoys.

It's a shame because someone has clearly made an effort to write nice help texts for the baz commands. If only they'd realised that examples would mostly complete the job and reduce developer stress by 95%. I hope they've figured that out with bzr...

# Paul Boddie

First I have to say "What about Mercurial?" At the very least "hg" is easier to type than "bzr" ;) . It's also written in python, it's much, much faster than bzr when downloading/uploading stuff and is much more space efficient. http://www.selenic.com/mercurial/

About bzr... You can get the status/diff/... of everything starting with the current directory with something like "bzr status ." . I think a checkout is just a branch without the history (but then again I'm a bit confused with bzr's branches/checkouts/repositories...)

# anonymous

I'd suggest trying Mercurial too. It's somewhat more minimalistic than bazaar-ng but very easy to use and powerful. It deserves a try... and even a blog entry of its own ;). Hope this helps you find a nice DVCS that suits your needs.

# pachi

It might be hard to find one that meets my needs, since if you'll remember I have no real needs ;)

# Ian Bicking

In regards to "track changes in different checkouts" look into bzr missing bzr missing http://blah.com/other/branch ran from the root of your branch will spit out the revid logs for what differs.

Finally... for checkout vs branch, _my_ understanding is the same, checkout will be used for creating bound branches, eg think cvs co where you get just the working files instead of full history- history related operations will have to access the actual repository.

# anonymous_coward

I've tried out hg (mercurial) some time ago. Looks really promising.

# Armin Ronacher

If it starts to bug you you can always copy bzr.bat to a different file name. :)

Seriously, I've also been trying out bzr and have had some of the same problems that you have. bzr is still in development phase so I feel somewhat forgiving that it is still rough and missing some features. It is a distributed system so it probably will never be a perfect replacement for svn. The model of bzr is based on the idea that every programmer has their own copy (branch) of the entire code history.

# James

Hi Ian,

Bazaar does support push without bzrtools. For remote push, you can use ftp out of the box, or install the Paramiko ssh library to use it with almost any ssh account. (e.g. bzr push sftp://myshellhost/home/ian/branch)

The difference between checkout and branch is that checkout does not create an independent branch-- all of your changes will go into the original branch when you commit. It's very much like svn co, and sharing a branch using svn. If you're out of date, you must update before you can commit. branch, on the other hand, creates a new independent line of development that will not affect the original, until you deliberately merge it in.

# Aaron Bentley

Re: push -- I guess it was that I couldn't tell the difference between didn't-work and shouldn't-work. It didn't work for me, but I couldn't tell that if it should or shouldn't. Which I guess comes back to the error message thing. Or maybe it was something related to the versions I used -- I upgraded from 0.7 to 0.8pre at some point in my testing, and also installed bzrtools, and something eventually started working that didn't before.

The checkout thing makes sense then, and makes it more interesting. If that works fairly easily with remote repositories, then that will be a very nice bridge from traditional svn usage.

# Ian Bicking