marcin
marcin

Reputation: 3571

What problems can be expected with Bazaar 2.x VCS?

We are about to migrate from CVS to Bazaar.

After comparing features of git, hg and bzr it seems to me their capabilities are similar. Bazaar 2.x benchmarks show that its storage size and speed are between git and hg.

On the other hand most of people are choosing git or hg (according to ohloh only < 0.5% of the open-source projects uses Bazaar), so I'm a bit suspicious about Bazaar.

What problems should we expect when using Bazaar?

(So far I've had one problem: finding keyboard-operated GUI similar to tig for git. I haven't found one.)

Upvotes: 1

Views: 264

Answers (2)

bialix
bialix

Reputation: 21473

It depends what you're understanding by "problem". Some people are working with bzr in day-to-day basis and never encountered any problem that make their work impossible or very hard. That does not mean there is no strange features or quirks in bzr. It does mean that you can comfortable work with bzr if you understand what are you doing.

In general bzr is very pleasant to work kind of VCS, but to use it effectively you'd better know your restrictions.

If you will start working with bzr you should understand what is difference between branch, repository, shared repository and working tree. How shared repository helps you in your work and how to keep branches inside it. You should understand the differences between plain branch and checkout/lightweight checkout. If you want to continue working in CVS style you might want to use lightweight checkouts -- that's direct analog of CVS checkout and local working space on your computer.

With bzr you may find it a bit unclear how to set-up central server and set a proper access rights for all members of your team. Of course that's doable and official documentation has some examples. But proper ACL will require big help from *-nix ssh tools.

You should understand that with bzr the simplest way to refer to some revision is using its revision number. But you should know that this number is specific to specific branch, and different branches may have the same number N referring to the different revisions. So sometimes you will neeed to use unique revision identifier which is present in bzr, but that revision id is not default way to communicate with bzr because it's long and cannot be easily shortened to 8 or so characters like in git/hg. That revision numbers are determined by mainline concept, see below.

As of January 2012 you may observe the following restrictions.

With bzr you'll be forced to use mainline concept of the history. I.e. the left-hand parent of the revision is special and forms mainline of your history, while your merged revisions make merged history. Console bzr log by default shows you the mainline history, because showing the full history with merged revisions could be a bit slower for a really big history.

With bzr you won't have support for file copies, i.e. new file that continues the history of existing file.

With bzr you won't have support for CVS "modules" as the core feature. But it could be emulated by using special plugins (see bzr-externals or scmproj) to do that big project configuration work for you.

The list is not full, but that is what from time to time affects me personaly as long-time bzr user.

And the final one note. The main problem with bzr you will have is: almost everybody who uses git or hg will ask you every time: "Why did you choose Bazaar, when all guys in their company use git (or hg)".

The truth is that git is clearly winner as of January 2012 among other DVCS (git, hg, bzr, etc.) if you will count how many projects hosted on GitHub. And not only because git is superior, but because GitHub is so nice as well.

(Note for git users: I respect git, but use bzr as my own choice. Don't explain me why you think git is good, please).

Upvotes: 2

Adam Glauser
Adam Glauser

Reputation: 877

I've been quite happy using Bazaar, but I don't have much experience with other VCSs. My use case is an ASP.NET/C#/T-SQL proprietary web application, with a small team of developers.

I expect that you will have some growing pains moving from a centralized VCS to a decentralized VCS, though you can mitigate those with Bazaar by using the centralized workflow.

Regarding your question about a keyboard-operated GUI, I tend to use Bazaar mostly from the command line (using Powershell). However, there are some operations (detailed log reading, diffs, annotation) which I find are much easier to use with GUI.

The qbzr plugin allows me to launch GUIs for specific tasks from the command line. For the most part, this just means adding a 'q' in front of the command.

For example, try bzr qdiff on a working tree with changes. Most of the tools available in Bazaar Explorer are just the qbzr tools.

Upvotes: 3

Related Questions