From owner-freebsd-arch@FreeBSD.ORG Mon Mar 6 03:30:33 2006 Return-Path: X-Original-To: freebsd-arch@freebsd.org Delivered-To: freebsd-arch@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2F85816A420 for ; Mon, 6 Mar 2006 03:30:33 +0000 (GMT) (envelope-from peter@wemm.org) Received: from canning.wemm.org (canning.wemm.org [192.203.228.65]) by mx1.FreeBSD.org (Postfix) with ESMTP id BE7DA43D45 for ; Mon, 6 Mar 2006 03:30:32 +0000 (GMT) (envelope-from peter@wemm.org) Received: from fw.wemm.org (canning.wemm.org [192.203.228.65]) by canning.wemm.org (Postfix) with ESMTP id 7B7B52A8FB for ; Sun, 5 Mar 2006 19:30:32 -0800 (PST) (envelope-from peter@wemm.org) Received: from overcee.wemm.org (overcee.wemm.org [10.0.0.3]) by fw.wemm.org (Postfix) with ESMTP id 1917AE2B5 for ; Sun, 5 Mar 2006 19:30:32 -0800 (PST) (envelope-from peter@wemm.org) Received: from overcee.wemm.org (localhost [127.0.0.1]) by overcee.wemm.org (8.13.4/8.13.4) with ESMTP id k263UVOs066148; Sun, 5 Mar 2006 19:30:31 -0800 (PST) (envelope-from peter@wemm.org) Received: from localhost (localhost [[UNIX: localhost]]) by overcee.wemm.org (8.13.4/8.13.1/Submit) id k263UQbq066140; Sun, 5 Mar 2006 19:30:26 -0800 (PST) (envelope-from peter@wemm.org) X-Authentication-Warning: overcee.wemm.org: peter set sender to peter@wemm.org using -f From: Peter Wemm To: freebsd-arch@freebsd.org Date: Sun, 5 Mar 2006 19:30:25 -0800 User-Agent: KMail/1.8.1 References: <20060304141957.14716.qmail@web32705.mail.mud.yahoo.com> <20060304152433.W61086@fledge.watson.org> In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200603051930.25957.peter@wemm.org> Cc: Chris BeHanna Subject: Re: Subversion? (Re: HEADS UP: Importing csup into base) X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Mar 2006 03:30:33 -0000 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@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@wemm.org; peter@FreeBSD.org; peter@yahoo-inc.com "All of this is for nothing if we don't go to the stars" - JMS/B5