Minor standardization tweak.
Magic-number factoring and a rename for clarity. All regression tests pass.
Document the first-stage data structures.  All regression tests pass.
More internals documentation.
Remove unused code.  A list of removed functions follows...

...just in case some of this logic is ever beeded again.

All regression tests pass.

int
cvs_number_compare_n(cvs_number *a, cvs_number *b, int l)
/* total ordering for CVS revision number prefixes */

bool
cvs_is_branch_of(cvs_number *trunk, cvs_number *branch)
/* is the specified branch rooted at the specified trunk revision */

cvs_number
cvs_previous_rev(cvs_number *n)
/* return the revision previous to a specified one */

cvs_number
cvs_master_rev(cvs_number *n)
/* what is the master branch revision from which the specified one derives? */

cvs_number
cvs_branch_head(cvs_file *f, cvs_number *branch)
/* find the newest revision along a specified branch */

cvs_number
cvs_branch_parent(cvs_file *f, cvs_number *branch)
/* return the parent branch of a specified CVS branch */

void
dump_rev_head(rev_ref *h, FILE *fp)
/* dump all gitspace commits associated with the specified head */

void
dump_rev_list(rev_list *rl, FILE *fp)
/* dump an entire revision list */

void
dump_rev_tree(rev_list *rl, FILE *fp)

static void dump_symbols(char *name, cvs_symbol *symbols)
/* dump a list of symbols and their CVSversion values to standard output */

static void dump_branches(char *name, cvs_branch *branches)
/* dump a list of branches and their CVSversion roots to standard output */

static void dump_versions(char *name, cvs_version *versions)
/* dump metadata of a list of versions to standard output */

static void dump_patches(char *name, cvs_patch *patches)
/* dump metadata of a list of patches to standard output */

static void dump_file(cvs_file *file)
/* dump the patch list of a given file to standard output */

static git_commit *
dump_get_rev_parent(git_commit *c)

static int
strcommon(char *a, char *b)
/* return the length of the common prefix of strings a and b */

static void
rbtree_dump_helper(rbtree_node *node, int level)

static void
rbtree_dump(rbtree_node *root, char* marker)

static int
rev_order_compare(cvs_number *a, cvs_number *b)

bool
rev_file_later(rev_file *af, rev_file *bf)

bool
git_commit_later(git_commit *a, git_commit *b)

static void
git_commit_dump(FILE *f, char *title, git_commit *c, git_commit *m)

static int
rev_ref_len(rev_ref *r)

static rev_ref *
rev_ref_sel(rev_ref *r, int len)

static rev_ref *
rev_ref_sel_sort(rev_ref *r)

static rev_file *
git_commit_find_file(git_commit *c, char *name)

static git_commit *
rev_ref_find_commit_file(rev_ref *branch, rev_file *file)

static bool
git_commit_is_ancestor(git_commit *old, git_commit *young)

static void
rev_head_find_parent(rev_list *rl, rev_ref *h, rev_list *lhead)

static bool
rev_branch_name_is_ancestor(rev_ref *old, rev_ref *young)

static rev_ref *
rev_ref_parent(rev_ref **refs, int nref, rev_list *rl)
More internals documentation.  All regression tests pass.
Add an open question.
Improve some descriptions.