=================================================================== RCS file: /cvsrepo/anoncvs/cvs/www/Attic/ctm.html,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- www/Attic/ctm.html 2000/11/17 19:11:33 1.12 +++ www/Attic/ctm.html 2001/01/01 22:01:21 1.13 @@ -6,7 +6,7 @@
-CTM for OpenBSD +CTM for OpenBSD

What is ctm?

@@ -15,11 +15,13 @@ Ctm is a system which was designed by Poul-Henning Kamp for making changes to a source tree available on a daily basis by email. This is a good way to stay up to date with the current source- or -cvs-tree if you have a bad internet connection - for instance via modem. +CVS tree if you have a bad Internet connection, for instance via modem.

-Ctm uses very low bandwidth for distributing the changes to the -tree, and compresses them using gzip -9. +Ctm uses very low bandwidth for distributing the changes to the tree, +and compresses them using gzip -9. In contrast to CVSup, ctm is written in plain C and therefore +available for every platform supported by OpenBSD.

How does it work?

@@ -27,43 +29,56 @@ The basic idea of ctm is that you subscribe to a special mailing list for a particular source tree. Each day you receive an email message containing all the changes to that tree during that period. -One set of differences is called a "delta". +One set of differences is called a "delta".

-You begin with a base set against which later deltas are patched. -To begin using ctm you must grab the latest base set and all deltas -after that; once you have processed those you can process later -deltas you receive on the mailing list. The base sets are split -into pieces of 1400k each for easier downloading over bad lines -and you can even put them onto floppies this way. +You begin with a base set, against which later deltas are patched. To +begin using ctm you download the latest base set and all deltas +generated after that. Once you have processed those you can process +later deltas you receive from the mailing list. The base sets are split +into pieces of 1400kB each for easier downloading over bad lines, and +you can even put them onto floppies this way.

-Bases are generated approximately once every 100 relative deltas, so you never -have to grab more than 100 deltas to catch up. +Base sets are generated once every 50 relative deltas, so you never +have to grab more than 50 deltas to catch up. +

+There are currently two kinds of base delta. For quite a while we +were making tar.gz files manually, but we are +switching back to real ctm base deltas. The latter contain md5 +checksums and are generated automatically, thus are a bit safer. You +can distinguish these two kinds of base delta by their filename. An +example for a tar.gz file is +OpenBSD-cvs.1450.tar.gz, whereas a ctm base delta +would be named OpenBSD-cvs.1500A.gz. See below for +detailed instructions. +

How much bandwidth does ctm use?

-As mentioned above, the base set contains a full source tree in TAR format, -and is thus quite large. You must obtain the base set and all relative -deltas up to present via ftp from the site listed below. Sizes are: +You obtain the base set and all relative deltas up to the recent one +via ftp from the sites listed below. Sizes are:

Larger ctm updates are rare, though, usually occurring only after a major -import of something like binutils, perl, etc. +import of something like binutils, perl, gcc, etc.

How do I use ctm?

@@ -71,71 +86,124 @@
  • Subscribe to the ctm mailing list for the source set you want.

    There are several mailing lists related to ctm. There is a list for - updates to the updates to cvs tree, a list for the source tree, a list - for the X11 part of both and one for the ports tree plus - a list for seeing log messages from the ctm delta generator runs. + updates to the CVS tree, a list for the source tree, a list + for the X11 part of both, and one for the ports tree, plus + a list for log messages from the ctm delta generation runs.

    The following commands will subscribe you to the appropriate lists: -

    -For the cvs tree (without the X11 part):
    - echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org
    -For the X11 part of the cvs tree:
    - echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.org
    -For the source tree (without the X11 part):
    - echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org
    -For the X11 part of the source tree:
    - echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.org
    -For the ports tree:
    - echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.org
    -For the ctm log list:
    - echo subscribe ctm-log | mail majordomo@OpenBSD.org
    -

    +

    +For the CVS tree (without the X11 part): +

    +	echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org
    +
    +For the X11 part of the CVS tree: +
    +	echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.org
    +
    +For the source tree (without the X11 part): +
    +	echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org
    +
    +For the X11 part of the source tree: +
    +	echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.org
    +
    +For the ports tree: +
    +	echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.org
    +
    +For the ctm log list: +
    +	echo subscribe ctm-log | mail majordomo@OpenBSD.org
    +
    -
  • Wait until you get your first delta. +

    +

  • Install the ctm program from a package or from the ports +collection. You'll find the port at +/usr/ports/devel/ctm. -
  • Unpack and assemble the ctm delta using ctm_rmail. -
    -
    - - ctm_rmail -p. -d. -b. folder - -

    -where folder is the mail folder containing the delta mail. -
    -This will decode the ctm delta and place it in the working directory. -The delta will be a file of the form OpenBSD-XXX.YYYY.gz, where XXX is -either "src" or "cvs", and YYYY is the number of the delta. + +Note: The examples below just cover OpenBSD-cvs for clarity. The +other source sets are handled in the same fashion. + +

    + +

    +The addresses for the deltas are: +

    -

    +NOTE: I'm very interested in finding other sites around the world + that would like to mirror these deltas.

    -

  • Run ctm. -
    -
    - - cd target
    - ctm -v -v /deltas/OpenBSD-cvs.*

    -where target is the directory where you want your cvs tree to be, -and deltas is where you have stored the deltas. -

    -It will take some time to run all of the deltas, but the daily invocations -of ctm_rmail and ctm will not take nearly as long. - +

    Should I choose the source or CVS tree?

    -

    Should I choose the source or cvs tree?

    -

    -This depends on your diskspace, among other factors. Since ctm doesn't -yet deal with files which have been modified outside of the ctm process, -the "better" choice is probably the cvs-tree. Then you can check out -your working source tree from your cvs-tree, and keep your local mods -in your source tree, leaving only ctm to touch your cvs tree. +This depends on your diskspace, among other factors. Since ctm +doesn't deal with files which have been modified locally, the "better" +choice is probably the CVS tree. You then can check out your working +source tree from your CVS tree, and keep your local modifications in +your source tree, because cvs is smart enough to merge in your local +changes.

    The drawback, however, is the amount of diskspace it takes. A checked-out -source tree takes about 300Mb or so, but if you have your own cvs tree you -need 400Mb or so for it, plus another 300Mb for the checked out tree. +source tree takes about 350MB or so, but if you have your own cvs tree you +need about 1Gb for it, plus another 350MB for the checked out tree.

    -This doesn't count the 100Mb or more you will need to do a build (depending -on the architecture). +This doesn't count the 100MB or more (depending on the architecture) +you will need to do a build, i.e. compile the sources.

    If you just get the source tree, you will need to deal with local @@ -201,15 +255,17 @@ you should have no problems. A sample of this is as follows:

    -Suppose your ctm-updated tree is in /usr/src-ctm, and your real -source tree, the one you make your modifications to and do your builds from, -is in /usr/src. /usr/src should be initially an empty -directory. The following command will set up the union mount: -

    - - mount -t union -o -b /usr/src-ctm /usr/src - -

    +Suppose your ctm-updated tree is in /usr/src-ctm, and +your real source tree, the one you make your modifications to and do +your builds from, is in /usr/src. +/usr/src should be initially an empty directory. The +following command will set up the union mount: + +

    +	mount -t union -o -b /usr/src-ctm /usr/src
    +
    + +

    Modifications made to files in /usr/src will become a file contained within /usr/src, hiding the one in src-ctm. If changes are made via ctm to the underlying src-ctm tree, those changes will not be seen if there is @@ -218,41 +274,45 @@

    You should periodically unmount the union and search for files which are local to the union filesystem. -

    - - umount /usr/src
    - find /usr/src -type f

    -
    -

    -The commands ls -W and rm -W will be useful too, as objects -named "whiteouts" in /usr/src will also hide files in src-ctm. +

    +	umount /usr/src
    +	find /usr/src -type f
    +
    +

    -If you get the cvs-tree, you can use the "cvs checkout" command to check -out a source tree from it, and each time you update with ctm you can use -the "cvs update" command to update your source tree. +The commands ls -W and rm -W will be +useful too, as objects named "whiteouts" in /usr/src will also hide +files in src-ctm. -

    -To get an initial src tree:
    - - cd /usr
    - cvs -qd YOUR_CVS_TREE checkout src


    -
    -and after each ctm update:
    - - cd /usr/src
    - cvs -q update -PAd

    -
    +

    +If you get the CVS tree, you can use the cvs checkout +command to check out a source tree from it, and each time you update +with ctm you can use the cvs update command to +update your source tree. +

    +To get an initial src tree: +

    +	cd /usr
    +	cvs -qd YOUR_CVS_TREE checkout -A src
    +
    +

    +and after each ctm update: +

    +	cd /usr/src
    +	cvs -q update -PAd
    +
    +

    How stable is ctm for OpenBSD?

    -Ctm has been in use for over a year for OpenBSD, and for FreeBSD for a -number of years. Ctm is quite reliable and stable. +Ctm has been in use for over four years for OpenBSD, and for FreeBSD +for an even longer period of time. Ctm is very reliable and stable.

    More information

    -If you have problems with ctm, a good place to start is the FreeBSD -handbook: +If you want to learn more about ctm, a good place to start with is the +FreeBSD Handbook:
    -There are also man pages for all of the ctm utilities included in the -source package. If you have OpenBSD, you should already have the man -pages, source, and binaries. If not you can obtain them from the same -ftp site as the deltas below. +There are also man pages for all of the ctm utilities.

    -You can also contact the OpenBSD mailing lists or myself if you have -difficulties with ctm, although my free time tends to be rather limited. - -

    Summary:

    @@ -278,49 +331,44 @@

  • Mailing lists: -
  • FTP (for base and relative deltas; and OpenBSD has ctm in the source - tree, but if you don't have source or binaries, the source is here too): +
  • FTP (for base and relative deltas):

    -I will make any important notes and announcements about ctm in: +Important notes and announcements about ctm will be posted to:

    -NOTE: If you use ctm for OpenBSD, please send me email so I -know how many people are using it!

    Acknowledgements

    + +
  • Thomas Graichen (graichen@OpenBSD.org) for starting ctm for + OpenBSD and maintaining it all those years -

    -Good luck! +

  • Wim Vandeputte (wvdeputte@OpenBSD.org) for hosting ctm now -

    -t +

  • ... and all the others who contributed indirectly + -
    -
    Thomas Graichen
    -
    +

    +For any problems, suggestions, reports and questions regarding ctm +contact the ctm maintainer +Hans Günter Weigand. +

    OpenBSD/CTM logo designed for the OpenBSD Project by Phillip F Knaack.


    OpenBSD www@openbsd.org -
    -$OpenBSD: ctm.html,v 1.12 2000/11/17 19:11:33 jufi Exp $ +
    +$OpenBSD: ctm.html,v 1.13 2001/01/01 22:01:21 naddy Exp $ -