To 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 gziped 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 processed one at a time. Deltas that are already applied will be ignored.
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.
Before working on a file name ctm first checks for the existence of the file name.ctm. If this file exists, ctm works on it instead.
Pass 1 will verify 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 simply reject the input file.
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 exist and by checking the MD5 checksums of files.
If a backup-file had been specified using the -B option, all files that would be modified by this ctm invocation are backed up to this file using the archiver command specified by the -t option. The default archiver command is "tar -rf %s -T -".
Pass 3 will actually apply the delta.
The list of files that would be modified by ctm is subject to filtering regular expressions specified using the -e and -x options. The -e and -x options are applied in order of appearance on the command line. The last filter that matched a given file name determines whether the file would be operated on or left alone by ctm.
The ctm utility will extract the file hierarchy below its working directory. Absolute filenames or filenames containing references through '.' and '..' are explicitly prohibited as a security measure.