mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-12-04 23:19:00 +00:00
ec5d3c392a
subscriptions yet. Wait for the announcement. CTM is my humble attempt to get -current out to people beyond TCP/IP connections. This is for people with dial-up connections and such. CTM can make a delta from one version to another of a source-tree, in a efficient and verified way. Even if there are binary files in the tree. It will even try to make the delta as small as possible. It is OK with me if you yell "Bloating!" but I'll just forward your email to some of the happy customers from CTM version 1, and let them tell you what they think. I will not put ctm into "make world" yet. For now it is just the logical way to get the sources out to people who helps me test this. Poul-Henning
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
|