views:

739

answers:

6

I'm researching the GIT and Bazaar capabilities and wonder which one has more feature-rich code management?

Here you can find the location for both source control engines:

GIT

Bazaar

+5  A: 

It's going to come down to personal preference, plain and simple.

I use Bazaar and find it extremely easy. The staging are concept in Git gives some nice flexibility but it also adds complexity. You can quite easily manage code in Bazaar with something like 4 commands (add, commit, merge (maybe push/pull) and log or qlog), and you only need merge if you want multiple branches.

Usually Bazaar seems to do the right thing. I've never really had a problem with it doing something stupid or letting me do something stupid.

Daniel Straight
+7  A: 
VonC
FryGuy
@FryGuy: may be this answer might be a little more explicit: http://stackoverflow.com/questions/995636/popularity-of-git-mercurial-bazaar-vs-which-to-recommend/995799#995799
VonC
@FryGuy: git can detect changes across files. For example, say you have one file with two functions, and split it into two functions. You simply cannot track this using rename. Git and its rename detection can do this, and it works very well in my opinion (but is slow - very slow compared to other git operations, it can take up to 10-15 seconds for large files). I have an example here: http://cournape.wordpress.com/2009/05/12/why-people-should-stop-talking-about-git-speed/To me, this + cheap branches are the two killer features of git compared to other tools.
David Cournapeau
According to the comments on that article, that is just post-hoc analysis tools -- the same could be done with bazaar, just like git could have as good of a gui tool as qbzr. Both git and bzr store snapshots of the directory tree at each revision.
FryGuy
Yes, it is "just " post-hoc analysis - but I disagree that the same could be done in bzr. In theory, sure, you are right, but in practice, to be able to handle the whole tree in an efficient manner is so deeply ingrained in git, and it is out of the question with bzr for big repo ATM (bzr needs several copies of every file it handles in memory IIRC, so handling all of them at the same time would be painful). I think it will be a very long time before you see the feature in bzr or hg, if ever.
David Cournapeau
+6  A: 

I think it depends on your personal taste - there are arguments for both of them. I have used bzr extensively for personal projects for a couple of years, since the 0.8 days, but I have switched to git last year, and never looked back, at least for source code management.

I am too lazy to rewrite my own impression, but to sum it up:

  • bzr works more consistently across platforms
  • bzr is more discoverable (if you are given the tool wo any documentation, any semi-competent user will be able to use bzr, that's not so true with git)
  • bzr is easier to extend in an API way, git is easier to extend in a unix way (pipes)
  • git is immensely more powerful IMHO; in particular, I am convinced that their approach for rename handling, and content tracking is the right one for many cases
  • the bzr revno system is not good IMHO. It looks simpler, but it is deeply confusing once you start having many branches and change the mainline.
David Cournapeau
+1  A: 

The one thing that Git does much, much better is handling lots of branches. It does it much faster than bzr, and doesn't require multiple copies of the source code. All branches are inside the same directory. I find myself using git branches much more often than I used to do with bzr, specially because my repo is not small and also involves binary files (total 180MB).

EDIT: Actually, I'm wrong. --no-trees + lightweight checkout does work like Git. Thanks, FryGuy. Oh, and I found this blog entry which has useful information.

João Marcus
You can achieve the same workflow in bazaar. That's one of the features of it I like, in that you can use any workflow you want, rather than the "git way" of doing things. See --no-tree branches, and --lightweight checkouts, and `bzr switch` between the branches (as folders on your disk).
FryGuy
You'll still have multiple copies of the source code, one for each branch, so, it's the same workflow, but not the same approach. Anyway, when using bzr, you should use stacked branches, it's better than lightweight checkouts.
João Marcus
No you won't have multiple copies of the source code. That's what "no-trees" does. I've got over 70 branches on my current project, and only one copy of the source code on my hard drive (in bazaar at least, I have a few other snapshots before I started using bazaar). My .bzr folder is ~190 megs, and my source tree is 1.76gigs, so I'd notice if it were there multiple times.
FryGuy
that's my repository .bzr folder, not the branches. My branches folder is only 22k total.
FryGuy
+1  A: 

Bazaar is very well integrated with ubuntu, I have been using ubuntu for many years now, tired to switch to other more geeky distro, but no point. I choose bazaar over git/mercurial coz bazaar is notifications are very well integrated in Ubuntu. In addition you get free hosting from Launchpad which is a huge plus.

Vivek Sharma
It's not a plus since you can also get free Git hosting from GitHub and others.
David Plumpton