Open Source Development with CVS: Errata

Last modified: Sunday, 13 August 2000

This page lists known errors in Open Source Development With CVS. Most errors are present in the first printing only, having been corrected in the second; when an error is present in both, that is noted. The errors are divided into two categories:

Potentially Significant Errors

  1. (third printing (PDF)) p. 152 in Chapter 4:
    The last line of the paragraph "Using Keyword Expansion" refers to chapter 11 for a complete list, but the list is actually in chapter 10.
  2. (first and second printings) p. xvi, URL for Stallman's essay:
    The link for Richard Stallman's essay has changed from

  3. (first printing only) p. 75, first screen example:

    Thus, the example should read:
    floss$ pwd
    floss$ cat b-subdir/random.c 
    /* Print out a random number. */
    #include <stdio.h>
    void main ()
      printf ("A random number.\n");
      printf ("Get the joke?\n");
  4. (first printing only) p. 76, first screen example:
    There should a ">>>>>>>" preceding the "", so the example should read:
    floss$ pwd
    floss$ cat b-subdir/random.c
    /* Print out a random number. */
    #include <stdio.h>
    void main ()
    <<<<<<< random.c
      printf ("A random number.\n");
      printf ("A random number.\n");
      printf ("Get the joke?\n");
  5. (first printing only) p. 76, second screen example:
    For some reason the initial command appears once before the prompt and again after it. Just eliminate the first two lines of the example, so it looks like this:
    floss$ cvs -q update -j "Release-1999_05_01-bugfixes:2 days ago" \
                         -j Release-1999_05_01-bugfixes
    RCS file: /usr/local/cvs/myproj/b-subdir/random.c,v
    retrieving revision
    retrieving revision
    Merging differences between and into random.c
  6. (first printing only) p. 77, second screen example:
    I forgot to put a backslash before the first line break, to indicate that the command continues on the next line. In addition, the line break happens in an unnecessarily awkward spot. The example should look like this:
    floss$ cvs -q update -j Release-1999_05_01-bugfixes-fix-number-1 \
                         -j Release-1999_05_01-bugfixes
    RCS file: /usr/local/cvs/myproj/b-subdir/random.c,v
    retrieving revision
    retrieving revision
    Merging differences between and into random.c
  7. (first printing only) p. 21, third screen example:
    The prompt incorrectly is "C:\WINDOWS>", but should be a Unix prompt, "floss$".
  8. (first printing only) p. 47, section heading:
    The section heading "The Slow Method Of Updating" should read "The Slow Method Of Reverting".
  9. (first printing only) p. 49, section heading:
    The section heading "The Fast Method Of Updating" should read "The Fast Method Of Reverting".
  10. (first printing only) p. 57, text immediately following middle code example:
    The parenthetical statement should refer to seconds, not minutes, like this: "... (unless there were any commits during the last second of the day, which there weren't)."
  11. (first printing only) p. 104, short paragraph between two screen examples:
    The parenthetical statement "(You will probably need to do that last step as the superuser.)" is misplaced -- it should actually appear in the next paragraph of running text, because it refers to the command make install, not make.
  12. (first printing only) p. 131:
    The text subtly switches topics in a confusing way. The upper half of the page talks about some properties shared by three different administrative files. Then the lower half (right after the Tip) launches into a description of one of those files in particular, without ever announcing that the topic has changed from the general to the specific. To fix this, change the first line of running text after the Tip to read:

    "The commitinfo file is for generic hooks you want run on every commit. Here are some example commitinfo lines: ...".

  13. (first printing only) p. 132, loginfo expansion examples:
    The text claims that %-expansions always begin with the path to the repository. I could swear I experimented to make sure this was true, but I must have been asleep, because it turns out it expands to the subdirectory in the repository. Thus, all the one-line screen examples on this page that start with /usr/local/newrepos should be changed to start with myproj instead.
  14. (first printing only) p. 171, second paragraph:
    Until its last sentence, this paragraph falsely implies that the only way to restrict use of the cvs admin command is via Unix permissions. Here is a more accurate rewording of the paragraph:

    "Although its name might seem to imply that only the designated CVS administrator can use it, normally anyone can run cvs admin, as long as they have write access to the project in question. However, if a Unix group named cvsadmin exists the server machine, then use of this command is restricted to members of that group (except that the cvs admin -k command is still allowed for all). Either way, cvs admin is best used with caution; the ability to change a project's history is mild compared with the other potentially damaging things it can do."

  15. (first printing only) p. 232, second paragraph of running text:
    The word "information" in the first sentence should be "Info" (it refers to the GNU Info documentation format, not to information in general).
  16. (first printing only) p. 238, -e EDITOR option:
    The third line of text is missing two words; it should read "... invokes the editor based on the CVSEDITOR, VISUAL, or EDITOR environment variables, ..."
  17. (first printing only) p. 238, --help [COMMAND-H [COMMAND]:
    These are two versions of the same option, and are never given at the same time. Therefore, there should be a line break between them (before the capital "-H").
  18. (first printing only) p. 241, -v --version:
    These two are the same option, and so are never given at the same time. Therefore, there should be a line break before the "--version".
  19. (first printing only) p. 247, -j option(s):
    One can invoke cvs checkout with either one -j option or two. Insert the word "or" before the second -j option, to make this clear.
  20. (first printing only) p. 260, top of page:
    There should be a paragraph break, and a loosening of indentation, after the first sentence (the one ending in "earlier"). This is because what follows applies to all the items in the inner bulleted list, including the ones on the preceding page, not just the final item (which happens to be at the top of this page).
  21. (first printing only) p. 276, screen example at middle of page:
    (Essentially the same error as mentioned earlier for page 132).
    The expansion is prefixed by the subdirectory in the repository, not the full path to the repository. Change the text and screen example at the middle of the page to read like this:

    "If any % expansion is done at all, the expansion is prefixed by the subdirectory in the repository. So that last expansion would actually be:

    myproj   hello.c,1.17  README.txt,1.12

Probably Insignificant Errors

  1. (first printing only) p. 18, second-to-last paragraph:
    The word "compiled" should be "completed".
  2. (first printing only) p. 31, diff example:
    The "[0=9.]" in the changed ("!") line in the first diff hunk should read "[0-9.]". I have no idea how that error crept in, as I simply cut and pasted from code that had been working fine. Very odd.
  3. (first printing only) p. 31, running text near middle of page:
    Just a simple typo, "smae" instead of "same".
  4. (first printing only) p. 60, fourth paragraph of running text:
    Instead of "Tags differs ..." it should read "Tags differ ...".
  5. (first printing only) p. 131, first line of the Tip:
    It starts off "Regular expressions being ...", but "Regular expressions are ..." would be more correct and more readable.
  6. (first printing only) p. 227, first two subheadings:
    Both of these subheadings capitalize the word "Export"; however, it should not be capitalized because it is the name of a CVS command (cvs export) and is always invoked lower-case. (Note that the capital "-D" in the first subheading is correct, however.)
  7. (first printing only) p. 249, -D option:
    Missing a period at the end of a sentence (after the word "revisions").
  8. (first printing only) p. 261, 262, 266:
    I inconsistently used "Alternative names" on these pages, instead of "Alternate names" as I did everywhere else in the command reference. Flog me with a SCSI cable, twenty lashes please.
  9. (first and second printings) p. 273, paragraph under "User Variables" heading:
    The word "set" appears spuriously. The text says "Users can set also set their own variables..."; the first "set" should be omitted.
  10. (first printing only) p. 295 (Chapter 10, example of output):
    The text incorrectly describes the ChangeLog entry as showing the simultaneous commit of three files. In fact, there are four files, so the next paragraph of text (right after the ChangLog excerpts) should begin like this:

    'The first entry shows that four files were committed at once, with the log message, "Committing from pcl-cvs 2.9, just for kicks.".'

  11. (first printing only) Copyright notice: The copyright notice at the beginning of the book contains a misprint. Copyright is actually held by Karl Fogel, not The Coriolis Group.
  12. (first printing only) Back cover blurb: No knowledge of Linux C++ development is necessary to understand this book, nor is "practitioner-level knowledge of Linux administration" specifically required, although some knowledge of general Unix administration is helpful.

Back to the Open Source Development With CVS Home Page.