mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-12-05 05:49:27 +00:00
98 lines
3.9 KiB
Plaintext
98 lines
3.9 KiB
Plaintext
|
# ----------------------------------------------------------------------------
|
||
|
# "THE BEER-WARE LICENSE" (Revision 42):
|
||
|
# <phk@login.dknet.dk> wrote this file. As long as you retain this notice you
|
||
|
# can do whatever you want with this stuff. If we meet some day, and you think
|
||
|
# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
|
||
|
# ----------------------------------------------------------------------------
|
||
|
#
|
||
|
# $Id$
|
||
|
#
|
||
|
|
||
|
What will I not find in this file ?
|
||
|
-----------------------------------
|
||
|
Instructions on how to obtain FreeBSD via CTM.
|
||
|
Contact <phk@freefall.cdrom.com> for that.
|
||
|
|
||
|
What is CTM ?
|
||
|
-------------
|
||
|
CTM was originally "Cvs Through eMail", but has since changed scope to be
|
||
|
much more general.
|
||
|
CTM 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. CTM concentrates the computation-burden on the
|
||
|
generation og the deltas, as a delta very often is applied more times than
|
||
|
it is made. Second CTM tries to make the minimal size delta.
|
||
|
|
||
|
Why not use diff/patch ?
|
||
|
------------------------
|
||
|
Good question. Primarily because diff and patch doesn't do their job very
|
||
|
well. They don't deal with binary files (in this case files with '\0' or
|
||
|
'\0377' characters in them or files that doesn't end in '\n') which isn't
|
||
|
a big surprise: they were made to deal with text-files only. As a second
|
||
|
gripe, with patch you send the entire file to delete it. Not particular
|
||
|
efficient.
|
||
|
|
||
|
So what does CTM do exactly ?
|
||
|
-----------------------------
|
||
|
CTM will produce a file, (a delta) containing the instructions and data needed
|
||
|
to take another copy of the tree from the old to the new status. CTM means to
|
||
|
do this in the exact sense, and therefore the delta contains MD5 checksums to
|
||
|
verify that the tree it is applied to is indeed in the state CTM expects.
|
||
|
|
||
|
This means that if you have modified the tree locally, CTM might not be able
|
||
|
to upgrade your copy.
|
||
|
|
||
|
How do I make a CTM-delta ?
|
||
|
---------------------------
|
||
|
Don't. Send me email before you even try. This is yet not quite as trivial
|
||
|
as I would like. This is not to discourage you from using CTM, it is merely
|
||
|
to warn you that it is slightly tedious and takes much diskspace.
|
||
|
|
||
|
How do I 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 proccessed one at a time.
|
||
|
|
||
|
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.
|
||
|
|
||
|
Pass 1 will validate 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
|
||
|
never be able to do anything with the file, so it will simply reject it.
|
||
|
|
||
|
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 exists and by checking the MD5 checksums of files.
|
||
|
|
||
|
Pass 3 will actually apply the delta.
|
||
|
|
||
|
Should I delete the delta when I have applied it ?
|
||
|
--------------------------------------------------
|
||
|
No. You might want to selectively reconstruct a file latter on.
|
||
|
|
||
|
What features are are planned ?
|
||
|
-------------------------------
|
||
|
This list isn't exhaustive, and it isn't sorted in priority.
|
||
|
Reconstruct subset of tree.
|
||
|
Make tar-copy of things which will be affected.
|
||
|
Verify.
|
||
|
Internal editor instead of ed(1)
|
||
|
Support for mode
|
||
|
Support for uid/gid
|
||
|
Support for hardlinks
|
||
|
Support for symlinks
|
||
|
|
||
|
Isn't this a bit thin yet ?
|
||
|
---------------------------
|
||
|
Yes.
|
||
|
|
||
|
Can I say something ?
|
||
|
---------------------
|
||
|
Yes, email me: <phk@freefall.cdrom.com>
|
||
|
|
||
|
Poul-Henning
|