3 ms·
I still use Bazaar for personal projects and sometimes as a frontend for Git repositories. Things that Bazaar got right that I find missing from most other DVC
by rbehrends 9y ago
I still use Bazaar for personal projects and sometimes as a frontend for Git repositories.
Things that Bazaar got right that I find missing from most other DVCSes:
- Branches (including remote branches) are first-class citizens. I can add and remove tags for remote repositories as though they were local, I can diff against and merge from remote branches, I can view a log for remote branches. It gives me most of the essential GitHub functionality on the command line.
- It accomplishes that by properly abstracting over the transport layer. This also means that you can use any computer that you can use ssh with for remote repositories/branches via the `sftp` protocol without having to install Bazaar on that machine. While this is not recommended for large projects, it makes it pretty easy to share and collaborate on your projects if you have some old server lying around (e.g. in an academic setting).
- Unlike most other DVCSes (except Fossil), Bazaar put some thought into how to present revision graphs to users; rather than dumping the raw graph, it uses hierarchical logs, which I find generally more intuitive.
- A particular benefit is that there's generally no need for rebasing; while Bazaar has a rebase plugin, you can generally avoid rebasing, as linearizing history is unnecessary (and arguably counterproductive).
- Another side effect of hierarchical logs is that there's an intuitive canonical revision numbering scheme. You don't need hashes, any revision is uniquely and globally consistently identified by the pair (branch, revision number). This also makes `bzr annotate` more readable.
Downsides of Bazaar:
- Bazaar didn't have the development efforts put into it that Git and Mercurial got, so it still has some rough edges for advanced use cases. For example, if you do `bzr uncommit`, `bzr commit` does not give you the option to reuse the commit message (even though it's saved and the GUI version of commit will properly prepopulate the commit message box).
- Customization is cumbersome, and generally requires writing a plugin rather than templating (unlike, say, Mercurial, which has superior customization options).
- Like Git (though for different reasons), Bazaar requires you to periodically repack your repository, and for large repositories with a long history that can take a fair amount of time. For example, the Dart SDK repository (50k+ commits, 17MB checkout) can take several minutes to repack. While this is infrequent (I think the really expensive repacks occur only every 10k commits or so), when they happen, it's a pain.