summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1996-12-19 20:23:05 +0000
committerjkh <jkh@FreeBSD.org>1996-12-19 20:23:05 +0000
commitae32e088d60c4e0c122848f5a135e6f209e976f8 (patch)
treec3f05afaed03f1d5189bc2e15c2d8272d11916e6 /share
parentfd7150cc218c3746b6dfad8cbe103d6bb390f3d1 (diff)
downloadFreeBSD-src-ae32e088d60c4e0c122848f5a135e6f209e976f8.zip
FreeBSD-src-ae32e088d60c4e0c122848f5a135e6f209e976f8.tar.gz
Add the SGML-ified version of John Polstra's cvsup manual. Thanks, John!
SGML'd by: jkh Submitted by: jdp
Diffstat (limited to 'share')
-rw-r--r--share/doc/handbook/cvsup.sgml390
1 files changed, 390 insertions, 0 deletions
diff --git a/share/doc/handbook/cvsup.sgml b/share/doc/handbook/cvsup.sgml
new file mode 100644
index 0000000..fe3b35e
--- /dev/null
+++ b/share/doc/handbook/cvsup.sgml
@@ -0,0 +1,390 @@
+<!-- $Id$ -->
+<!-- The FreeBSD Documentation Project -->
+
+<sect><heading>CVSup<label id="cvsup"></heading>
+
+<p><em>Contributed by &a.jdp;</em>.
+
+<sect1><heading>Introduction<label id="cvsup:intro"></heading>
+
+<p>CVSup is a software package for distributing and updating source
+trees from a master CVS repository on a remote server host. The
+FreeBSD sources are maintained in a CVS repository on a central
+development machine in California. With CVSup, FreeBSD users can
+easily keep their own source trees up to date.
+
+<p>CVSup uses the so-called "pull" model of updating. Under the pull
+model, each client asks the server for updates, if and when they are
+wanted. The server waits passively for update requests from its
+clients. Thus all updates are instigated by the client. The server
+never sends unsolicited updates. Users must either run the CVSup client
+manually to get an update, or they must set up a cron job to run it
+automatically on a regular basis.
+
+<p>The term "CVSup", capitalized just so, refers to the entire software
+package. Its main components are the client "cvsup" which runs on each
+user's machine, and the server "cvsupd" which runs at each of the
+FreeBSD mirror sites.
+
+<p>As you read the FreeBSD documentation and mailing lists, you may
+see references to <ref id="sup">. Sup was the predecessor to CVSup,
+and it served a similar purpose. CVSup is in used in much the same
+way as sup and, in fact, uses configuration files which are
+backward-compatible with sup's. Sup is no longer used in the FreeBSD
+project, however, because CVSup is both faster and more flexible.
+
+<sect1><heading>Installation<label id="cvsup:install"></heading>
+
+<p>The easiest way to install CVSup if you are running FreeBSD 2.2 or
+later is to use either <url
+url="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/ports/net/cvsup/"
+name="the port"> from the FreeBSD <ref id="ports" name="ports
+collection"> or the corresponding <url
+url="ftp://ftp.freebsd.org/pub/FreeBSD/packages-2.2/net/cvsup-14.0.tgz"
+name="binary package">, depending on whether you prefer to roll your
+own or not.
+
+<p>If you are running FreeBSD-2.1.6, you unfortunately cannot use the
+binary package versions due to the fact that it requires a version of
+the C library that did not yet exist in FreeBSD-2.1.6. You can easily
+use <url url="ftp://ftp.freebsd.org/pub/FreeBSD/ports-current/net/cvsup/"
+name="the port">, however, just as with FreeBSD 2.2. Simply unpack
+the tar file, cd to the cvsup subdirectory and type "make install"
+
+<p>Because CVSup is written in <url
+url="http://www.research.digital.com/SRC/modula-3/html/home.html"
+name="Modula-3">, both the package and the port require that the
+Modula-3 runtime libraries be installed. These are available as the
+<url
+url="ftp://ftp.freebsd.org/pub/FreeBSD/ports-current/lang/modula-3-lib"
+name="lang/modula-3-lib"> port and the <url
+url="ftp://ftp.freebsd.org/pub/FreeBSD/packages-current/lang/modula-3-lib-3.6.tgz"
+name="lang/modula-3-lib-3.6"> package. If you follow the same
+directions as for cvsup, these libraries will be compiled and/or
+installed automatically when you install the CVSup port or package.
+
+<p>The Modula-3 libraries are rather large, and fetching and compiling
+them is not an instantaneous process. For that reason, a third option
+is provided. You can get <em>statically linked</em> FreeBSD
+executables for CVSup from:
+
+<itemize>
+ <item><url url="ftp://freefall.freebsd.org/pub/CVSup/cvsup-bin-14.0.tar.gz"
+ name="ftp://freefall.freebsd.org/pub/CVSup/cvsup-bin-14.0.tar.gz">
+ (client).
+ <item><url url="ftp://freefall.freebsd.org/pub/CVSup/cvsupd-bin-14.0.tar.gz"
+ name="ftp://freefall.freebsd.org/pub/CVSup/cvsupd-bin-14.0.tar.gz">
+ (server).
+</itemize>
+
+<p>Most users will need only the client. These executables are entirely
+self-contained, and they will run on any version of FreeBSD from
+FreeBSD-2.1.0 to FreeBSD-current.
+
+<p>In summary, your options for installing CVSup are:
+
+<itemize>
+ <item>FreeBSD-2.2 or later: static binary, port, or package
+ <item>FreeBSD-2.1.6: static binary or port
+ <item>FreeBSD-2.1.5 or earlier: static binary
+</itemize>
+
+<sect1><heading>Configuration<label id="cvsup:config"></heading>
+
+<p>CVSup's operation is controlled by a configuration file called the
+"supfile". Beginning with FreeBSD-2.2, there are some sample supfiles
+in the directory <url url="file:/usr/share/examples/cvsup"
+name="/usr/share/examples/cvsup">. These examples are also available
+from <url url="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/" name="ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/"> if you are on a pre-2.2 system.
+
+<p>The information in a supfile answers the following questions for cvsup:
+
+<itemize>
+ <item><ref id="cvsup:config:files" name="Which files do you want to receive?">
+ <item><ref id="cvsup:config:vers" name="Which versions of them do you want?">
+ <item><ref id="cvsup:config:where" name="Where do you want to get them from?">
+ <item><ref id="cvsup:config:dest" name="Where do you want to put them on your own machine?">
+ <item><ref id="cvsup:config:status" name="Where do you want to put your status files?">
+</itemize>
+
+<p>In the following sections, we will construct a typical supfile by
+answering each of these questions in turn. First, we describe the
+overall structure of a supfile.
+
+<p>A supfile is a text file. Comments begin with "#" and extend to
+the end of the line. Lines that are blank and lines that contain only
+comments are ignored.
+
+<p>Each remaining line describes a set of files that the user wishes
+to receive. The line begins with the name of a "collection", a
+logical grouping of files defined by the server. The name of the
+collection tells the server which files you want. After the
+collection name come zero or more fields, separated by white space.
+These fields answer the questions listed above. There are two types
+of fields: flag fields and value fields. A flag field consists of a
+keyword standing alone, e.g., "delete" or "compress". A value field
+also begins with a keyword, but the keyword is followed without
+intervening white space by "=" and a second word. For example,
+"release=cvs" is a value field.
+
+<p>A supfile typically specifies more than one collection to receive.
+One way to structure a supfile is to specify all of the relevant
+fields explicitly for each collection. However, that tends to make
+the supfile lines quite long, and it is inconvenient because most
+fields are the same for all of the collections in a supfile. CVSup
+provides a defaulting mechanism to avoid these problems. Lines
+beginning with the special pseudo-collection name "*default" can be
+used to set flags and values which will be used as defaults for the
+subsequent collections in the supfile. A default value can be
+overridden for an individual collection, by specifying a different
+value with the collection itself. Defaults can also be changed or
+augmented in mid-supfile by additional "*default" lines.
+
+<p>With this background, we will now proceed to construct a supfile
+for receiving and updating the main source tree of <ref id="current"
+name="FreeBSD-current">.
+
+<sect2><heading>Which files do you want to receive?<label id="cvsup:config:files"></heading>
+
+<p>As with sup, the files available via CVSup are organized into named
+groups called "collections". The collections making up the FreeBSD
+source tree are described in <ref id="sup:dists" name="the sup
+collections document">. In this example, we wish to receive the
+entire main source tree for the FreeBSD system. There is a single
+large collection "src-all" which will give us all of that, except the
+export-controlled cryptography support. Let us assume for this
+example that we are in the USA or Canada. Then we can get the
+cryptography code with two additional collections, "src-eBones" and
+"src-secure". As a first step toward constructing our supfile, we
+simply list these collections, one per line:
+
+<verb>
+ src-all
+ src-eBones
+ src-secure
+</verb>
+
+<sect2><heading>Which version(s) of them do you want?<label id="cvsup:config:vers"></heading>
+
+<p>With CVSup, you can receive virtually any version of the sources
+that ever existed. That is possible because the cvsupd server works
+directly from the CVS repository, which contains all of the versions.
+You specify which one of them you want using the "tag=" and "date="
+value fields.
+
+<p>The "tag=" field names a symbolic tag in the repository. 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.
+
+<p>Here are the branch tags that users might be interested in:
+
+<descrip>
+ <tag/tag=./
+ The main line of development, also known as FreeBSD-current.
+ Note: the "." is not punctuation; it's the name of the tag.
+ <tag/tag=RELENG_2_2/
+ The line of development leading up to FreeBSD-2.2.
+ <tag/tag=RELENG_2_1_0/
+ The line of development for FreeBSD-2.1.x, also known as
+ FreeBSD-stable.
+</descrip>
+
+<p>Here are the revision tags that users might be interested in:
+
+<descrip>
+ <tag/tag=RELENG_2_1_6_1_RELEASE/
+ FreeBSD-2.1.6.1.
+ <tag/tag=RELENG_2_1_6_RELEASE/
+ FreeBSD-2.1.6.
+ <tag/tag=RELENG_2_1_5_RELEASE/
+ FreeBSD-2.1.5.
+ <tag/tag=RELENG_2_1_0_RELEASE/
+ FreeBSD-2.1.0.
+</descrip>
+
+<p>Be very careful to type the tag name exactly as shown. CVSup cannot
+distinguish between valid and invalid tags. If you misspell the tag,
+CVSup will behave as though you had specified a valid tag which happens
+to refer to no files at all. It will delete your existing sources in
+that case.
+
+<p>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 "date=" value
+field. The cvsup(1) manual page explains how to do that.
+
+<p>For our example, we wish to receive FreeBSD-current. We add this line
+at the beginning of our supfile:
+
+<verb>
+ *default tag=.
+</verb>
+
+<p>There is an important special case that comes into play if you specify
+neither a "tag=" field nor a "date=" field. In that case, you receive
+the actual RCS files directly from the server's CVS repository, rather
+than receiving a particular version. Developers generally prefer this
+mode of operation. By maintaining a copy of the repository itself on
+their systems, they gain the ability to browse the revision histories
+and examine past versions of files. This gain is achieved at a large
+cost in terms of disk space, however.
+
+<sect2><heading>Where do you want to get them from?<label id="cvsup:config:where"></heading>
+
+<p>This one is easy. We use the "host=" field to tell cvsup to get
+its updates from the primary FreeBSD distribution site,
+"cvsup.FreeBSD.org":
+
+<verb>
+ *default host=cvsup.FreeBSD.org
+</verb>
+
+<p>On any particular run of cvsup, we can override this setting on the
+command line, with "-h hostname".
+
+<sect2><heading>Where do you want to put them on your own machine?<label id="cvsup:config:dest"></heading>
+
+<p>The "prefix=" field tells cvsup where to put the files it receives.
+In this example, we'll put the source files directly into our main
+source tree, "/usr/src". The "src" directory is already implicit in the
+collections we've chosen to receive, so this is the correct
+specification:
+
+<verb>
+ *default prefix=/usr
+</verb>
+
+<sect2><heading>Where should cvsup maintain its status files?<label id="cvsup:config:status"></heading>
+
+<p>The cvsup client maintains certain status files in what is called
+the "base" directory. These files help CVSup to work more
+efficiently, by keeping track of which updates you've already
+received. We will use the standard base directory,
+"/usr/local/etc/cvsup":
+
+<verb>
+ *default base=/usr/local/etc/cvsup
+</verb>
+
+<p>This setting is used by default if it's not specified in the
+supfile, so we actually don't need the above line.
+
+<p>If your base directory doesn't already exist, now would be a good
+time to create it. The cvsup client will refuse to run if the base
+directory doesn't exist.
+
+<sect2><heading>Miscellaneous supfile settings</heading>
+
+<p>There is one more line of boiler plate that normally needs to be
+present in the supfile:
+
+<verb>
+ *default release=cvs delete use-rel-suffix compress
+</verb>
+
+<p>"release=cvs" indicates that the server should get its information
+out of the main FreeBSD CVS repository. This is virtually always the
+case, but there are other possibilities which are beyond the scope of
+this discussion.
+
+<p>"delete" gives CVSup permission to delete files. You should always
+specify this, so that CVSup can keep your source tree fully up to
+date. CVSup is careful to delete only those files for which it is
+responsible. Any extra files you happen to have will be left strictly
+alone.
+
+<p>"use-rel-suffix" is ... arcane. If you really want to know about
+it, see the cvsup(1) manual page. Otherwise, just specify it and
+don't worry about it.
+
+<p>"compress" enables the use of gzip-style compression on the
+communication channel. If your network link is T1 speed or faster,
+you probably shouldn't use compression. Otherwise, it helps
+substantially.
+
+<sect2><heading>Putting it all together</heading>
+
+<p>Here is the entire supfile for our example:
+
+<verb>
+ *default tag=.
+ *default host=cvsup.FreeBSD.org
+ *default prefix=/usr
+ *default base=/usr/local/etc/cvsup
+ *default release=cvs delete use-rel-suffix compress
+ src-all
+ src-eBones
+ src-secure
+</verb>
+
+<sect1><heading>Running CVSup</heading>
+
+<p>You are now ready to try an update. The command line for doing this is
+quite simple:
+
+<verb>
+ cvsup supfile
+</verb>
+
+<p>where "supfile" is of course the name of the supfile you've just created.
+Assuming you are running under X11, cvsup will display a GUI window with
+some buttons to do the usual things. Press the "go" button, and watch
+it run.
+
+<p>Since you are updating your actual "/usr/src" tree in this example, you
+will need to run the program as root so that cvsup has the permissions
+it needs to update your files. Having just created your configuration
+file, and having never used this program before, that might
+understandably make you nervous. There is an easy way to do a trial run
+without touching your precious files. Just create an empty directory
+somewhere convenient, and name it as an extra argument on the command
+line:
+
+<verb>
+ mkdir /var/tmp/dest
+ cvsup supfile /var/tmp/dest
+</verb>
+
+<p>The directory you specify will be used as the destination directory
+for all file updates. CVSup will examine your usual files in
+"/usr/src", but it will not modify or delete any of them. Any file
+updates will instead land in "/var/tmp/dest/usr/src". CVSup will also
+leave its base directory status files untouched when run this way.
+The new versions of those files will be written into the specified
+directory. As long as you have read access to "/usr/src", you don't
+even need to be root to perform this kind of trial run.
+
+<p>If you are not running X11 or if you just don't like GUIs, you
+should add a couple of options to the command line when you run cvsup:
+
+<verb>
+ cvsup -g -L 2 supfile
+</verb>
+
+<p>The "-g" tells cvsup not to use its GUI. This is automatic if you are
+not running X11, but otherwise you have to specify it.
+
+<p>The "-L 2" tells cvsup to print out the details of all the file updates
+it is doing. There are three levels of verbosity, from "-L 0" to "-L 2".
+The default is 0, which means total silence except for error messages.
+
+<p>There are plenty of other options available. For a brief list of them,
+type "cvsup -H". For more detailed descriptions, see the manual page.
+
+<p>Once you are satisfied with the way updates are working, you can arrange
+for regular runs of cvsup using cron(8). Obviously, you shouldn't let
+cvsup use its GUI when running it from cron.
+
+<sect1><heading>Announcements, Questions, and Bug Reports</heading>
+
+<p>Most FreeBSD-related discussion of CVSup takes place on the
+&a.hackers;. New versions of the software are announced there, as
+well as on the &a.announce;.
+
+<p>Questions and bug reports should be addressed to the author of the
+program at <url url="mailto:cvsup-bugs@polstra.com"
+name="cvsup-bugs@polstra.com">.
OpenPOWER on IntegriCloud