As of July 2012, FreeBSD uses Subversion as the only version control system for storing all of FreeBSD's source code, documentation, and the Ports Collection.
Subversion is generally a
developer tool. Users may prefer to use
freebsd-update
(Section 24.2, “FreeBSD Update”) to update
the FreeBSD base system, and portsnap
(Section 4.5, “Using the Ports Collection”) to update the FreeBSD Ports
Collection.
This section demonstrates how to install Subversion on a FreeBSD system and use it to create a local copy of a FreeBSD repository. Additional information on the use of Subversion is included.
Installing security/ca_root_nss allows Subversion to verify the identity of HTTPS repository servers. The root SSL certificates can be installed from a port:
#
cd /usr/ports/security/ca_root_nss
#
make install clean
or as a package:
#
pkg install ca_root_nss
A lightweight version of
Subversion is already installed
on FreeBSD as svnlite
. The port or package
version of Subversion is only
needed if the Python or Perl API is needed,
or if a later version of Subversion is desired.
The only difference from normal
Subversion use is that the command
name is svnlite
.
If svnlite
is unavailable or the full
version of Subversion is needed,
then it must be installed.
Subversion can be installed from the Ports Collection:
#
cd /usr/ports/devel/subversion
#
make install clean
Subversion can also be installed as a package:
#
pkg install subversion
To fetch a clean copy of the sources into a local
directory, use svn
. The files in this
directory are called a local working
copy.
Move or delete an existing destination directory before
using checkout
for the first time.
Checkout over an existing
non-svn
directory can cause conflicts
between the existing files and those brought in from the
repository.
Subversion uses
URLs to designate a repository, taking the
form of protocol://hostname/path
.
The first component of the path is the FreeBSD repository to
access. There are three different repositories,
base
for the FreeBSD base system source code,
ports
for the Ports Collection, and
doc
for documentation. For example, the
URL
https://svn.FreeBSD.org/ports/head/
specifies the main branch of the ports repository,
using the https
protocol.
A checkout from a given repository is performed with a command like this:
#
svn checkout https://svn.FreeBSD.org/
repository
/branch
lwcdir
where:
repository
is one of the
Project repositories: base
,
ports
, or
doc
.
branch
depends on the
repository used. ports
and
doc
are mostly updated in the
head
branch, while
base
maintains the latest version of
-CURRENT under head
and the respective
latest versions of the -STABLE branches under
stable/9
(9.x
) and
stable/10
(10.x
).
lwcdir
is the target
directory where the contents of the specified branch
should be placed. This is usually
/usr/ports
for
ports
,
/usr/src
for
base
, and
/usr/doc
for
doc
.
This example checks out the Ports Collection from the
FreeBSD repository using the HTTPS
protocol, placing the local working copy in
/usr/ports
. If
/usr/ports
is already
present but was not created by svn
,
remember to rename or delete it before the checkout.
#
svn checkout https://svn.FreeBSD.org/ports/head /usr/ports
Because the initial checkout must download the full branch of the remote repository, it can take a while. Please be patient.
After the initial checkout, the local working copy can be updated by running:
#
svn update
lwcdir
To update
/usr/ports
created in
the example above, use:
#
svn update /usr/ports
The update is much quicker than a checkout, only transferring files that have changed.
An alternate way of updating the local working copy after
checkout is provided by the Makefile
in
the /usr/ports
,
/usr/src
, and
/usr/doc
directories.
Set SVN_UPDATE
and use the
update
target. For example, to
update /usr/src
:
#
cd /usr/src
#
make update SVN_UPDATE=yes
The FreeBSD Subversion repository is:
svn.FreeBSD.org
This is a publicly accessible mirror network that uses GeoDNS to select an appropriate back end server. To view the FreeBSD Subversion repositories through a browser, use https://svnweb.FreeBSD.org/.
HTTPS is the preferred protocol, but the
security/ca_root_nss
package will need to be installed in order to automatically
validate certificates.
For other information about using Subversion, please see the “Subversion Book”, titled Version Control with Subversion, or the Subversion Documentation.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.