NameDateSize

..20-Dec-2016224

ctm/H20-Dec-201614

ctm_dequeue/H20-Dec-20164

ctm_rmail/H20-Dec-20168

ctm_smail/H20-Dec-20164

MakefileH A D08-Mar-201583

Makefile.incH A D08-Mar-2015103

mkCTM/H20-Dec-201612

READMEH A D08-Mar-20153.7 KiB

README

1# ----------------------------------------------------------------------------
2# "THE BEER-WARE LICENSE" (Revision 42):
3# <phk@FreeBSD.org> wrote this file.  As long as you retain this notice you
4# can do whatever you want with this stuff. If we meet some day, and you think
5# this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
6# ----------------------------------------------------------------------------
7#
8# $FreeBSD$
9#
10
11What will I not find in this file ?
12-----------------------------------
13Instructions on how to obtain FreeBSD via CTM.
14Contact <CTM@FreeBSD.org> for that.
15
16What is CTM ?
17-------------
18CTM was originally "CVS Through eMail", but has since changed scope to be
19much more general.
20CTM is now meant to be the definitive way to make and apply a delta between
21two versions of a directory tree.
22There are two parts to this, making the delta and applying it.  These are two
23entirely different things.  CTM concentrates the computation-burden on the
24generation of the deltas, as a delta very often is applied more times than
25it is made.  Second CTM tries to make the minimal size delta.
26
27Why not use diff/patch ?
28------------------------
29Good question.  Primarily because diff and patch doesn't do their job very 
30well.  They don't deal with binary files (in this case files with '\0' or 
31'\0377' characters in them or files that doesn't end in '\n') which isn't
32a big surprise:  they were made to deal with text-files only.  As a second
33gripe, with patch you send the entire file to delete it.  Not particular
34efficient.
35
36So what does CTM do exactly ?
37-----------------------------
38CTM will produce a file, (a delta) containing the instructions and data needed
39to take another copy of the tree from the old to the new status.  CTM means to
40do this in the exact sense, and therefore the delta contains MD5 checksums to
41verify that the tree it is applied to is indeed in the state CTM expects.
42
43This means that if you have modified the tree locally, CTM might not be able
44to upgrade your copy.
45
46How do I make a CTM-delta ?
47---------------------------
48
49Read the source, and be prepared to have 2 copies of the tree; One is
50the reference ("From") tree, and the other is the delta ("To") tree.
51The mkCTM script will create the CTM diff of the differences between
52the reference tree and the delta tree. A lot of scratch space is
53required, and your machine will work hard.
54
55How do I apply a CTM-delta ?
56----------------------------
57You pass it to the 'ctm' command.  You can pass a CTM-delta on stdin, or
58you can give the filename as an argument.  If you do the latter, you make
59life a lot easier for your self, since the program can accept gzip'ed files
60and since it will not have to make a temporary copy of your file.  You can
61specify multiple deltas at one time, they will be processed one at a time.
62
63The ctm command runs in a number of passes.  It will process the entire
64input file in each pass, before commencing with the next pass.
65
66Pass 1 will validate that the input file is OK.  The syntax, the data and 
67the global MD5 checksum will be checked.  If any of these fail, ctm will
68never be able to do anything with the file, so it will simply reject it.
69
70Pass 2 will validate that the directory tree is in the state expected by
71the CTM-delta.  This is done by looking for files and directories which
72should/should not exists and by checking the MD5 checksums of files.  
73
74Pass 3 will actually apply the delta.
75
76Should I delete the delta when I have applied it ?
77--------------------------------------------------
78No.  You might want to selectively reconstruct a file latter on.
79
80Why is CTM not being maintained?
81--------------------------------
82Because CVSUP has improved on the concept quite a bit, and is now
83the method of choice.
84
85Poul-Henning
86