*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->FreeBSD man pages -> ctm (1)              



NAME    [Toc]    [Back]

     ctm -- source code mirror program

SYNOPSIS    [Toc]    [Back]

     ctm [-cFklquv] [-b basedir] [-B backup-file] [-e include-regex]
	 [-t tar-command] [-T tmpdir] [-V level] [-x exclude-regex] file ...

DESCRIPTION    [Toc]    [Back]

     The ctm utility was originally ``Cvs Through eMail'', but now instead it
     seems more fitting to call it ``Current Through eMail''.

     The ctm utility is now meant to be the definitive way to make and apply a
     delta between two versions of a directory tree.

     There are two parts to this, making the delta and applying it.  These are
     two entirely different things.

   Usage    [Toc]    [Back]
     To apply a CTM delta, you pass it to the ctm command.  You can pass a CTM
     delta on stdin, or you can give the filename as an argument.  If you do
     the latter, you make life a lot easier for your self, since the program
     can accept gzip'ed files and since it will not have to make a temporary
     copy of your file.  You can specify multiple deltas at one time, they
     will be processed one at a time.  Deltas that are already applied will be

     The ctm command runs in a number of passes.  It will process the entire
     input file in each pass, before commencing with the next pass.

     Before working on a file name ctm first checks for the existence of the
     file name.ctm.  If this file exists, ctm works on it instead.

     Pass 1 will verify that the input file is OK.  The syntax, the data and
     the global MD5 checksum will be checked.  If any of these fail, ctm will
     simply reject the input file.

     Pass 2 will validate that the directory tree is in the state expected by
     the CTM delta.  This is done by looking for files and directories which
     should/should not exist and by checking the MD5 checksums of files.

     If a backup-file had been specified using the -B option, all files that
     would be modified by this ctm invocation are backed up to this file using
     the archiver command specified by the -t option.  The default archiver
     command is tar -rf %s -T -.

     Pass 3 will actually apply the delta.

     The list of files that would be modified by ctm is subject to filtering
     regular expressions specified using the -e and -x options.  The -e and -x
     options are applied in order of appearance on the command line.  The last
     filter that matched a given file name determines whether the file would
     be operated on or left alone by ctm.

     The ctm utility will extract the file hierarchy below its working directory.
  Absolute filenames or filenames containing references through `.'
     and `..' are explicitly prohibited as a security measure.

   Options    [Toc]    [Back]
     -b basedir
	     Prepend the path basedir to every filename.

     -B backup-file
	     Backup all files that would be modified by this CTM run to
	     backup-file.  If any filters are specified using the -e and -x
	     options, then the final set of files backed up are those that
	     would be modified by CTM after the filters are applied.

     -c      Check it out, don't do anything.

     -e regular_expression
	     Match each name in the CTM file against regular_expression, and
	     if it matches process the file, otherwise leave it alone.	There
	     may be any number of these options.  Use of this option disables
	     the .ctm_status sequence number checks.  For example, the expression
 ^usr.sbin/ctm for example, will select the usr.sbin/ctm
	     source directory and all pathnames under it.

	     Pathnames can be disabled from being considered by CTM using the
	     -x option.

     -F      Force.

     -k      Keep files and directories and don't remove them even if the CTM
	     file specifies they are to be removed.  If the -B option is specified,
 these files and directories will not be backed up.

     -l      List files that would be modified by this invocation of CTM and
	     the actions that would be performed on them.  Use of the -l
	     option disables the .ctm_status checks and integrity checks on
	     the source tree being operated on.  The -l option can be combined
	     with the -e and -x options to determine which files would be modified
 by the given set of command line options.

     -q      Tell us less.

     -t tar-command
	     Use tar-command instead of the default archiver tar.  This option
	     takes effect only if a backup file had been specified using the
	     -B option.  A %s in the tar command will be replaced by the name
	     of the backup file.

     -T tmpdir
	     Put temporary files under tmpdir.

     -u      Set modification time of created and modified files to the CTM
	     delta creation time.

     -v      Tell us more.

     -V level
	     Tell us more.  Level is the level of verbosity.

     -x regular_expression
	     Match each name in the CTM file against regular_expression and if
	     it matches, leave the file alone.	There may be any number of
	     these options.  Use of this option disables the .ctm_status
	     sequence number checks.

	     Pathnames can be selected for CTM's consideration using the -e

SECURITY    [Toc]    [Back]

     On its own, CTM is an insecure protocol - there is no authentication performed
 that the changes applied to the source code were sent by a trusted
     party, and so care should be taken if the CTM deltas are obtained via an
     unauthenticated medium such as regular email.  It is a relatively simple
     matter for an attacker to forge a CTM delta to replace or precede the
     legitimate one and insert malicious code into your source tree.  If the
     legitimate delta is somehow prevented from arriving, this will go unnoticed
 until a later delta attempts to touch the same file, at which point
     the MD5 checksum will fail.

     To remedy this insecurity, CTM pieces generated by FreeBSD.org are cryptographically
 signed in a format compatible with the GNU Privacy Guard
     utility, available in /usr/ports/security/gpg, and the Pretty Good Privacy
 v5 utility, /usr/ports/security/pgp5.  The relevant public key can
     be obtained by fingering ctm@FreeBSD.org.

     CTM deltas which are thus signed cannot be undetectably altered by an
     attacker.	Therefore it is recommended that you make use of GPG or PGP5
     to verify the signatures if you receive your CTM deltas via email.

ENVIRONMENT    [Toc]    [Back]

     TMPDIR, if set to a pathname, will cause ctm to use that pathname as the
     location of temporary file.  See tempnam(3), for more details on this.
     The same effect may be achieved with the -T flag.

FILES    [Toc]    [Back]

     .ctm_status contains the sequence number of the last CTM delta applied.
     Changing or removing this file will greatly confuse ctm.

     Using the -e and -x options can update a partial subset of the source
     tree and causes sources to be in an inconsistent state.  It is assumed
     that you know what you are doing when you use these options.

EXAMPLES    [Toc]    [Back]

     cd ~cvs
     /usr/sbin/ctm ~ctm/cvs-*

     To extract and patch all sources under `lib'

     cd ~/lib-srcs
     /usr/sbin/ctm -e '^lib' ~ctm/src-cur*

DIAGNOSTICS    [Toc]    [Back]

     Numerous messages, hopefully self-explanatory.  The ``noise level'' can
     be adjusted with the -q, -v and -V options.

SEE ALSO    [Toc]    [Back]

     ctm_rmail(1), ctm(5)

HISTORY    [Toc]    [Back]

     Initial trials were run during the work on FreeBSD 1.1.5, and many bugs
     and methods were hashed out.

     The ctm command appeared in FreeBSD 2.1.

AUTHORS    [Toc]    [Back]

     The CTM system has been designed and implemented by Poul-Henning Kamp

     Joerg Wunsch <joerg@FreeBSD.org> wrote this man-page.

FreeBSD 5.2.1			March 25, 1995			 FreeBSD 5.2.1
[ Back ]
 Similar pages
Name OS Title
ctm FreeBSD source code mirror system
sccs Tru64 Administration program for Source Code Control System (SCCS) commands
untrigraph Linux remove trigraphs from C source code
entrigraph Linux convert C source code to use trigraphs
chktri Linux check for trigraphs in C source code
cb Tru64 Converts C source code into a readable form
c2man Linux generate manual pages from C source code
cstr Linux print out string literals in C source code
sccsfile Tru64 Contains Source Code Control System (SCCS) information
autoconf Linux creates scripts to configure source code packages using templates
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service