From owner-freebsd-questions@FreeBSD.ORG Thu Apr 2 02:54:57 2009 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AFB661065672 for ; Thu, 2 Apr 2009 02:54:57 +0000 (UTC) (envelope-from keramida@ceid.upatras.gr) Received: from poseidon.ceid.upatras.gr (poseidon.ceid.upatras.gr [150.140.141.169]) by mx1.freebsd.org (Postfix) with ESMTP id 284AE8FC1B for ; Thu, 2 Apr 2009 02:54:57 +0000 (UTC) (envelope-from keramida@ceid.upatras.gr) Received: from mail.ceid.upatras.gr (unknown [10.1.0.143]) by poseidon.ceid.upatras.gr (Postfix) with ESMTP id 100B2EB5E6D; Thu, 2 Apr 2009 05:54:56 +0300 (EEST) Received: from localhost (europa.ceid.upatras.gr [127.0.0.1]) by mail.ceid.upatras.gr (Postfix) with ESMTP id E4CBE4509B; Thu, 2 Apr 2009 05:54:55 +0300 (EEST) X-Virus-Scanned: amavisd-new at ceid.upatras.gr Received: from mail.ceid.upatras.gr ([127.0.0.1]) by localhost (europa.ceid.upatras.gr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hxMpQeI8TsA5; Thu, 2 Apr 2009 05:54:55 +0300 (EEST) Received: from kobe.laptop (unknown [188.4.10.162]) by mail.ceid.upatras.gr (Postfix) with ESMTP id 87F124503F; Thu, 2 Apr 2009 05:54:55 +0300 (EEST) Received: from kobe.laptop (kobe.laptop [127.0.0.1]) by kobe.laptop (8.14.3/8.14.3) with ESMTP id n322ssL9014976; Thu, 2 Apr 2009 05:54:55 +0300 (EEST) (envelope-from keramida@ceid.upatras.gr) Received: (from keramida@localhost) by kobe.laptop (8.14.3/8.14.3/Submit) id n322srGa014975; Thu, 2 Apr 2009 05:54:53 +0300 (EEST) (envelope-from keramida@ceid.upatras.gr) From: Giorgos Keramidas To: Chuck Robey References: <49D27B25.80003@telenix.org> <49D2CEF9.9030304@telenix.org> Date: Thu, 02 Apr 2009 05:54:53 +0300 In-Reply-To: <49D2CEF9.9030304@telenix.org> (Chuck Robey's message of "Tue, 31 Mar 2009 22:18:33 -0400") Message-ID: <87k5637ojm.fsf@kobe.laptop> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.91 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Andrew Wright , FreeBSD Questions Mailing List Subject: Re: going from cvs to svnq X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Apr 2009 02:54:58 -0000 On Tue, 31 Mar 2009 22:18:33 -0400, Chuck Robey wrote: > What I don't know is, I use cvsup all the time, but when I switch to > svn, what does the "cvsup" job of tracking an archive (not tracking > the sources, I mean the archive)? Does svn do it all itself? If so, > I can find out how, I just want to know if that's how its done. If > not, what's the general tool used to track the freebsd archive, so I > can investigate it? Hi Chunk, CVSup does two things: * It can check out copies of all the files in a remote repository, using date- and time-based snapshot info, or just CVS tag names. * It can mirror the RCS metadata of a CVS repository. These two operations are replaced, in a Subversion world, by the svn(1) client and a utility called svnsync(1). The svn(1) client can check out a snapshot of the Subversion repository using a revision ID, a date, or one of the special tag paths we have in the Subversion repository. The syntax for specifying the revision is slightly different from CVS, but more on that later. The good thing about svn(1) is that its operation is actually 'safer' than cvs(1) or CVSup, because a revision is either fully committed into the remote repository or is isn't. You can't check out half of a change from a Subversion repository, because you were unlucky enough to run the client when only half of a commit had been stored into the repository. I expect this sort of 'transactional' property of the Subversion tree to appeal a bit to all the users. Those who run CURRENT will like the fact that they won't get half of a commit, spend a few hours chasing down build problems, and then realize they could have avoided all that by checking out a full copy. Even the users who run STABLE will probably be a bit happy about this sort of transactional behavior of commits, because it means that in periods of high checkout load (i.e. right after an important security fix), they know that they either _have_ the change that fixes the issue or that they _don't_ have it. Checking out sources: ==================== Checking out with svn(1) is currently supported by the online Subversion repository, which is read-only to everyone and is accessible at: http://svn.freebsd.org/base/ You can point an svn(1) client there and check out parts of the source repository. Please do *not* check out a full copy of the _entire_ tree though. It will contain dozens of branches and several dozens of vendor applications that you most certainly _don't_ care about, and it will put a huge load on the Subversion server for no useful purpose. Before checking out with svn(1) you should take a bit of time to browse the repository and see its structure and there each branch lives. There is a web interface for the repository at: http://svn.freebsd.org/viewvc/base/ This should be a bit friendlier looking than the raw 'svn over http' pages of the `http://svn.freebsd.org/base/' URI. The branches that are most interesting for checking out source snapshots are: URI CVS-style name ------------------------------------------------------------------- http://svn.freebsd.org/base/head/ CURRENT http://svn.freebsd.org/base/release/X.Y.Z RELENG_X_Y_Z_RELEASE http://svn.freebsd.org/base/releng/X.Y RELENG_X_Y http://svn.freebsd.org/base/stable/X RELENG_X Examples: If you want to check out a copy of `7-STABLE', you can use the command: % svn co http://svn.freebsd.org/base/stable/7 stable-7 This should create a local directory called `stable-7' with the full source tree of the CVS branch called `RELENG_7'. If you want to check out the security branch `RELENG_7_1', because you want to get the security bug-fixes of the 7.1 release, you can use: % svn co http://svn.freebsd.org/base/releng/7.1 Finally, if you want to check out the sources at the time the release of FreeBSD 7.0-RELEASE was cut, you can use: % svn co http://svn.freebsd.org/base/release/7.0.0 Notes: Subversion is a bit wasteful with disk space. A full checkout of the `/head' branch takes more than *double* the space of a CVS checkout. This may, essentially, mean that on systems with limited disk space it may be sensible to stick with CVS checkouts (or NFS mount the `src' directory) for now. `svn update' is a bit faster than `cvs update'. For checkout trees that have no or very little local changes, it is almost blazingly faster than `cvs update'. Keeping a local repository mirror: ================================== There is a tool called `svnsync' that can mirror the entire SVN repository to a local svn repository copy. I am not aware of any tool that can synchronize only *parts* of the repository history though. Its setup is a bit more convoluted than CVSup, and synchronizing into a completely `empty' local mirror will take ages. I will have to talk a bit with the repository admins for the best plan of making it easier to use `svnsync' or the plans for svnsync mirrors (like the CVSup mirror servers).