Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 Nov 2011 15:59:24 -0600
From:      "Conrad J. Sabatier" <conrads@cox.net>
To:        Matthias Apitz <guru@unixarea.de>
Cc:        freebsd-ports@freebsd.org
Subject:   Re: cvs checkout ./. csup
Message-ID:  <20111116155924.00c6a41f@cox.net>
In-Reply-To: <20111115094823.GA9461@sh4-5.1blu.de>
References:  <20111115094823.GA9461@sh4-5.1blu.de>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 15 Nov 2011 10:48:26 +0100
Matthias Apitz <guru@unixarea.de> wrote:
> 
> Since many years I'm fetching or updating /usr/ports with
> 
> # cd /usr
> # setenv CVSROOT :pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs
> # cvs checkout ports
> 
> and later do the updating just with:
> 
> # cd /usr/ports
> # cvs update
> # portupgrade -ai
> 
> The FreeBSD handbook describes (or recommends?) using 'csup' for
> updating ports tree... What is the advantage (or reason, if any)?

Basically, for doing updates across the network, csup is the preferred
method (for reasons of efficiency and less strain on the server).  If
you do need the versioning information provided by CVS (for example, to
create a diff to submit for a ports patch, or simply for convenient
access to the CVS history of a particular file), then you may want to
try the following method:

Use csup to maintain a local copy (default directory /home/ncvs) of the
parts of the CVS repo you need (src, ports, doc, etc.), using a modified
copy of /usr/share/examples/cvsup/cvs-supfile.  You'll probably want to
setup a cron job to do this automatically at regular intervals.

Then use cvs to update your /usr/{src,ports,doc} trees from your local
copy of the CVS repo.  Note that having a local CVS repo also eliminates the
need to use the pserver access method, if you're updating on the same
machine where the repo resides.

If you decide to do this, you'll need to remove your current working
{src,ports,doc} tree(s) and then do a 'cvs checkout' the first time
to setup the CVS-versioned tree(s).  For example:

export CVSROOT=/home/ncvs
cd /usr
rm -rf ports
cvs checkout ports

After having done the initial checkout, you can then use "cvs
update" (or simply "make update") to maintain the tree.

This gives you the best of both worlds: fast, efficient updates across
the network, while still providing access to all the versioning
features of CVS.

Hope this helps.  :-)

-- 
Conrad J. Sabatier
conrads@cox.net



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20111116155924.00c6a41f>