wiki:howto/SyncingWithSVN

Version 12 (modified by rcobbe, 10 years ago) (diff)

Added SVN proxy and certificate configuration instructions.

<- Back to the HOWTO section

How to sync your ports tree using Subversion (over HTTP)

  • Audience: end users who cannot use rsync (873/tcp) due to firewalls, proxies, policy, etc.
  • Requires: MacPorts
  • Requires: Subversion

OS X 10.5 Leopard and later comes with Subversion already installed. If you are using Tiger, or some other system which does not provide a Subversion client, you will need to install Subversion yourself. If you have a copy of the ports tree already, just run:

sudo port install subversion

If you do not have a copy of the ports tree, you can download the daily tarball by following the tarball howto.

Introduction

Some people live and work behind a firewall or proxy that blocks or otherwise breaks rsync, which is the primary means of getting updated portfiles in MacPorts. The following steps will switch your tree over to using Subversion (over https) for syncing.

Note: replace "$prefix" with the location of your MacPorts install, which defaults to /opt/local.

Installation

Step 1: Checkout Initial Copy

cd $prefix/var/macports/sources
mkdir -p svn.macports.org/trunk/dports
cd svn.macports.org/trunk/dports 
svn co https://svn.macports.org/repository/macports/trunk/dports/ .

If you prefer, the repository is also available via HTTP:

svn co http://svn.macports.org/repository/macports/trunk/dports/ .

Configuration

Step 2: Configure MacPorts

Edit $prefix/etc/macports/sources.conf to comment out the rsync entry and add the "file" entry:

Note: don't forget to replace $prefix.

#rsync://rsync.macports.org/release/ports/ [default]
file://$prefix/var/macports/sources/svn.macports.org/trunk/dports/ [default]

Step 3: Configure Subversion

First, tell subversion to use your proxy to connect to the server:

  1. If $prefix/var/macports/home/.subversion/servers doesn't exist, create it by copying the corresponding file from another user. (SVN automatically creates this file if it doesn't exist.)
  2. Edit the file and set a proxy for hosts at *.macports.org. Different proxy configurations require different sets of options here, but the file is pretty well commented, so it should be easy to figure out what you need. At a minimum you'll need settings for http-proxy-host and http-proxy-port.

Finally, if you want to use SVN over HTTPS to access the repository, you'll need to tell SVN to trust the MacPorts signature. (SVN doesn't trust the authority that issued it, and port sync below invokes svn up with the --non-interactive flag, so you won't have the opportunity to accept the certificate then.)

  1. mkdir -p $prefix/var/macports/home/.subversion/auth/svn.ssl.server
  2. As a normal user, run svn ls https://svn.macports.org/repository/macports/trunk/dports/. When prompted, accept the certificate permanently.
  3. SVN will store the certificate in a file in the directory $HOME/.subversion/auth/svn.ssl.server. In that directory, find the file that contains the string "https://svn.macports.org" and copy it into $prefix/var/macports/home/.subversion/auth/svn.ssl.server.

Or, you can use SVN over HTTP, in which case you don't need to worry about the certificate.

Optional Parts

Step 4: Test Sync

Run sync in debug mode and watch for "svn update" instead of "rsync" being used:

port -d sync 

<- Back to the HOWTO section