Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Jan 2013 09:51:12 -0500
From:      MFV <mrkvrg@acm.org>
To:        freebsd-questions@freebsd.org
Cc:        Matthew Seaman <matthew@freebsd.org>, "Zyumbilev, Peter" <peter@aboutsupport.com>
Subject:   Re: Cronjob Cvsup -> What?
Message-ID:  <201301270951.13292.mrkvrg@acm.org>
In-Reply-To: <5105057F.3090108@FreeBSD.org>
References:  <20130127001805.97F0119B@hub.freebsd.org> <5104E6B7.9070302@aboutsupport.com> <5105057F.3090108@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Hello Matthew,

Thanks for an outstanding piece of documentation.  It resolves a number of 
concerns I had and convinced me to move from portsnap where I discovered an 
apparent bug  that gave me security concerns.  More specifically I manually 
edited /usr/ports/UPDATING and portsnap did not recognise the change and 
download a proper copy.

The only downside with svn seems to be the 728 MB footprint.

Cheers ...

Mark

On Sun, 27 Jan 2013 05:46:23 Matthew Seaman wrote:
> On 27/01/2013 08:35, Zyumbilev, Peter wrote:
> > Last 10 years I am using cvsup. Any good guide for the transition to
> > subversion  ?
> 
> Most of the guides around freebsd.org are aimed at developers who will
> be using SVN read-write.  For simple read-only use (ie. not checking
> anything into the repository) the following should suffice:
> 
>   0) Install svn
> 
>      It isn't part of the base system, and it has too many external
>      dependencies with different licensing terms for it to be bought
>      in easily.  There's been some discussion about this, but it hasn't
>      happened yet.  If it did, the imported version would be fairly
>      minimal, and anyone wanting to use it for serious development
>      would probably just grab the ports version anyhow.
> 
>      If all you want to do is pull down a copy of the sources then you
>      can turn off most of the options to reduce the fairly large
>      dependency tree to something more manageable:
> 
>      BDB=off: Berkeley Database
>      BOOK=off: Install the Subversion Book
>      ENHANCED_KEYWORD=on: Enhanced svn:keyword support
>      FREEBSD_TEMPLATE=on: FreeBSD Project log template
>      GNOME_KEYRING=off: Build with GNOME Keyring auth support
>      KDE_KWALLET=off: Build with KDE KWallet auth support
>      MAINTAINER_DEBUG=off: Build debug version
>      MOD_DAV_SVN=off: mod_dav_svn module for Apache 2.X
>      MOD_DONTDOTHAT=off: mod_dontdothat for Apache 2.X
>      NEON=off: WebDAV/Delta-V repo access module (neon)
>      P4_STYLE_MARKERS=off: Perforce-style conflict markers
>      SASL=off: SASL support
>      SERF=on: WebDAV/Delta-V repo access module (serf)
>      STATIC=off: Build static version (no shared libs)
>      SVNAUTHZ_VALIDATE=off: install svnauthz-validate
>      SVNMUCC=off: Install Multiple URL Command Client
>      SVNSERVE_WRAPPER=off: Enable svnserve wrapper
>      TEST=off: Run subversion test suite
> 
>      There is the new devel/subversion-static port which does all that,
>      and compiles subversion with static linkage so it has *no* runtime
>      dependencies on anything else.  The disadvantage here is that if
>      there is, say, a security hole discovered in the one of the
>      libraries subversion links against, you won't secure the
>      statically linked copy of subversion simply by updating to a fixed
>      version of the shlib.  subversion-static is really only intended
>      for providing a one-off binary package that people can download
>      and install in order to bootstrap a more standard FreeBSD
>      environment.
> 
>   1) Choose a SVN mirror close to you.  Currently there are two choices:
> 
>         svn0.us-west.FreeBSD.org  -- Western USA
>         svn0.us-east.FreeBSD.org  -- Eastern USA
> 
>      Use whichever one gives you best performance.  Certainly from
>      Europe at the moment us-east seems to be the best choice.
> 
>      The number of SVN mirrors and their global coverage should increase
>      over time, but it will never need as many servers as the old cvsup
>      network.
> 
>      The canonical list of SVN mirrors is here:
> 
> 
> http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/svn-mirrors.html
> 
>   2) Choose a protocol for access the SVN servers.  Your choices in
>      order of preference are
> 
>          svn://
>          https://
>          http://
> 
>      Use svn:// for best performance.  If you're concerned about MITM
>      attacks injecting trojans into the FreeBSD sources, then use
>      https and be sure to verify the certificate hashes on first
>      connection.  Otherwise, if you're stuck behind a restrictive
>      firewall, use http://
> 
>   3) Choose which branch you want to mirror.  It's relatively easy to
>      switch between branches and doesn't involve downloading the entire
>      contents of /usr/src all over again if you change your mind.
>      However right now, the viable choices are
> 
>         head     --- Current, the bleeding edge, really only suitable
>                      for development purposes
> 
>         stable/9 --- 9-STABLE  Still a rapidly changing development
>                      branch, but not quite so close to the edge, and
>                      with less bleeding involved.
> 
>         stable/8 --- 8-STABLE  Ditto.
> 
>         releng/9.1 --- 9.1-RELEASE  This tracks any security patches to
>                      version 9.1.  However, in this case you would be
>                      better advised to use freebsd-update(8) to maintain
> 	             your /usr/src directory tree instead.
> 
>         Similarly releng/9.0 releng/8.3 releng/7.4 for other supported
>         release versions.
> 
>      Don't be fooled into pulling down release/9.1.0 or the like --
>      this is not a *branch* but a *snapshot*.  If you think you want
>      release/9.1.0 then you really want releng/9.1 instead.
> 
>   4) Make sure /usr/src is empty.  Pre-existing files can cause you
>      grief at some unexpected later date even if they don't cause the
>      initial checkout to fail.
> 
>   5) Put it all together.  Run a command like so to check out the
>      content of /usr/src for your chosen branch from your chosen SVN
>      mirror using your chosen protocol:
> 
>         svn co {proto}://{svn-mirror}/base/{branch} /usr/src
> 
>      So, what I would do to checkout 9.1-STABLE from the us-east mirror
>      using svn as the protocol is:
> 
>         svn co svn://svn0.us-east.FreeBSD.org/base/stable/9 /usr/src
> 
>      Then wait for that to complete, as it's going to download a few
>      hundred MB of code.
> 
> Now, you generally only need to do that step one time.  For regular
> updates to the sources, just run:
> 
>      cd /usr/src
>      svn up
> 
> This will re-use all the settings you chose above.  If you want to
> change any of the settings then use 'svn switch' from the top to the
> checked-out tree (ie. cd /usr/src) -- this will avoid downloading the
> whole repo all over again...
> 
>     svn help switch   -- read for clues
> 
>     svn switch ^stable/8   -- change to the 8.4-STABLE sources
> 
>     svn switch --relocate svn:// http://  -- use HTTP instead
> 
>     svn switch --relocate svn://svn0.us-east.FreeBSD.org \
>             svn://svn0.us-west.FreeBSD.org  -- switch to a different
>                                                mirror
> 
> To see what setting are currently in force:
> 
>     svn info
> 
> Working out how to apply these instructions to /usr/ports or /usr/doc is
> left as an exercise.
> 
> 	Cheers,
> 
> 	Matthew



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