- Add information on how to update the source code using Subversion, and

therefore deprecate CVS and CVSup as ways of updating.

Reviewed by:	gavin, brd, eadler
Approved by:	gjb
This commit is contained in:
Gabor Pali 2012-11-17 05:26:13 +00:00
parent bab268db4b
commit 1af7bc46fb
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=40050
2 changed files with 315 additions and 368 deletions
en_US.ISO8859-1/books/handbook
cutting-edge
mirrors

View file

@ -70,6 +70,7 @@
<listitem>
<para>How to keep your system up to date with
<application>freebsd-update</application>,
<application>Subversion</application>,
<application>CVSup</application>,
<application>CVS</application>, or
<application>CTM</application>.</para>
@ -82,7 +83,7 @@
<listitem>
<para>How to keep your documentation up to date with
<application>CVSup</application> or documentation
<application>Subversion</application> or documentation
ports<!--, and <application>Docsnap</application>-->.</para>
</listitem>
@ -112,15 +113,10 @@
</itemizedlist>
<note>
<para>Throughout this chapter, the <command>cvsup</command>
command is used to obtain and update &os; sources. To use it,
you will need to install the port or the package for
<filename role="package">net/cvsup</filename> (if you do not
want to install the graphical <command>cvsup</command> client,
you can just install the port
<filename>net/cvsup-without-gui</filename>). You may wish to
substitute this with &man.csup.1;, which is part of the base
system.</para>
<para>Throughout this chapter, the <command>svn</command> command
is used to obtain and update &os; sources. To use it, you will
need to install the port or the package for <filename
role="package">devel/subversion</filename>.</para>
</note>
</sect1>
@ -1405,9 +1401,12 @@ Fetching 133 new ports or files... done.</screen>
<listitem>
<para>Grab the sources from a &os;
<link linkend="mirrors">mirror site</link>. You can do
this in one of two ways:</para>
this in one of three ways:</para>
<orderedlist>
<indexterm>
<primary><command>svn</command></primary>
</indexterm>
<indexterm>
<primary><command>cvsup</command></primary>
</indexterm>
@ -1421,22 +1420,34 @@ Fetching 133 new ports or files... done.</screen>
</secondary>
</indexterm>
<listitem>
<para>Use the <link linkend="svn">svn</link> program to
check out the desired development or release branch.
This is the recommended method, providing access to
&os; development as it occurs. The preferred URL
prefix for <application>Subversion</application>
checkout of the -CURRENT base system is
<literal>http://svn.freebsd.org/base/head/</literal>;
because of the size of the repository, it is
recommended that only desired subtrees be checked out.
</para>
</listitem>
<listitem>
<para>Use the <link linkend="cvsup">cvsup</link>
program with the <filename>supfile</filename> named
<filename>standard-supfile</filename> available from
<filename>/usr/share/examples/cvsup</filename>.
This is the most recommended method, since it allows
you to grab the entire collection once and then only
what has changed from then on. Many people run
<command>cvsup</command> from
<command>cron</command> and keep their sources
up-to-date automatically. You have to customize the
sample <filename>supfile</filename> above, and
configure
You have to customize the sample
<filename>supfile</filename> above, and configure
<link linkend="cvsup">cvsup</link> for your
environment.</para>
<warning>
<para><command>cvsup</command> has been deprecated by
the Project, and is not recommended.</para>
</warning>
<note>
<para>The sample
<filename>standard-supfile</filename> is intended
@ -1473,9 +1484,8 @@ Fetching 133 new ports or files... done.</screen>
which again increases the chance of it not working
for fairly long periods of time. We recommend using
<application><link
linkend="cvsup">CVSup</link></application> for
anybody with a 9600&nbsp;bps modem or faster
connection.</para>
linkend="svn">Subversion</link></application> for
any system with Internet connectivity.</para>
</listitem>
</orderedlist>
</listitem>
@ -1599,8 +1609,8 @@ Fetching 133 new ports or files... done.</screen>
<para>Join the relevant <application>SVN</application>
list for the branch you are tracking. For example, if
you are tracking the 7-STABLE branch, join the
&a.svn-src-stable-7.name; list. This will allow you to
you are tracking the 9-STABLE branch, join the
&a.svn-src-stable-9.name; list. This will allow you to
view the commit log entry for each change as it is made,
along with any pertinent information on possible
side-effects.</para>
@ -1629,9 +1639,12 @@ Fetching 133 new ports or files... done.</screen>
&os; and wish to upgrade via sources then you can easily
do so from &os;
<link linkend="mirrors">mirror site</link>. This can be
done in one of two ways:</para>
done in one of three ways:</para>
<orderedlist>
<indexterm>
<primary><command>svn</command></primary>
</indexterm>
<indexterm>
<primary><command>cvsup</command></primary>
</indexterm>
@ -1641,24 +1654,42 @@ Fetching 133 new ports or files... done.</screen>
<indexterm>
<primary>-STABLE</primary>
<secondary>syncing with
<application>CVSup</application></secondary>
<application>Subversion</application></secondary>
</indexterm>
<listitem>
<para>Use the <link linkend="svn">svn</link> program to
check out the desired development or release branch.
This is the recommended method, providing access to
&os; development as it occurs. Branch names include
<literal>head</literal> for the current development
head, and branches identified in <ulink
url="&url.base;/releng/"/>, such as
<literal>stable/9</literal> or
<literal>stable/9.0</literal>. The preferred URL
prefix for <application>Subversion</application>
checkout of the base system is
<literal>http://svn.freebsd.org/base/</literal>;
because of the size of the repository, it is
recommended that only desired subtrees be checked out.
</para>
</listitem>
<listitem>
<para>Use the <link linkend="cvsup">cvsup</link>
program with the <filename>supfile</filename> named
<filename>stable-supfile</filename> from the
directory
<filename>/usr/share/examples/cvsup</filename>.
This is the most recommended method, since it allows
you to grab the entire collection once and then only
what has changed from then on. Many people run
<command>cvsup</command> from
<command>cron</command> to keep their sources
up-to-date automatically. You have to customize the
You have to customize the
sample <filename>supfile</filename> above, and
configure <link linkend="cvsup">cvsup</link> for
your environment.</para>
<warning>
<para><command>cvsup</command> has been deprecated by
the Project, and is not recommended.</para>
</warning>
</listitem>
<listitem>
@ -1713,6 +1744,7 @@ Fetching 133 new ports or files... done.</screen>
connection to stay up-to-date with any given area of the &os;
project sources, or all areas, depending on what interests you.
The primary services we offer are
<link linkend="svn">Subversion</link>,
<link linkend="anoncvs">Anonymous CVS</link>,
<link linkend="cvsup">CVSup</link>, and
<link linkend="ctm">CTM</link>.</para>
@ -1734,25 +1766,25 @@ Fetching 133 new ports or files... done.</screen>
<secondary>anonymous</secondary>
</indexterm>
<para><application>Anonymous CVS</application> and
<application>CVSup</application> use the
<emphasis>pull</emphasis> model of updating sources. In the
case of <application>CVSup</application> the user (or a
<command>cron</command> script) invokes the
<command>cvsup</command> program, and it interacts with a
<command>cvsupd</command> server somewhere to bring your files
up-to-date. The updates you receive are up-to-the-minute and
<para><application>Subversion</application>, <application>Anonymous
CVS</application> and <application>CVSup</application> use the
<emphasis>pull</emphasis> model of updating sources. For
<application>Subversion</application>,
the user (or a <command>cron</command> script) invokes the
<command>svn</command> program, and it brings files up-to-date.
<application>Subversion</application> is the preferred means of
updating local source trees.
<command>cvsup</command> and <command>cvs</command> work under
similar principles, but are now deprecated in favour of Subversion.
The updates you receive are up-to-the-minute and
you get them when, and only when, you want them. You can easily
restrict your updates to the specific files or directories that
are of interest to you. Updates are generated on the fly by the
server, according to what you have and what you want to have.
<application>Anonymous CVS</application> is quite a bit more
simplistic than <application>CVSup</application> in that it is
just an extension to <application>CVS</application> which allows
it to pull changes directly from a remote CVS repository.
<application>CVSup</application> can do this far more
efficiently, but <application>Anonymous CVS</application> is
easier to use.</para>
Unless the reason is truly compelling,
<application>Subversion</application> should be used in preference
to other synchronization mechanisms, which have been deprecated
and will be discontinued in the future.</para>
<indexterm>
<primary><application>CTM</application></primary>

View file

@ -245,331 +245,18 @@
<xref linkend="burncd"/>, burncd.</para>
</sect1>
<sect1 id="mirrors-svn">
<title>Subversion Sites</title>
<indexterm>
<primary>svn</primary>
</indexterm>
<para>As of July 2012, &os; uses
<ulink url="http://subversion.apache.org/">Subversion</ulink>
(<emphasis>svn</emphasis>) as the primary version control system
for storing all of &os;'s source code, documentation, and the
Ports Collection.</para>
<note>
<para>Subversion is generally a developer tool. Most users
should use
<link linkend="updating-upgrading-freebsdupdate">FreeBSD
Update</link> to update the &os; base system, and
<link linkend="updating-upgrading-portsnap">Portsnap</link>
to update the &os; Ports Collection.</para>
</note>
<para>The &os; svn mirror network is still in its early days, and
will likely change. Do not count on this list of mirrors being
static. In particular, the SSL certificates of the servers will
likely change at some point.</para>
<para>In Subversion, URLs are used to designate a repository,
taking the form of <literal>protocol://hostname/path</literal>.
Mirrors may support different protocols as specified below. The
first component of the path is the &os; repository to access.
There are three different repositories, <literal>base</literal>
for the &os; base system source code, <literal>ports</literal>
for the Ports Collection, and <literal>doc</literal> for
documentation. For example, the URL
<literal>svn://svn0.us-east.FreeBSD.org/ports/head/</literal>
specifies the main branch of the ports repository on the
<hostid role="fqdn">svn0.us-east.FreeBSD.org</hostid> mirror,
using the svn protocol.</para>
<para>All mirrors carry all repositories.</para>
<para>The master &os; Subversion server,
<hostid role="fqdn">svn.FreeBSD.org</hostid>, is publicly
accessible, read-only. That may change in the future, so users
are encouraged to use one of the official mirrors. To view the
&os; Subversion repositories through a browser, use <ulink
url="http://svnweb.FreeBSD.org/">http://svnweb.FreeBSD.org/</ulink>.</para>
<informaltable>
<tgroup cols="4">
<colspec colwidth="3*"/>
<colspec colwidth="1*"/>
<colspec colwidth="2*"/>
<colspec colwidth="10*"/>
<thead>
<row>
<entry>Name</entry>
<entry>Protocols</entry>
<entry>Location</entry>
<entry>SSL fingerprint</entry>
</row>
</thead>
<tbody>
<row>
<entry><hostid
role="fqdn">svn0.us-west.FreeBSD.org</hostid></entry>
<entry>svn, <ulink
url="http://svn0.us-west.FreeBSD.org/base/">http</ulink>,
<ulink
url="https://svn0.us-west.FreeBSD.org/base/">https</ulink></entry>
<entry>USA, California</entry>
<entry>SHA1
<literal>79:35:8F:CA:6D:34:D9:30:44:D1:00:AF:33:4D:E6:11:44:4D:15:EC</literal></entry>
</row>
<row>
<entry><hostid
role="fqdn">svn0.us-east.FreeBSD.org</hostid></entry>
<entry>svn, <ulink
url="http://svn0.us-east.FreeBSD.org/base/">http</ulink>,
<ulink
url="https://svn0.us-east.FreeBSD.org/base/">https</ulink></entry>
<entry>USA, New Jersey</entry>
<entry>SHA1
<literal>06:D1:23:DE:5E:7A:F7:2B:7A:7E:74:95:5F:54:8D:5C:B0:D6:2E:8F</literal></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect1>
<sect1 id="anoncvs">
<title>Anonymous CVS</title>
<title>Anonymous CVS (Deprecated)</title>
<sect2>
<title><anchor id="anoncvs-intro"/>Introduction</title>
<title>Warning</title>
<indexterm>
<primary>CVS</primary>
<secondary>anonymous</secondary>
</indexterm>
<para>Anonymous CVS (or, as it is otherwise known,
<emphasis>anoncvs</emphasis>) is a feature provided by the CVS
utilities bundled with &os; for synchronizing with a remote
CVS repository. Among other things, it allows users of &os;
to perform, with no special privileges, read-only CVS
operations against one of the &os; project's official anoncvs
servers. To use it, one simply sets the
<envar>CVSROOT</envar> environment variable to point at the
appropriate anoncvs server, provides the well-known password
<quote>anoncvs</quote> with the <command>cvs login</command>
command, and then uses the &man.cvs.1; command to access it
like any local repository.</para>
<note>
<para>The <command>cvs login</command> command, stores the
passwords that are used for authenticating to the CVS server
in a file called <filename>.cvspass</filename> in your
<envar>HOME</envar> directory. If this file does not exist,
you might get an error when trying to use
<command>cvs login</command> for the first time. Just make
an empty <filename>.cvspass</filename> file, and retry to
login.</para>
</note>
<para>While it can also be said that the
<link linkend="cvsup">CVSup</link> and
<emphasis>anoncvs</emphasis> services both perform essentially
the same function, there are various trade-offs which can
influence the user's choice of synchronization methods. In a
nutshell, <application>CVSup</application> is much more
efficient in its usage of network resources and is by far the
most technically sophisticated of the two, but at a price. To
use <application>CVSup</application>, a special client must
first be installed and configured before any bits can be
grabbed, and then only in the fairly large chunks which
<application>CVSup</application> calls
<emphasis>collections</emphasis>.</para>
<para><application>Anoncvs</application>, by contrast, can be
used to examine anything from an individual file to a specific
program (like <command>ls</command> or
<command>grep</command>) by referencing the CVS module name.
Of course, <application>anoncvs</application> is also only
good for read-only operations on the CVS repository, so if it
is your intention to support local development in one
repository shared with the &os; project bits then
<application>CVSup</application> is really your only
option.</para>
</sect2>
<sect2>
<title><anchor id="anoncvs-usage"/>Using Anonymous CVS</title>
<para>Configuring &man.cvs.1; to use an Anonymous CVS repository
is a simple matter of setting the <envar>CVSROOT</envar>
environment variable to point to one of the &os; project's
<emphasis>anoncvs</emphasis> servers. At the time of this
writing, the following servers are available:</para>
<itemizedlist>
<listitem>
<para><emphasis>France</emphasis>:
:pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs
(For pserver mode, use <command>cvs login</command> and
enter the password <quote>anoncvs</quote> when prompted.
For ssh, no password is required.)</para>
</listitem>
<!--
<listitem>
<para><emphasis>Japan</emphasis>:
:pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs
(Use <command>cvs login</command> and enter the password
<quote>anoncvs</quote> when prompted.)</para>
</listitem>
-->
<listitem>
<para><emphasis>Taiwan</emphasis>:
:pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs
(For pserver mode, use <command>cvs login</command> and
enter any password when prompted. For ssh, no password
is required.)</para>
<programlisting>SSH2 HostKey: 1024 02:ed:1b:17:d6:97:2b:58:5e:5c:e2:da:3b:89:88:26 /etc/ssh/ssh_host_rsa_key.pub
SSH2 HostKey: 1024 e8:3b:29:7b:ca:9f:ac:e9:45:cb:c8:17:ae:9b:eb:55 /etc/ssh/ssh_host_dsa_key.pub</programlisting>
</listitem>
<!--
<listitem>
<para><emphasis>USA</emphasis>:
anoncvs@anoncvs1.FreeBSD.org:/home/ncvs (For ssh, use ssh
version 2 and no password is required.)</para>
<programlisting>SSH2 HostKey: 2048 53:1f:15:a3:72:5c:43:f6:44:0e:6a:e9:bb:f8:01:62 /etc/ssh/ssh_host_dsa_key.pub</programlisting>
</listitem>
-->
</itemizedlist>
<para>Since CVS allows one to <quote>check out</quote> virtually
any version of the &os; sources that ever existed (or, in some
cases, will exist), you need to be familiar with the revision
(<option>-r</option>) flag to &man.cvs.1; and what some of the
permissible values for it in the &os; Project repository
are.</para>
<para>There are two kinds of tags, revision tags and branch
tags. A revision tag refers to a specific revision. Its
meaning stays the same from day to day. A branch tag, on the
other hand, refers to the latest revision on a given line of
development, at any given time. Because a branch tag does not
refer to a specific revision, it may mean something different
tomorrow than it means today.</para>
<para><xref linkend="cvs-tags"/> contains revision tags that
users might be interested in. Again, none of these are valid
for the Ports Collection since the Ports Collection does not
have multiple branches of development.</para>
<para>When you specify a branch tag, you normally receive the
latest versions of the files on that line of development. If
you wish to receive some past version, you can do so by
specifying a date with the <option>-D date</option> flag. See
the &man.cvs.1; manual page for more details.</para>
</sect2>
<sect2>
<title>Examples</title>
<para>While it really is recommended that you read the manual
page for &man.cvs.1; thoroughly before doing anything, here
are some quick examples which essentially show how to use
Anonymous CVS:</para>
<example>
<title>Checking Out Something from -CURRENT
(&man.ls.1;):</title>
<screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs</userinput>
&prompt.user; <userinput>cvs login</userinput>
<emphasis>At the prompt, enter any word for</emphasis> <quote>password</quote>.
&prompt.user; <userinput>cvs co ls</userinput></screen>
</example>
<example>
<title>Using SSH to Check Out the <filename>src/</filename>
Tree:</title>
<screen>&prompt.user; <userinput>cvs -d anoncvs@anoncvs1.FreeBSD.org:/home/ncvs co src</userinput>
The authenticity of host 'anoncvs1.freebsd.org (216.87.78.137)' can't be established.
DSA key fingerprint is 53:1f:15:a3:72:5c:43:f6:44:0e:6a:e9:bb:f8:01:62.
Are you sure you want to continue connecting (yes/no)? <userinput>yes</userinput>
Warning: Permanently added 'anoncvs1.freebsd.org' (DSA) to the list of known hosts.</screen>
</example>
<example>
<title>Checking Out the Version of &man.ls.1; in the 8-STABLE
Branch:</title>
<screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs</userinput>
&prompt.user; <userinput>cvs login</userinput>
<emphasis>At the prompt, enter any word for</emphasis> <quote>password</quote>.
&prompt.user; <userinput>cvs co -rRELENG_8 ls</userinput></screen>
</example>
<example>
<title>Creating a List of Changes (as Unified Diffs) to
&man.ls.1;</title>
<screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs</userinput>
&prompt.user; <userinput>cvs login</userinput>
<emphasis>At the prompt, enter any word for</emphasis> <quote>password</quote>.
&prompt.user; <userinput>cvs rdiff -u -rRELENG_8_0_0_RELEASE -rRELENG_8_1_0_RELEASE ls</userinput></screen>
</example>
<example>
<title>Finding Out What Other Module Names Can Be
Used:</title>
<screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs</userinput>
&prompt.user; <userinput>cvs login</userinput>
<emphasis>At the prompt, enter any word for</emphasis> <quote>password</quote>.
&prompt.user; <userinput>cvs co modules</userinput>
&prompt.user; <userinput>more modules/modules</userinput></screen>
</example>
</sect2>
<sect2>
<title>Other Resources</title>
<para>The following additional resources may be helpful in
learning CVS:</para>
<itemizedlist>
<listitem>
<para><ulink
url="http://users.csc.calpoly.edu/~gfisher/classes/308/handouts/cvs-basics.html">CVS
Tutorial</ulink> from California Polytechnic State
University.</para>
</listitem>
<listitem>
<para><ulink url="http://www.nongnu.org/cvs/">CVS
Home</ulink>, the CVS development and support
community.</para>
</listitem>
<listitem>
<para><ulink
url="http://www.FreeBSD.org/cgi/cvsweb.cgi">CVSweb</ulink>
is the &os; Project web interface for CVS.</para>
</listitem>
</itemizedlist>
<warning>
<para>CVS has been deprecated by the project, and its use is not
recommended. <application>Subversion</application> should be
used instead.</para>
</warning>
</sect2>
</sect1>
@ -933,12 +620,234 @@ Warning: Permanently added 'anoncvs1.freebsd.org' (DSA) to the list of known hos
</sect2>
</sect1>
<sect1 id="svn">
<title>Using <application>Subversion</application></title>
<sect2 id="svn-intro">
<title>Introduction</title>
<para>As of July 2012, &os; uses <ulink
url="http://subversion.apache.org/">Subversion</ulink>
(<emphasis>svn</emphasis>) as the primary version control system
for storing all of &os;'s source code, documentation, and the
Ports Collection.</para>
<note>
<para>Subversion is generally a developer tool. Most users
should use <link
linkend="updating-upgrading-freebsdupdate">FreeBSD
Update</link> to update the &os; base system, and <link
linkend="updating-upgrading-portsnap">Portsnap</link> to
update the &os; Ports Collection.</para>
</note>
<para>In <application>Subversion</application>, URLs are used to
designate a repository, taking the form of
<replaceable>protocol://hostname/path</replaceable>. Mirrors may
support different protocols as specified below. The first
component of the path is the &os; repository to access. There
are three different repositories, <literal>base</literal> for
the &os; base system source code, <literal>ports</literal> for
the Ports Collection, and <literal>doc</literal> for
documentation. For example, the URL
<literal>svn://svn0.us-east.FreeBSD.org/ports/head/</literal>
specifies the main branch of the ports repository on the <hostid
role="fqdn">svn0.us-east.FreeBSD.org</hostid> mirror, using the
<literal>svn</literal> protocol.</para>
</sect2>
<sect2 id="svn-install">
<title>Installation</title>
<para><application>Subversion</application> must be installed
before it can be used to check out the contents of any of the
repositories. If a copy of the ports tree is already present,
one can install <application>Subversion</application> like
this:</para>
<screen>&prompt.root; <userinput>cd /usr/ports/devel/subversion</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>If the ports tree is not available,
<application>Subversion</application> can be installed as a
package:</para>
<screen>&prompt.root; <userinput>pkg_add -r subversion</userinput></screen>
<para>If <application>pkgng</application> is being used to manage
packages, <application>Subversion</application> can be installed
with it instead:</para>
<screen>&prompt.root; <userinput>pkg install devel/subversion</userinput></screen>
</sect2>
<sect2 id="svn-usage">
<title>Running <application>Subversion</application></title>
<para>The <command>svn</command> command can be used to fetch a
clean copy of the sources from a given repository by
typing:</para>
<screen>&prompt.root; <userinput>svn checkout <literal>svn://svn.FreeBSD.org/<replaceable>repository</replaceable>/<replaceable>branch</replaceable></literal> <replaceable>root</replaceable></userinput></screen>
<para>where:</para>
<itemizedlist>
<listitem>
<para><replaceable>repository</replaceable> is one of the
Project repositories, i.e. <literal>base</literal>,
<literal>ports</literal>, or <literal>doc</literal>.</para>
</listitem>
<listitem>
<para><replaceable>branch</replaceable> depends on the
repository used. <literal>ports</literal> and
<literal>doc</literal> are mostly updated in the
<literal>head</literal> branch, while
<literal>base</literal> maintains the latest version of
-CURRENT under <literal>head</literal> and the respective
latest versions of the -STABLE branches under
<literal>stable/8</literal> (for
8.<replaceable>x</replaceable>) and
<literal>stable/9</literal>
(9.<replaceable>x</replaceable>).</para>
</listitem>
<listitem>
<para><replaceable>root</replaceable> is the target directory
where the contents of the specified branch should be placed.
This is usually <filename
class="directory">/usr/ports</filename> for
<literal>ports</literal>, <filename
class="directory">/usr/src</filename> for
<literal>base</literal>, and <filename
class="directory">/usr/doc</filename> for
<literal>doc</literal>.</para>
</listitem>
</itemizedlist>
<para>Note that the initial download of the sources may take a
while. Let it run until it completes.</para>
<para>Future updates of the downloaded sources may be fetched by
running:</para>
<screen>&prompt.root; <userinput>svn update <replaceable>root</replaceable></userinput></screen>
<para>After checking out the sources, an alternative way of
updating the documentation is supported by the
<filename>Makefile</filename> of the <filename
class="directory"><replaceable>root</replaceable></filename>
directory by running:</para>
<screen>&prompt.root; <userinput>cd <replaceable>root</replaceable></userinput>
&prompt.root; <userinput>make update SVN_UPDATE=yes</userinput></screen>
</sect2>
<sect2>
<title>For More Information</title>
<para>For other information about using
<application>Subversion</application>, please see the
<quote>Subversion Book</quote>, titled <ulink
url="http://svnbook.red-bean.com/">Version Control with
Subversion</ulink>, or the <ulink
url="http://subversion.apache.org/docs/">Subversion
Documentation</ulink>.</para>
</sect2>
<sect2 id="svn-mirrors">
<title><application>Subversion</application> Sites</title>
<indexterm>
<primary>svn</primary>
</indexterm>
<para>All mirrors carry all repositories.</para>
<para>The master &os; <application>Subversion</application>
server, <hostid role="fqdn">svn.FreeBSD.org</hostid>, is publicly
accessible, read-only. That may change in the future, so users
are encouraged to use one of the official mirrors. To view the
&os; <application>Subversion</application> repositories through
a browser, use <ulink
url="http://svnweb.FreeBSD.org/">http://svnweb.FreeBSD.org/</ulink>.</para>
<note>
<para>The &os; svn mirror network is still in its early days, and
will likely change. Do not count on this list of mirrors being
static. In particular, the SSL certificates of the servers will
likely change at some point.</para>
</note>
<informaltable>
<tgroup cols="4">
<colspec colwidth="3*"/>
<colspec colwidth="1*"/>
<colspec colwidth="2*"/>
<colspec colwidth="10*"/>
<thead>
<row>
<entry>Name</entry>
<entry>Protocols</entry>
<entry>Location</entry>
<entry>SSL fingerprint</entry>
</row>
</thead>
<tbody>
<row>
<entry><hostid
role="fqdn">svn0.us-west.FreeBSD.org</hostid></entry>
<entry>svn, <ulink
url="http://svn0.us-west.FreeBSD.org/base/">http</ulink>,
<ulink
url="https://svn0.us-west.FreeBSD.org/base/">https</ulink></entry>
<entry>USA, California</entry>
<entry>SHA1
<literal>79:35:8F:CA:6D:34:D9:30:44:D1:00:AF:33:4D:E6:11:44:4D:15:EC</literal></entry>
</row>
<row>
<entry><hostid
role="fqdn">svn0.us-east.FreeBSD.org</hostid></entry>
<entry>svn, <ulink
url="http://svn0.us-east.FreeBSD.org/base/">http</ulink>,
<ulink
url="https://svn0.us-east.FreeBSD.org/base/">https</ulink></entry>
<entry>USA, New Jersey</entry>
<entry>SHA1
<literal>06:D1:23:DE:5E:7A:F7:2B:7A:7E:74:95:5F:54:8D:5C:B0:D6:2E:8F</literal></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect2>
</sect1>
<sect1 id="cvsup">
<title>Using CVSup</title>
<title>Using CVSup (Deprecated)</title>
<sect2 id="cvsup-intro">
<title>Introduction</title>
<warning>
<para><command>cvsup</command> has been deprecated by the
project, and its use is not recommended.
<application>Subversion</application> should be used
instead.</para>
</warning>
<para><application>CVSup</application> is a software package for
distributing and updating source trees from a master CVS
repository on a remote server host. The &os; sources are
@ -2485,6 +2394,12 @@ doc/zh_*</programlisting>
<sect1 id="cvs-tags">
<title>CVS Tags</title>
<warning>
<para>CVS has been deprecated by the project, and its use is not
recommended. <application>Subversion</application> should be
used instead.</para>
</warning>
<para>When obtaining or updating sources using
<application>cvs</application> or
<application>CVSup</application>, a revision tag must be