Finish initial pass through CTM chapter.

Sponsored by: iXsystems
This commit is contained in:
Dru Lavigne 2014-02-12 21:00:59 +00:00
parent 23acfe3906
commit 29da518808
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=43887

View file

@ -148,7 +148,7 @@
to obtain up to three deltas per day for the most active to obtain up to three deltas per day for the most active
branches. Update sizes are always kept as branches. Update sizes are always kept as
small as possible and are typically less than 5K. About one in very ten small as possible and are typically less than 5K. About one in very ten
update is 10-50K in size and rarely there will be an update updates is 10-50K in size, and there will occasionally be an update
larger than 100K+.</para> larger than 100K+.</para>
<para>When using <application>CTM</application> to track &os; development, <para>When using <application>CTM</application> to track &os; development,
@ -172,8 +172,7 @@
email.</para> email.</para>
<para><acronym>FTP</acronym> deltas can be obtained from the following mirror sites. <para><acronym>FTP</acronym> deltas can be obtained from the following mirror sites.
Download the relevant directory and read its When using anonymous <acronym>FTP</acronym> to obtain <application>CTM</application> deltas,
<filename>README</filename>. When using anonymous <acronym>FTP</acronym> to obtain <application>CTM</application> deltas,
select a geographically close mirror. select a geographically close mirror.
In case of problems, contact the &a.ctm-users.name; In case of problems, contact the &a.ctm-users.name;
mailing list.</para> mailing list.</para>
@ -228,10 +227,10 @@
</variablelist> </variablelist>
<para>To instead receive deltas through email, subscribe to one of the <para>To instead receive deltas through email, subscribe to one of the
<application>CTM</application> distribution lists. <literal>ctm-src</literal> distribution lists available from
&a.ctm-src-cur.name; supports the entire source tree, <uri xlink:href="http://lists.freebsd.org/mailman/listinfo">http://lists.freebsd.org/mailman/listinfo</uri>. For example,
&a.ctm-src-cur.name; supports the HEAD of the development &a.ctm-src-cur.name; supports the HEAD of the development
branch, and &a.ctm-src-9.name; supports the 9.X release branch.</para> branch and &a.ctm-src-9.name; supports the 9.X release branch.</para>
<para>As <para>As
<application>CTM</application> updates arrive through email, <application>CTM</application> updates arrive through email,
@ -253,154 +252,142 @@
</sect2> </sect2>
<sect2> <sect2>
<title>Using <application>CTM</application> for the First <title><application>CTM</application> Usage</title>
Time</title>
<para>Before <application>CTM</application> <para>Before <application>CTM</application>
deltas can be used, a starting point for the deltas can be used for the first time, a starting point
deltas must be produced from an <quote>empty</quote> directory. must be produced.</para>
An initial <quote>Empty</quote> delta is used to start
the local <application>CTM</application>-supported tree.</para>
<para>Since the trees are many tens of megabytes, you should <para>One method is to apply a <quote>starter</quote> delta to an
prefer to start from something already at hand. If you have a empty directory. A
-RELEASE CD, you can copy or extract an initial source from starter delta can be recognized by
it. This will save a significant transfer of data.</para> the <filename>XEmpty</filename> in its name, such as
<filename>src-cur.3210XEmpty.gz</filename>.
<para>You can recognize these <quote>starter</quote> deltas by
the <literal>X</literal> appended to the number
(<filename>src-cur.3210XEmpty.gz</filename> for instance).
The designation following the <literal>X</literal> corresponds The designation following the <literal>X</literal> corresponds
to the origin of your initial <quote>seed</quote>. to the origin of the initial <quote>seed</quote>, where
<filename>Empty</filename> is an empty directory. As a rule a <filename>Empty</filename> is an empty directory. As a rule, a
base transition from <literal>Empty</literal> is produced base transition from <literal>Empty</literal> is produced
every 100 deltas. By the way, they are large! 70 to 80 every 100 deltas. Be aware that starter deltas are large and
70 to 80
Megabytes of <command>gzip</command>'d data is common for the Megabytes of <command>gzip</command>'d data is common for the
<filename>XEmpty</filename> deltas.</para> <filename>XEmpty</filename> deltas.</para>
<para>Once you have picked a base delta to start from, you will <para>Another method is to copy or extract an initial source from
also need all deltas with higher numbers following it.</para> a
</sect2> RELEASE media as this can
save a significant transfer of data from the Internet.</para>
<sect2> <para>Once a base delta has been created, apply
<title>Using <application>CTM</application> in Your Daily all deltas with higher numbers. To apply the deltas:</para>
Life</title>
<para>To apply the deltas, simply say:</para> <screen>&prompt.root; <userinput>cd /directory/to/store/the/stuff</userinput>
&prompt.root; <userinput>ctm -v -v /directory/which/stores/the/deltas/src-xxx.*</userinput></screen>
<screen>&prompt.root; <userinput>cd /where/ever/you/want/the/stuff</userinput> <para>Multiple deltas can be applied at one time as they
&prompt.root; <userinput>ctm -v -v /where/you/store/your/deltas/src-xxx.*</userinput></screen> will be processed one at a time and any deltas that are already
applied will be ignored. <application>CTM</application> understands deltas which
<para><application>CTM</application> understands deltas which have been put through <command>gzip</command>, which saves disk
have been put through <command>gzip</command>, so you do not
need to <command>gunzip</command> them first, this saves disk
space.</para> space.</para>
<para>Unless it feels very secure about the entire process, <para>To
<application>CTM</application> will not touch your tree. To verify a delta without applying it, include <option>-c</option>.
verify a delta you can also use the <option>-c</option> flag <application>CTM</application> will not actually touch
and <application>CTM</application> will not actually touch the local tree but will instead verify the integrity of the delta
your tree; it will merely verify the integrity of the delta to see if it would apply cleanly. Refer to &man.ctm.1; for
and see if it would apply cleanly to your current tree.</para> more information about available switches and an overview of
the process <application>CTM</application> uses when applying
deltas.</para>
<para>There are other options to <application>CTM</application> <para>To keep the local source tree up-to-date, every time a
as well, see the manual pages or look in the sources for more new delta becomes available, apply it through <application>CTM</application>.</para>
information.</para>
<para>That is really all there is to it. Every time you get a <para>Once applied, it is recommended to not delete the deltas if it is a burden to download
new delta, just run it through <application>CTM</application> them again. This way, a local copy is available in case
to keep your sources up to date.</para> something bad happens.</para>
<para>Do not remove the deltas if they are hard to download
again. You just might want to keep them around in case
something bad happens. Even if you only have floppy disks,
consider using <command>fdwrite</command> to make a
copy.</para>
</sect2> </sect2>
<sect2> <sect2>
<title>Keeping Your Local Changes</title> <title>Keeping Local Changes</title>
<para>As a developer one would like to experiment with and <para>Developers often experiment with and
change files in the source tree. change files in thier local source tree.
<application>CTM</application> supports local modifications in <application>CTM</application> supports local modifications in
a limited way: before checking for the presence of a file a limited way: before checking for the presence of a file,
<filename>foo</filename>, it first looks for it first looks for a file with the same name and a
<filename>foo.ctm</filename>. If this file exists, <filename>.ctm</filename> extension. If this file exists,
<application>CTM</application> will operate on it instead of <application>CTM</application> will operate on it instead of the
<filename>foo</filename>.</para> original filename.</para>
<para>This behavior gives us a simple way to maintain local <para>This behavior provides a simple way to maintain local
changes: simply copy the files you plan to modify to the changes. Before modifying a file, make a copy with a
corresponding file names with a <filename>.ctm</filename> <filename>.ctm</filename>
suffix. Then you can freely hack the code, while suffix. Make any changes to the original filename, knowing that
<application>CTM</application> keeps the <application>CTM</application> will only apply updates to the file with the
<filename>.ctm</filename> file up-to-date.</para> <filename>.ctm</filename> suffix.</para>
</sect2> </sect2>
<sect2> <sect2>
<title>Other Interesting <application>CTM</application> <title>Other <application>CTM</application>
Options</title> Options</title>
<sect3> <variablelist>
<title>Finding Out Exactly What Would Be Touched by an <varlistentry>
Update</title> <term>Finding Out Exactly What Would Be Touched by an
Update</term>
<para>You can determine the list of changes that <listitem>
<application>CTM</application> will make on your source <para>To determine the list of changes that
repository using the <option>-l</option> option to <application>CTM</application> will make to the local source
<application>CTM</application>.</para> repository, use <option>-l</option>. This option is useful for creating logs of the
changes or when performing pre- or post-processing on any of the modified files.</para>
</listitem>
</varlistentry>
<para>This is useful if you would like to keep logs of the <varlistentry>
changes, pre- or post- process the modified files in any <term>Making Backups Before Updating</term>
manner, or just are feeling a tad paranoid.</para>
</sect3>
<sect3> <listitem>
<title>Making Backups Before Updating</title> <para>To backup all of the files that
<para>Sometimes you may want to backup all the files that
would be changed by a <application>CTM</application> would be changed by a <application>CTM</application>
update.</para> update, specify <option>-B backup-file</option>. This option
tells <application>CTM</application> to backup all files
<para>Specifying the <option>-B backup-file</option> option touched by the applied
causes <application>CTM</application> to backup all files
that would be touched by a given
<application>CTM</application> delta to <application>CTM</application> delta to
<filename>backup-file</filename>.</para> <filename>backup-file</filename>.</para>
</sect3> </listitem>
</varlistentry>
<sect3> <varlistentry>
<title>Restricting the Files Touched by an Update</title> <term>Restricting the Files Touched by an Update</term>
<para>Sometimes you would be interested in restricting the <listitem>
<para>To restrict the
scope of a given <application>CTM</application> update, or scope of a given <application>CTM</application> update, or
may be interested in extracting just a few files from a to extract just a few files from a
sequence of deltas.</para> sequence of deltas,
filtering regular expressions can be specified using
<para>You can control the list of files that <option>-e</option>, which specifies which files to process, or <option>-x</option>, which specifies which files to ignore.</para>
<application>CTM</application> would operate on by
specifying filtering regular expressions using the
<option>-e</option> and <option>-x</option> options.</para>
<para>For example, to extract an up-to-date copy of <para>For example, to extract an up-to-date copy of
<filename>lib/libc/Makefile</filename> from your collection <filename>lib/libc/Makefile</filename> from a collection
of saved <application>CTM</application> deltas, run the of saved <application>CTM</application> deltas:</para>
commands:</para>
<screen>&prompt.root; <userinput>cd /where/ever/you/want/to/extract/it/</userinput> <screen>&prompt.root; <userinput>cd /directory/to/extract/to/</userinput>
&prompt.root; <userinput>ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*</userinput></screen> &prompt.root; <userinput>ctm -e '^lib/libc/Makefile' /directory/which/stores/the/deltas/src-xxx.*</userinput></screen>
<para>For every file specified in a <para>For every file specified in a
<application>CTM</application> delta, the <application>CTM</application> delta,
<option>-e</option> and <option>-x</option> options are <option>-e</option> and <option>-x</option> are
applied in the order given on the command line. The file is applied in the order given on the command line. A file is
processed by <application>CTM</application> only if it is processed by <application>CTM</application> only if it is
marked as eligible after all the <option>-e</option> and marked as eligible after all <option>-e</option> and
<option>-x</option> options are applied to it.</para> <option>-x</option> options are applied.</para>
</sect3> </listitem>
</varlistentry>
</variablelist>
</sect2> </sect2>
<!--
Comment out for now until these can be verified.
<sect2> <sect2>
<title>Future Plans for <application>CTM</application></title> <title>Future Plans for <application>CTM</application></title>
@ -425,6 +412,7 @@
<literal>ports</literal> collection too, but interest has not <literal>ports</literal> collection too, but interest has not
been all that high yet.</para> been all that high yet.</para>
</sect2> </sect2>
-->
</sect1> </sect1>
<sect1 xml:id="svn"> <sect1 xml:id="svn">