Subversion? (Re: HEADS UP: Importing csup into base)
Peter Wemm
peter at wemm.org
Sun Mar 5 19:30:33 PST 2006
On Saturday 04 March 2006 09:11 am, Chris BeHanna wrote:
> On Mar 4, 2006, at 10:32 AM, Robert Watson wrote:
> > On Sat, 4 Mar 2006 pfgshield-freebsd at yahoo.com wrote:
> >> I wanted to avoid turning this thread into a discussion of the
> >> different VCSs but perhaps that might be healthy. Many people like
> >> perforce... I wonder if the developer community would be happy to
> >> accept a "commercial" solution.
> >
> > [...Perforce met a critical need for branched development, and
> > Subversion could not import the repo at the time...]
>
> And, as I recall, at the time, subversion's ability to manage
> branches in a lightweight fashion was just not there.
>
> How is it now? If it still cannot compare to Perforce, then it's
> likely a non-starter.
I was also one of the svn opponents at the time. At the time, it was
nowhere near "there" yet. Not even remotely.
However, I'm starting to think otherwise now. We probably could switch
from cvs to svn now, and without losing any functionality.
Like perforce, it is fully client/server, but it has some considerable
advantages over perforce:
1) It has fairly good detached operation modes. You can do logs, diffs,
reverts, etc while detached. It does this by keeping metadata and a
small number of revisions cached locally.
2) It is fully open source. In spite of Perforce's promises to build
clients for us for any of our released platforms, they still have not
given us a native sparc64 client, even after repeated requests. An
amd64 and ia64 client would be nice, but it isn't as much of a killer
as the missing sparc64 client is. svn would free us of this problem.
3) It has built-in http and source browser functionality. Think cvsweb
etc.
4) svn has its own mirror system. we could use it if we wanted.
5) And this is the kicker.. most client metadata is kept on the client!
This is the very reason why we cannot use perforce for freebsd.org for
everybody. The number of checkouts is way too large. svn keeps most
of this on the client, so this scales easily with more clients.
6) Finally, some icing.. its Apache/BSDish in its licensing. Not GPL.
What svn doesn't change (relative to perforce):
1) the need to replicate the key branches to cvs. We have such a huge
investment in cvs, the cvsup network, etc, that we cannot just discard
this. No matter what vcs we use, we have to maintain this. Like with
perforce, we can easily replicate svn changes to a cvs tree and all
existing users of cvsup etc will be none the wiser (except for a change
number included in new cvs commits).
2) source tree wouldn't be held hostage. If svn didn't work out, we
could just have another flag day, turn off the svn->cvs replication and
go back to using cvs as the master again. It would be a disruption,
but no major drama.
3) We get all the same goodies like atomic commits, change sets, cheap
branches, etc etc that perforce gives us, just in a different way.
I'm sure there are many other pros and cons, and I know there are other
alternatives besides svn (eg: svk, mercurial, etc etc). I know there
are lots and lots of quirks in svn as well. But I've warmed up
considerably to the idea of something like svn compared to a year or
two ago.
The comments about svn's lack of branch merge memory make me a bit
nervous though. We've had brahcnes that have been incrementally merged
hundreds of times under perforce, and the lack of remembering which
revisions have and have not been merged would be sorely missed.
And my personal observation is that svn finally seems to be becoming the
defacto replacement for cvs, at last. It has picked up some very high
profile projects - gcc for one, asterisk, etc etc. I'm sure it will
improve at an even faster rate now.
> Perforce's *huge* weakness is the way it handles its metadata (it
> wants to keep some of its databases entirely in RAM, and they get
> HUGE). This prevents distributing the repo, and it prevents granting
> public, anonymous access to the p4 side of the world for freebsd.org
> (cripes, you'd need an E15K or an Altix cluster to have enough RAM
> and backing store for that!), but nothing else I've seen can do
> branching and merging the way Perforce can.
Yes, this is one of the key reasons why we can't use perforce for
primary development. Having the metadata on the server is the killer.
We just can't do it with our load. We've already almost killed the
perforce server on repoman from metadata overload, and that was with a
tiny percentage of developers using it!
--
Peter Wemm - peter at wemm.org; peter at FreeBSD.org; peter at yahoo-inc.com
"All of this is for nothing if we don't go to the stars" - JMS/B5
More information about the freebsd-arch
mailing list