Is it easier to manage code with Git or Bazaar?

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

  • bzr: Softly undo last commit
  • Git history visualizer GUI that can hide branches?
  • Bazaar + CruiseControl.Net
  • Import Git repo with signed commits into Launchpad
  • Bzr Blame Statistics
  • Is it possible to do a partial clone/branch with either bazaar, mercurial or git?
  • git pull in hooks/post-receive failed
  • How to set up a rebase in Git Bash on Windows
  • GIT: remove remote branches with no local tracking branch
  • How to get the last commit date for a bunch of files in git?
  • git count files in the staged index
  • Where can I find the patience diff implemented?
  • 8 Solutions collect form web for “Is it easier to manage code with Git or Bazaar?”

    I suppose you also read Bazaar vs. Git article, but in the end, it all comes down to what you are looking for in term of “feature-rich code management”.

    • If, by code management, you are referring to file (and directories and renaming), go with Bazaar.

    • If, by code management, you are looking at content management, Git is designed to manage just that (the staging area, for instance, allows you to record what current content you want to commit, even though you have already begun to make some large modification you end up not wanting to commit in the current branch)

    To be sure, re-read Linus’s original vision for Git (back in April 2005). If you do agree with it, chances are Git will deliver what you want. In short:

    • very simple model (blob-tree-commit-tag)
    • no metadata added (for tracking renaming for instance)
    • “strong” principles like:
      • “files” do not matter. The only thing that matters is how “content” moved in the tree
      • You have an SCM that tracks what changed at the only level that really matters, namely the whole project. None of the information actually makes any sense at all at a smaller granularity, since by definition, a “project” depends on the other files, or it wouldn’t be a project

    That “all project” notion is actually a strength an a limit for Git in term of project management: you should not seek to put everything into one Git repository.

    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.

    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.

    See:

    What are the relative strengths and weaknesses of Git, Mercurial, and Bazaar?

    Bazaar’s development has stopped. The last release is 2.6, dated 2013-08-04. There have been less than 20 commits since then as of April 2015.

    If you’re starting with version control, you should consider one that is active (most likely this will be Git or Mercurial).

    Edit: a 2.7 release was made since my post, but it doesn’t change the fact that the project is essentially dead with ~10 commits/year.

    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.

    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.

    The best reason to use git vs bzr/hg is because github rocks. Launchpad is OK, but github gets search, social and style right.

    Technically launchpad is probably better in many ways. Merges, integrated build systems, and other features make launchpad appealing to many. The builtin editor on github, the gists… there’s a flow there that launchpad doesn’t have. Visually, socially, there’s no competition.

    Git Baby is a git and github fan, let's start git clone.