So far, I've been mostly discussing with valv on IRC and read the opinions in the
other thread concerning SCM. As it is kind of difficult to get all the developers on IRC at the same time, I thought we should hold a poll here. I'll summarize what we have so far.
It's increasingly clear that SVN doesn't quite cut it as a source code management system anymore, and chameleon should be moving onward to tools that allow for more productivity, especially in the way of maintaining branches and getting good features into the stable release more easily. As it is now, the branches in SVN are basically forks with little flowing back into mainline chameleon. Thus, distributed, change-oriented source code management.
There are three contenders (listed alphabetically here): Bazaar (or bzr), Git, and Mercurial (or hg).
I've read through the introductory documentation of each, and this is what I found:
| Bazaar | Git | Mercurial |
Origin | Canonical (Ubuntu) | Linux Kernel | ? |
Written in | Python | Perl/C | Python |
Permissions | fine-grained (builtin) | fine-grained (external) | binary (access or not) |
GUI | extensive (builtin) | rudimentary (builtin) | varying (external) |
Compatibility | svn,git,hg | svn | many (import only) |
Speed1 | OK | fast | OK |
Hunk-Level commits2 | no | yes | yes |
Staging area3 | no | yes | no |
Global Tags3 | metadata | metadata | tracked in a file |
1see
bazaar speed comparison2can split a commit into smaller than filewise changesets
3the staging area is an additional step where you prepare a commit by selecting all the changes you want before actually committing. Many people have a hard time getting used to it at first, but it can be a helpful tool.
All will be accessed using SSH and public keys -- so you may want to familiarize yourself with that. Usage complexity on the command line is comparable, git is just a bit more complex because it exposes pretty much everything under the hood where the others make some abstractions.
If I missed out on something important, please let me know, I'll edit the post then.