I've recently been looking at mercurial, bzr-ng, and svn/svk.
As far as I can tell, bzr-ng doesn't support tags. I'm not 100% sure of this, because despite claims to the contrary, the website is a mess - do checkouts/repos work in the released version, or not? What is the released version? There are 4 different tutorials, but no reference manual.The "bzr for SVN" entry is just an advertisement about how much better the merging is. All of this is too bad, because I want to like it - it seems like it has the best shot of becoming the de-facto standard, long supported VCS.
I like the feel of mercurial, and for stand alone projects, I think I'll be using this. It also seems like a good choice for versioning arbitrary directories (e.g. /etc/postfix).
But there seems to be a fatal (from my point of view, for my particular application) flaw for all of the DVCSs: they don't handle integrating third-party libs etc. as part of a bigger project. You can't "bring-in" a particular subset of one repo into a different location in another. Yeah, there are ways to work around this with scripts that do recursive checkouts or whatever, but then I don't get the benefits of consistent branching and tagging, and the system ends up being less cabapable that CVS (in this particular area, but it's an important one for me.)
So I'll probably end up migrating to SVN, and hope they are able to get their act together w.r.t. merging soon.
But there seems to be a fatal (from my point of view, for my particular application) flaw for all of the DVCSs: they don't handle integrating third-party libs etc. as part of a bigger project. You can't "bring-in" a particular subset of one repo into a different location in another.
The core Bzr folks have been using the config-manager tool from Robert Collins for doing just this from back in the Arch days before Bzr existed. config-manager also allows one similar functionality to tags. If you want more tightly integrated functionality, bzr is pluggable (so having bzr subcommands call out to config-manager should be quite simple to implement, and not require any changes to core bzr code).
Personally, I'm waiting for Bzr's cherrypicking support to catch up with Arch -- when I've asked the core team, they indicated that such was a pre-1.0 feature. While they've kept backwards compatibility (via support to upgrade repository formats), bzr's backend is still very much in flux.# Charles Duffy
That is exactly my thought. How do you deal with library source code shared between projects? I would like to use a Dvcs, but this factor and lack of a gui interface are things that hold me back.
Despite Linus's comments on: http://www.youtube.com/watch?v=4XpnKHJAok8
I actually find CVSNT to be ok for now, and it does handle repeated merges ok (maybe not for a kernel sized project though).
Charles# Charles Pope