cvs-fast-export-1.35/Makefile0000664000175000017500000001472512624621467014340 0ustar esresr# Makefile for cvs-fast-export # # Build requirements: A C compiler, bison 3.x.x, flex, and asciidoc. # The C compiler must support anonymous unions (GNU, clang, C11). # # If you get a link error complaining that clock_gettime() can't be # found, uncomment the line that includes -lrt in the link flags. # You'll need this if your glibc version is < 2.17; that is for RHEL 6 # or older and Debian Wheezy or older. Alas, we can't unconditionally # include -lrt because Darwin. # # The test suite requires Python 2.6, RCS, and CVS installed. # # You will see some meaningless failures with git 1.7.1 and older. # For documentation, you will need asciidoc, xsltproc and docbook stylesheets. VERSION=1.35 .PATH: $(.PARSEDIR) prefix?=/usr/local target=$(DESTDIR)$(prefix) parsedir:=$(.PARSEDIR) srcdir=$(dir $(abspath $(firstword $(MAKEFILE_LIST))))$(parsedir) VPATH=$(srcdir) INSTALL = install GCC_WARNINGS1=-Wall -Wpointer-arith -Wstrict-prototypes GCC_WARNINGS2=-Wmissing-prototypes -Wmissing-declarations GCC_WARNINGS3=-Wno-unused-function -Wno-unused-label -Wno-format-zero-length GCC_WARNINGS=$(GCC_WARNINGS1) $(GCC_WARNINGS2) $(GCC_WARNINGS3) CFLAGS=$(GCC_WARNINGS) CPPFLAGS += -I. -I$(srcdir) #LIBS=-lrt CPPFLAGS += -DVERSION=\"$(VERSION)\" # Enable this for multithreading. CFLAGS += -pthread CPPFLAGS += -DTHREADS # Optimizing for speed. Comment this out for distribution builds CFLAGS += -march=native # To enable debugging of the Yacc grammar, uncomment the following line #CPPFLAGS += -DYYDEBUG=1 # To enable verbose debugging of the analysis stage, uncomment the following line #CPPFLAGS += -DCVSDEBUG=1 # To enable debugging of blob export, uncomment the following line #CPPFLAGS += -DFDEBUG=1 # To enable assertions of red black trees, uncomment the following line #CPPFLAGS += -DRBDEBUG=1 # To enable debugging of order instability issues #CPPFLAGS += -DORDERDEBUG=1 # To enable debugging of gitspace backlinks, uncomment the following line #CPPFLAGS += -DGITSPACEDEBUG=1 # Condition in various optimization hacks. You almost certainly # don't want to turn any of these off; the condition symbols are # present more as documentation of the program structure than # anything else CPPFLAGS += -DREDBLACK # Use red-black trees for faster symbol lookup CPPFLAGS += -DUSE_MMAP # Use mmap for reading CVS masters CPPFLAGS += -DLINESTATS # Keep track of which lines have @ string delimiters CPPFLAGS += -DTREEPACK # Reduce memory usage, particularly on large repos # First line works for GNU C. # Replace with the next if your compiler doesn't support C99 restrict qualifier CPPFLAGS+=-Drestrict=__restrict__ #CPPFLAGS+=-Drestrict="" # To enable profiling, uncomment the following line # Note: the profiler gets confused if you don't also turn off -O flags. # CFLAGS += -pg CFLAGS += -O3 # If your toolchain supports link time optimization this is a cheap speedup # CFLAGS += -flto # CFLAGS += -g # Test coverage flags # CFLAGS += -ftest-coverage -fprofile-arcs CFLAGS += $(EXTRA_CFLAGS) #YFLAGS= --report=all LFLAGS= OBJS=gram.o lex.o rbtree.o main.o import.o dump.o cvsnumber.o \ cvsutil.o revdir.o revlist.o atom.o revcvs.o generate.o export.o \ nodehash.o tags.o authormap.o graph.o utils.o merge.o hash.o cvs-fast-export: $(OBJS) $(CC) $(CFLAGS) $(TARGET_ARCH) $(OBJS) $(LDFLAGS) $(LIBS) -o $@ $(OBJS): cvs.h cvstypes.h revcvs.o cvsutils.o rbtree.o: rbtree.h atom.o nodehash.o revcvs.o revdir.o: hash.h revdir.o: treepack.c dirpack.c revdir.c dump.o export.o graph.o main.o merge.o revdir.o: revdir.h BISON ?= bison gram.h gram.c: gram.y $(BISON) $(YFLAGS) --defines=gram.h --output-file=gram.c $(srcdir)/gram.y lex.h lex.c: lex.l flex $(LFLAGS) --header-file=lex.h --outfile=lex.c $(srcdir)/lex.l gram.o: gram.c lex.h gram.h import.o: import.c lex.h gram.h lex.o: lex.c gram.h .SUFFIXES: .html .asc .txt .1 # Requires asciidoc and xsltproc/docbook stylesheets. .asc.1: a2x --doctype manpage --format manpage -D . $< .asc.html: a2x --doctype manpage --format xhtml -D . $< rm -f docbook-xsl.css reporting-bugs.html: reporting-bugs.asc asciidoc reporting-bugs.asc man: cvs-fast-export.1 cvssync.1 cvsconvert.1 html: cvs-fast-export.html cvssync.html cvsconvert.html clean: rm -f $(OBJS) gram.h gram.c lex.h lex.c cvs-fast-export rm -f *.1 *.html docbook-xsl.css gram.output gmon.out rm -f MANIFEST index.html *.tar.gz rm -f *.gcno *.gcda check: cvs-fast-export @[ -d tests ] || mkdir tests $(MAKE) -C tests -s -f $(srcdir)tests/Makefile install: install-bin install-man install-bin: cvs-fast-export cvssync cvsconvert $(INSTALL) -d "$(target)/bin" $(INSTALL) $^ "$(target)/bin" install-man: man $(INSTALL) -d "$(target)/share/man/man1" $(INSTALL) -m 644 cvs-fast-export.1 "$(target)/share/man/man1" $(INSTALL) -m 644 cvssync.1 "$(target)/share/man/man1" $(INSTALL) -m 644 cvsconvert.1 "$(target)/share/man/man1" PROFILE_REPO = ~/software/groff-conversion/groff-mirror/groff gmon.out: cvs-fast-export find $(PROFILE_REPO) -name '*,v' | cvs-fast-export -k -p >/dev/null PROFILE: gmon.out gprof cvs-fast-export >PROFILE # Weird suppressions are required because of strange tricks in Bison and Flex. CSUPPRESSIONS = -U__UNUSED__ -UYYPARSE_PARAM -UYYTYPE_INT16 -UYYTYPE_INT8 \ -UYYTYPE_UINT16 -UYYTYPE_UINT8 -UYY_USER_INIT -UYY_READ_BUF_SIZE \ -UYY_NO_INPUT -UECHO -UYY_START_STACK_INCR -UYY_FATAL_ERROR \ -U_SC_NPROCESSORS_ONLN -Ushort -Usize_t -Uyytext_ptr \ -Uyyoverflow -U__cplusplus cppcheck: cppcheck -I. --template gcc --enable=all $(CSUPPRESSIONS) --suppress=unusedStructMember --suppress=unusedFunction --suppress=unreadVariable --suppress=uselessAssignmentPtrArg --suppress=missingIncludeSystem *.[ch] PYLINTOPTS = --rcfile=/dev/null --reports=n \ --msg-template="{path}:{line}: [{msg_id}({symbol}), {obj}] {msg}" \ --dummy-variables-rgx='^_' PYSUPPRESSIONS = --disable="C0103,C0301,C0325,R0912,W0142" pylint: @pylint $(PYLINTOPTS) $(PYSUPPRESSIONS) cvssync cvsconvert cvsreduce # Because we don't want copies of the test repositories in the distribution. distclean: clean cd tests; $(MAKE) --quiet clean SOURCES = Makefile *.[ch] *.[yl] cvssync cvsconvert cvsreduce DOCS = README COPYING NEWS AUTHORS TODO control *.asc cfe-logo.png ALL = $(SOURCES) $(DOCS) tests cvs-fast-export-$(VERSION).tar.gz: $(ALL) tar --transform='s:^:cvs-fast-export-$(VERSION)/:' --show-transformed-names -cvzf cvs-fast-export-$(VERSION).tar.gz $(ALL) dist: distclean cvs-fast-export-$(VERSION).tar.gz release: cvs-fast-export-$(VERSION).tar.gz html shipper version=$(VERSION) | sh -e -x refresh: html shipper -N -w version=$(VERSION) | sh -e -x cvs-fast-export-1.35/atom.c0000664000175000017500000001270712624157452014000 0ustar esresr/* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #include "cvs.h" #include "hash.h" #include #ifdef THREADS #include #endif /* THREADS */ /***************************************************************************** From http://planetmath.org/goodhashtableprimes: In the course of designing a good hashing configuration, it is helpful to have a list of prime numbers for the hash table size. The following is such a list. It has the properties that: 1. each number in the list is prime 2. each number is slightly less than twice the size of the previous 3. each number is as far as possible from the nearest two powers of two Using primes for hash tables is a good idea because it minimizes clustering in the hashed table. Item (2) is nice because it is convenient for growing a hash table in the face of expanding data. Item (3) has, allegedly, been shown to yield especially good results in practice. And here is the list: lwr upr % err prime 2^5 2^6 10.416667 53 2^6 2^7 1.041667 97 2^7 2^8 0.520833 193 2^8 2^9 1.302083 389 2^9 2^10 0.130208 769 2^10 2^11 0.455729 1543 2^11 2^12 0.227865 3079 2^12 2^13 0.113932 6151 2^13 2^14 0.008138 12289 2^14 2^15 0.069173 24593 2^15 2^16 0.010173 49157 2^16 2^17 0.013224 98317 2^17 2^18 0.002543 196613 2^18 2^19 0.006358 393241 2^19 2^20 0.000127 786433 2^20 2^21 0.000318 1572869 2^21 2^22 0.000350 3145739 2^22 2^23 0.000207 6291469 2^23 2^24 0.000040 12582917 2^24 2^25 0.000075 25165843 2^25 2^26 0.000010 50331653 2^26 2^27 0.000023 100663319 2^27 2^28 0.000009 201326611 2^28 2^29 0.000001 402653189 2^29 2^30 0.000011 805306457 2^30 2^31 0.000000 1610612741 The columns are, in order, the lower bounding power of two, the upper bounding power of two, the relative deviation (in percent) of the prime number from the optimal middle of the first two, and finally the prime itself. Happy hashing! *****************************************************************************/ /* * This prime number is scaled to be effective for the NetBSD src * repository, which at around 135K masters is the largest we know of. * The intent is to reduce expected depth of the hash buckets in the * worst case to about 4. Space cost on a 64-bit machine is 8 times * this in bytes. */ #define HASH_SIZE 49157 unsigned int natoms; /* we report this so we can tune the hash properly */ typedef struct _hash_bucket { struct _hash_bucket *next; hash_t hash; char string[0]; } hash_bucket_t; static hash_bucket_t *buckets[HASH_SIZE]; #ifdef THREADS static pthread_mutex_t bucket_mutex = PTHREAD_MUTEX_INITIALIZER; #endif /* THREADS */ const char * atom(const char *string) /* intern a string, avoiding having separate storage for duplicate copies */ { hash_t hash = hash_string(string); hash_bucket_t **head = &buckets[hash % HASH_SIZE]; hash_bucket_t *b; int len; while ((b = *head)) { collision: if (b->hash == hash && !strcmp(string, b->string)) return b->string; head = &(b->next); } #ifdef THREADS if (threads > 1) pthread_mutex_lock(&bucket_mutex); #endif /* THREADS */ if ((b = *head)) { #ifdef THREADS if (threads > 1) pthread_mutex_unlock(&bucket_mutex); #endif /* THREADS */ goto collision; } len = strlen(string); b = xmalloc(sizeof(hash_bucket_t) + len + 1, __func__); b->next = 0; b->hash = hash; memcpy(b->string, string, len + 1); *head = b; natoms++; #ifdef THREADS if (threads > 1) pthread_mutex_unlock(&bucket_mutex); #endif /* THREADS */ return b->string; } typedef struct _number_bucket { struct _number_bucket *next; cvs_number number; } number_bucket_t; #define NUMBER_HASH_SIZE 6151 static number_bucket_t *number_buckets[NUMBER_HASH_SIZE]; #ifdef THREADS static pthread_mutex_t number_bucket_mutex = PTHREAD_MUTEX_INITIALIZER; #endif /* THREADS */ /* * Intern a revision number * netbsd-pkgsrc calls this 42,000,000 times for 22,000 distinct values */ const cvs_number * atom_cvs_number(const cvs_number n) { size_t bucket = hash_cvs_number(&n) % NUMBER_HASH_SIZE; number_bucket_t **head = &number_buckets[bucket]; number_bucket_t *b; while ((b = *head)) { collision: if (cvs_number_equal(&b->number, &n)) return &b->number; head = &(b->next); } #ifdef THREADS if (threads > 1) pthread_mutex_lock(&number_bucket_mutex); #endif /* THREADS */ if ((b = *head)) { #ifdef THREADS if (threads > 1) pthread_mutex_unlock(&number_bucket_mutex); #endif /* THREADS */ goto collision; } b = xmalloc(sizeof(number_bucket_t), __func__); b->next = NULL; memcpy(&b->number, &n, sizeof(cvs_number)); *head = b; #ifdef THREADS if (threads > 1) pthread_mutex_unlock(&number_bucket_mutex); #endif /* THREADS */ return &b->number; } void discard_atoms(void) /* empty all string buckets */ { hash_bucket_t **head, *b; int i; #ifdef THREADS if (threads > 1) pthread_mutex_lock(&bucket_mutex); #endif /* THREADS */ for (i = 0; i < HASH_SIZE; i++) for (head = &buckets[i]; (b = *head);) { *head = b->next; free(b); } #ifdef THREADS if (threads > 1) { pthread_mutex_unlock(&bucket_mutex); /* * This is irreversible, and will have to be factored out if * dicard_atoms() is ever called anywhere but in final cleanup. */ pthread_mutex_destroy(&bucket_mutex); } #endif /* THREADS */ } /* end */ cvs-fast-export-1.35/authormap.c0000664000175000017500000000550512440011740015017 0ustar esresr/* * Manage a map from short CVS-syle names to DVCS-style name/email pairs. */ #include "cvs.h" #include "hash.h" #define AUTHOR_HASH 1021 static cvs_author *author_buckets[AUTHOR_HASH]; static unsigned author_hash(const char *name) { HASH_INIT(h); HASH_MIX(h, name); return h % AUTHOR_HASH; } cvs_author * fullname(const char *name) /* return the fullname structure corresponding to a specified shortname */ { cvs_author **bucket = &author_buckets[author_hash(name)]; cvs_author *a; for (a = *bucket; a; a = a->next) if (a->name == name) return a; return NULL; } void free_author_map(void) /* discard author-map information */ { int h; for (h = 0; h < AUTHOR_HASH; h++) { cvs_author **bucket = &author_buckets[h]; cvs_author *a; while ((a = *bucket)) { *bucket = a->next; free(a); } } } bool load_author_map(const char *filename) /* load author-map information from a file */ { char line[10240]; char *equal; char *angle; char *email; const char *name; char *full; FILE *f; int lineno = 0; cvs_author *a, **bucket; f = fopen(filename, "r"); if (!f) { announce("%s: authormap open failed, %s\n", filename, strerror(errno)); return false; } while (fgets(line, sizeof(line) - 1, f)) { lineno++; if (line[0] == '#') continue; equal = strchr(line, '='); if (!equal) { announce("\"%s\", line %d: missing '='\n", filename, lineno); fclose(f); return false; } full = equal + 1; while (equal > line && equal[-1] == ' ') equal--; *equal = '\0'; name = atom(line); if (fullname(name)) { announce("\"%s\", line %d: duplicate username '%s' ignored\n", filename, lineno, name); fclose(f); return 0; } a = xcalloc(1, sizeof(cvs_author), "authormap creation"); a->name = name; angle = strchr(full, '<'); if (!angle) { announce("\"%s\", line %d: missing email address '%s'\n", filename, lineno, name); fclose(f); free(a); return false; } email = angle + 1; while (full < angle && full[0] == ' ') full++; while (angle > full && angle[-1] == ' ') angle--; *angle = '\0'; a->full = atom(full); angle = strchr(email, '>'); if (!angle) { announce("\"%s\", line %d: malformed email address '%s\n", filename, lineno, name); fclose(f); free(a); return false; } *angle = '\0'; a->email = atom(email); a->timezone = NULL; if (*++angle) { while (isspace((unsigned char)*angle)) angle++; while (*angle != '\0') { char *end = angle + strlen(angle) - 1; if (isspace((unsigned char)*end)) *end = '\0'; else break; } a->timezone = atom(angle); } bucket = &author_buckets[author_hash(name)]; a->next = *bucket; *bucket = a; } fclose(f); return true; } /* end */ cvs-fast-export-1.35/cvs.h0000644000175000017500000004613612624620165013635 0ustar esresr/* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #ifndef _CVS_H_ #define _CVS_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "cvstypes.h" /* * CVS_MAX_BRANCHWIDTH should match the number in the longrev test. * If it goes above 128 some bitfield widths in rev_ref must increase. */ #define CVS_MAX_DIGITS 10 /* max digits in decimal numbers */ #define CVS_MAX_BRANCHWIDTH 10 #define CVS_MAX_DEPTH (2*CVS_MAX_BRANCHWIDTH + 2) #define CVS_MAX_REV_LEN (CVS_MAX_DEPTH * (CVS_MAX_DIGITS + 1)) /* * Structures built by master file parsing begin. */ typedef struct _cvs_number { /* digested form of a CVS revision */ short c; short n[CVS_MAX_DEPTH]; } cvs_number; extern const cvs_number cvs_zero; struct _cvs_version; struct _cvs_patch; typedef struct node { struct node *hash_next; struct _cvs_version *version; struct _cvs_patch *patch; struct _cvs_commit *commit; struct node *next; struct node *to; struct node *down; struct node *sib; const cvs_number *number; flag starts; } node_t; #define NODE_HASH_SIZE 97 typedef struct nodehash { node_t *table[NODE_HASH_SIZE]; int nentries; node_t *head_node; } nodehash_t; typedef struct _cvs_symbol { /* a CVS symbol-to-revision association */ struct _cvs_symbol *next; const char *symbol_name; const cvs_number *number; } cvs_symbol; typedef struct _cvs_branch { /* a CVS branch name */ struct _cvs_branch *next; const cvs_number *number; node_t *node; } cvs_branch; typedef struct _cvs_version { /* metadata of a delta within a CVS file */ struct _cvs_version *next; const char *restrict author; const char *restrict state; const char *restrict commitid; cvs_branch *branches; node_t *node; const cvs_number *restrict number; cvstime_t date; const cvs_number *restrict parent; /* next in ,v file */ flag dead; } cvs_version; typedef struct _cvs_text { /* a reference to a @-encoded text fragment in an rcs file */ const char *filename; size_t length; /* includes terminating '@' */ off_t offset; /* position of initial '@' */ } cvs_text; typedef struct _cvs_patch { /* a CVS patch structure */ struct _cvs_patch *next; const cvs_number *number; const char *log; cvs_text text; node_t *node; } cvs_patch; struct out_buffer_type { char *text, *ptr, *end_of_text; size_t size; }; struct in_buffer_type { unsigned char *buffer; unsigned char *ptr; int read_count; }; #ifdef LINESTATS typedef struct _edit_line { unsigned char *ptr; size_t length; int has_stringdelim; } editline_t; #endif enum expand_mode {EXPANDKKV, /* default form, $: $ */ EXPANDKKVL, /* like KKV but with locker's name inserted */ EXPANDKK, /* keyword-only expansion, $$ */ EXPANDKV, /* value-only expansion, $$ */ EXPANDKO, /* old-value expansion */ EXPANDKB, /* old-value with no EOL normalization */ EXPANDUNSPEC, /* Not specified on command line */ }; typedef struct _editbuffer { const char *Glog; int Gkvlen; char* Gkeyval; char const *Gfilename; char *Gabspath; cvs_version *Gversion; char Gversion_number[CVS_MAX_REV_LEN]; struct out_buffer_type *Goutbuf; struct in_buffer_type in_buffer_store; #ifdef LINESTATS int line_len; /* temporary used for insertline */ int has_stringdelim; #endif enum expand_mode Gexpand; /* * Gline contains pointers to the lines in the current edit buffer * It is a 0-origin array that represents Glinemax-Ggapsize lines. * Gline[0 .. Ggap-1] and Gline[Ggap+Ggapsize .. Glinemax-1] hold * pointers to lines. Gline[Ggap .. Ggap+Ggapsize-1] contains garbage. * Any @s in lines are duplicated. * Lines are terminated by \n, or(for a last partial line only) by single @. */ struct frame { node_t *next_branch; node_t *node; unsigned char *node_text; #ifdef LINESTATS editline_t *line; #else unsigned char **line; #endif size_t gap, gapsize, linemax; } stack[CVS_MAX_DEPTH/2], *current; #ifdef USE_MMAP /* A recently used list of mmapped files */ struct text_map { const char *filename; unsigned char *base; size_t size; } text_map; #endif /* USE_MMAP */ } editbuffer_t; #define Gline(eb) eb->current->line #define Ggap(eb) eb->current->gap #define Ggapsize(eb) eb->current->gapsize #define Glinemax(eb) eb->current->linemax #define Gnode_text(eb) eb->current->node_text #define Ginbuf(eb) (&eb->in_buffer_store) typedef struct _generator { /* isolare parts of a CVS file context required for snapshot generation */ const char *master_name; enum expand_mode expand; cvs_version *versions; cvs_patch *patches; nodehash_t nodehash; editbuffer_t editbuffer; } generator_t; typedef struct { /* this represents the entire metadata content of a CVS master file */ const char *export_name; cvs_symbol *symbols; #ifdef REDBLACK struct rbtree_node *symbols_by_name; #endif /* REDBLACK */ const char *description; generator_t gen; const cvs_number *head; const cvs_number *branch; cvstime_t skew_vulnerable; serial_t nversions; mode_t mode; unsigned short verbose; } cvs_file; typedef struct _master_dir { /* directory reference for a master */ const char *name; const struct _master_dir *parent; } master_dir; typedef struct _rev_master { /* information shared by all revisions of a master */ const char *name; const char *fileop_name; const master_dir *dir; struct _cvs_commit *commits; serial_t ncommits; mode_t mode; } rev_master; /* * Structures built by master file parsing end. */ /* revdir should be considered an opaque type outside of revdir.c, but * we want to take advantage of being able to pack the struct * in a parent struct. Represents a packed list of files. * manipulate using the interface defined in revdir.h */ #ifdef TREEPACK typedef struct _rev_pack rev_pack; typedef struct _revdir { const rev_pack *revpack; } revdir; #else typedef struct _file_list file_list; typedef struct _revdir { /* dirs is slightly misleading, as there may be subdirs in the same entry */ unsigned short ndirs; file_list **dirs; } revdir; #endif /* * Tricky polymorphism hack to reduce working set size for large repos * begins here. * * In Keith's original code, cvs_commit and git_commit were the same struct, * with different semantics at different points in the program's lifetime. * Early, the struct described a CVS revision of one file. Later, it * described a gitspace commit potentially pointing at several files. The * first semantics held for instances created while scanning CVS master files; * the second for those generated by a git_commit_build() call during * global branch merging. * * The problem with this is that some members in the late interpretation * are unused in the earlier one; we want to get rid of as many as possible to * reduce working-set size. So we exploit the fact that all instances are * malloced by splitting the struct into two types. * * Because the rev_ref structure contains a pointer to the early * version, a few casts are needed at points in the code that require * the late-version fields. (This is mainly in export.c and * graph.c). All these casts are marked with PUNNING in the code. * * If the common fields in these structures don't remain in the same order, * bad things will happen. */ typedef struct _cvs_commit { /* a CVS revision */ struct _cvs_commit *parent; const char *restrict log; const char *restrict author; const char *restrict commitid; cvstime_t date; serial_t serial; branchcount_t refcount; unsigned tail:1; unsigned tailed:1; unsigned dead:1; /* CVS-only members begin here */ bool emitted:1; hash_t hash; /* Shortcut to master->dir, more space but less dereferences * in the hottest inner loop in revdir */ const master_dir *dir; const rev_master *master; struct _git_commit *gitspace; const cvs_number *number; } cvs_commit; typedef struct _git_commit { /* a gitspace changeset */ struct _git_commit *parent; const char *restrict log; const char *restrict author; const char *restrict commitid; cvstime_t date; serial_t serial; branchcount_t refcount; unsigned tail:1; unsigned tailed:1; unsigned dead:1; /* gitspace-only members begin here. */ revdir revdir; } git_commit; typedef struct _rev_ref { /* a reference to a branch head */ struct _rev_ref *next; struct _rev_ref *parent; /* link into tree */ cvs_commit *commit; /* or a git_commit in gitspace */ const char *ref_name; const cvs_number *number; /* not used in gitspace */ unsigned depth:7; /* branch depth in tree (1 is trunk) */ unsigned degree:7; /* # of digits in original CVS version */ flag shown:1; /* only used in graph emission */ flag tail:1; } rev_ref; /* Type punning, previously cvs_master and git_repo were rev_lists underneath * now cvs_master is backed by an array. We still have some general * functions that just operate on the heads member, so this lets * us use them from both git and cvs sides. */ typedef struct _head_list { rev_ref *heads; } head_list; typedef struct _rev_list { rev_ref *heads; struct _rev_list *next; } rev_list; /* * These are created only as an attempt to make the code more readable. * The problem they address is that a rev_list pointer can have * different semantics depending on whether code is going to iterate * through its next pointer or its heads, and what stage of the program * we're in. This makes functions with undifferentiated rev_list arguments * hard to read. The convention we use is that a rev_list variable, member * or formal argument can accept any of these, but we try to be more * specific in order to express the domain of a function. */ typedef head_list cvs_master; /* represents a single cvs master */ /* a CVS repo is represented by an array of such */ typedef rev_list git_repo; /* represents a gitspace DAG */ typedef struct _cvs_commit_list { struct _cvs_commit_list *next; cvs_commit *file; } cvs_commit_list; typedef struct _rev_diff { cvs_commit_list *restrict del; cvs_commit_list *restrict add; int ndel; int nadd; } rev_diff; typedef struct _cvs_author { struct _cvs_author *next; const char *name; const char *full; const char *email; const char *timezone; } cvs_author; /* * Use _printflike(M, N) to mark functions that take printf-like formats * and parameter lists. M refers to the format arg, and N refers to * the first variable arg (typically M+1), or N = 0 if the function takes * a va_list. * * If the compiler is GCC version 2.7 or later, this is implemented * using __attribute__((__format__(...))). * * OS X lacks __alloc_size__, */ #if defined(__GNUC__) \ && ((__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)) \ && !defined(__APPLE__) #define _printflike(fmtarg, firstvararg) \ __attribute__((__format__(__printf__, fmtarg, firstvararg))) #define _alloclike(sizearg) \ __attribute__((__alloc_size__(sizearg))) #define _alloclike2(sizearg1, sizearg2) \ __attribute__((__alloc_size__(sizearg1, sizearg2))) #define _malloclike \ __attribute__((__malloc__)) #define _noreturn \ __attribute__((__noreturn__)) #define _pure \ __attribute__((__noreturn__)) #define _alignof(T) __alignof__(T) #else #define _printflike(fmtarg, firstvararg) /* nothing */ #define _alloclike(sizearg) /* nothing */ #define _alloclike2(sizearg1, sizearg2) /* nothing */ #define _malloclike /* nothing */ #define _noreturn /* nothing */ #define _pure /* nothing */ #define _alignof(T) sizeof(long double) #endif #if defined(__APPLE__) /* we mock this in utils.c; the CLOCK_REALTIME value is not used */ typedef int clockid_t; int clock_gettime(clockid_t clock_id, struct timespec *tp); #define CLOCK_REALTIME 0 #endif cvs_author *fullname(const char *); bool load_author_map(const char *); char * cvstime2rfc3339(const cvstime_t date); cvs_number lex_number(const char *); cvstime_t lex_date(const cvs_number *n, void *, cvs_file *cvs); void atom_dir_init(void); cvs_commit * cvs_master_digest(cvs_file *cvs, cvs_master *cm, rev_master *master); git_repo * merge_to_changesets(cvs_master *masters, size_t nmasters, int verbose); enum { Ncommits = 256 }; typedef struct _chunk { struct _chunk *next; cvs_commit *v[Ncommits]; } chunk_t; typedef struct _tag { struct _tag *next; struct _tag *hash_next; const char *name; chunk_t *commits; int count; int left; git_commit *commit; rev_ref *parent; const char *last; } tag_t; typedef struct _forest { int filecount; off_t textsize; int errcount; cvs_master *cvs; git_repo *git; generator_t *generators; cvstime_t skew_vulnerable; unsigned int total_revisions; } forest_t; extern tag_t *all_tags; extern size_t tag_count; extern const master_dir *root_dir; void tag_commit(cvs_commit *c, const char *name, cvs_file *cvsfile); cvs_commit **tagged(tag_t *tag); void discard_tags(void); typedef struct _import_options { bool promiscuous; int verbose; ssize_t striplen; } import_options_t; typedef struct _export_options { struct timespec start_time; enum expand_mode id_token_expand; char *branch_prefix; time_t fromtime; FILE *revision_map; bool reposurgeon; bool embed_ids; bool force_dates; enum {adaptive, fast, canonical} reportmode; bool authorlist; bool progress; } export_options_t; typedef struct _export_stats { long export_total_commits; double snapsize; } export_stats_t; void analyze_masters(int argc, char *argv[0], import_options_t *options, forest_t *forest); enum expand_mode expand_override(char const *s); bool cvs_is_head(const cvs_number *n); bool cvs_same_branch(const cvs_number *a, const cvs_number *b); bool cvs_number_equal(const cvs_number *n1, const cvs_number *n2); int cvs_number_compare(const cvs_number *a, const cvs_number *b); int cvs_number_compare_n(const cvs_number *a, const cvs_number *b, int l); bool cvs_is_branch_of(const cvs_number *trunk, const cvs_number *branch); int cvs_number_degree(const cvs_number *a); const cvs_number cvs_previous_rev(const cvs_number *n); const cvs_number cvs_master_rev(const cvs_number *n); const cvs_number cvs_branch_head(cvs_file *f, const cvs_number *branch); const cvs_number cvs_branch_parent(cvs_file *f, const cvs_number *branch); node_t * cvs_find_version(const cvs_file *cvs, const cvs_number *number); bool cvs_is_trunk(const cvs_number *number); bool cvs_is_vendor(const cvs_number *number); void cvs_file_free(cvs_file *cvs); void generator_free(generator_t *gen); char * cvs_number_string(const cvs_number *n, char *str, size_t maxlen); void dump_ref_name(FILE *f, rev_ref *ref); char * stringify_revision(const char *name, const char *sep, const cvs_number *number, char *buf, size_t bufsz); void dump_number_file(FILE *f, const char *name, const cvs_number *number); void dump_number(const char *name, const cvs_number *number); void dump_log(FILE *f, const char *log); void dump_git_commit(const git_commit *e, FILE *); void dump_rev_head(rev_ref *h, FILE *); void dump_rev_graph(git_repo *rl, const char *title); const char * atom(const char *string); const cvs_number * atom_cvs_number(const cvs_number n); unsigned long hash_cvs_number(const cvs_number *const key); void discard_atoms(void); rev_ref * rev_list_add_head(head_list *rl, cvs_commit *commit, const char *name, int degree); rev_diff * git_commit_diff(git_commit *old, git_commit *new); void rev_diff_free(rev_diff *d); void rev_list_set_tail(head_list *rl); bool rev_list_validate(head_list *rl); int path_deep_compare(const void *a, const void *b); #define time_compare(a,b) ((long)(a) - (long)(b)) void export_commits(forest_t *forest, export_options_t *opts, export_stats_t *stats); void export_authors(forest_t *forest, export_options_t *opts); void free_author_map(void); void generate_files(generator_t *gen, export_options_t *opts, void (*hook)(node_t *node, void *buf, size_t len, export_options_t *popts)); /* xnew(T) allocates aligned (packed) storage. It never returns NULL */ #define xnew(T, legend) \ xnewf(T, 0, legend) /* xnewf(T,x) allocates storage with a flexible array member */ #define xnewf(T, extra, legend) \ (T *)xmemalign(_alignof(T), sizeof(T) + (extra), legend) /* xnewa(T,n) allocates storage for an array of types */ #define xnewa(T, n, legend) \ (T *)xmemalign(_alignof(T), (n) * sizeof(T), legend) #if _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 void* xmemalign(size_t align, size_t size, char const *legend) _alloclike(2) _malloclike; #else # define xmemalign(align, size, legend) xmalloc(size, legend) #endif void* xmalloc(size_t size, char const *legend) _alloclike(1) _malloclike; void* xcalloc(size_t, size_t, char const *legend) _alloclike2(1,2) _malloclike; void* xrealloc(void *ptr, size_t size, char const *legend) _alloclike(2); void announce(char const *format,...) _printflike(1, 2); void warn(char const *format,...) _printflike(1, 2); void debugmsg(char const *format,...) _printflike(1, 2); void fatal_error(char const *format, ...) _printflike(1, 2) _noreturn; void fatal_system_error(char const *format, ...) _printflike(1, 2) _noreturn; void hash_version(nodehash_t *, cvs_version *); void hash_patch(nodehash_t *, cvs_patch *); void hash_branch(nodehash_t *, cvs_branch *); void clean_hash(nodehash_t *); void build_branches(nodehash_t *); void progress_begin(const char * /*msg*/, const int /*max*/); void progress_step(void); void progress_jump(const int /*count*/); void progress_end(const char * /*format*/, ...) _printflike(1, 2); #define NANOSCALE 1000000000.0 #define nanosec(ts) ((ts)->tv_nsec + NANOSCALE * (ts)->tv_sec) #define seconds_diff(a, b) ((nanosec(a) - nanosec(b)) / NANOSCALE) /* Work around glitches in Bison and Flex */ /* FIXME: remove once the Bison bug requiring this is fixed */ #define YY_DECL int yylex \ (YYSTYPE * yylval_param , yyscan_t yyscanner, cvs_file *cvs) /* * Statistics gathering. */ extern unsigned int warncount; extern unsigned int natoms; /* * Global options */ extern bool nowarn; extern int commit_time_window; extern FILE *LOGFILE; extern bool progress; #define STATUS stderr #define NO_MAX -1 #ifdef THREADS extern int threads; #endif /* THREADS */ #endif /* _CVS_H_ */ cvs-fast-export-1.35/cvsnumber.c0000664000175000017500000001030212624157452015031 0ustar esresr/* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #include "cvs.h" #include #define min(a,b) ((a) < (b) ? (a) : (b)) #define max(a,b) ((a) > (b) ? (a) : (b)) const cvs_number cvs_zero = {.c = 0}; bool cvs_is_head(const cvs_number *n) /* is a specified CVS revision the magic name of a branch's sticky tag? */ { assert(n->c <= CVS_MAX_DEPTH); return(n->c > 2 && (n->c & 1) == 0 && n->n[n->c-2] == 0); } bool cvs_same_branch(const cvs_number *a, const cvs_number *b) /* are two specified CVS revisions on the same branch? */ { cvs_number t; int i; int n; if (a->c & 1) { t = *a; t.n[t.c++] = 0; return cvs_same_branch(&t, b); } if (b->c & 1) { t = *b; t.n[t.c++] = 0; return cvs_same_branch(a, &t); } if (a->c != b->c) return false; /* * Everything on x.y is trunk */ if (a->c == 2) return true; n = a->c; for (i = 0; i < n - 1; i++) { int an, bn; an = a->n[i]; bn = b->n[i]; /* * deal with n.m.0.p branch numbering */ if (i == n - 2) { if (an == 0) an = a->n[i+1]; if (bn == 0) bn = b->n[i+1]; } if (an != bn) return false; } return true; } bool cvs_number_equal(const cvs_number *n1, const cvs_number *n2) { /* can use memcmp as cvs_number isn't padded */ return 0 == memcmp(n1, n2, sizeof(short) * (n1->c + 1)); /* if (n1->n != n2->n) return false; unsigned short i; for (i = 0; i < n1->c; i++) if (n1->n[i] != n2->n[i]) return false; return true; */ } int cvs_number_compare(const cvs_number *a, const cvs_number *b) /* total ordering for CVS revision numbers - parent always < child */ { int n = min(a->c, b->c); int i; /* * On the same branch, earlier commits compare before later ones. * On different ranches of the same degree, the earlier one * compares before the later one. * * Note that while it isn't possible to uniquely total-order * an unlabeled tree, the CVS numbers themselves give us the * additional info required; they impose an arrow of creation time * on the nodes. */ for (i = 0; i < n; i++) { if (a->n[i] < b->n[i]) return -1; if (a->n[i] > b->n[i]) return 1; } /* * Branch root commits sort before any commit on their branch. */ if (a->c < b->c) return -1; if (a->c > b->c) return 1; /* * Can happen only if the CVS numbers are equal. */ return 0; } int cvs_number_degree(const cvs_number *n) /* what is the degree of branchiness of the specified revision? */ { cvs_number four; if (n->c < 4) return n->c; four = *n; four.c = 4; /* * Place vendor branch between trunk and other branches */ if (cvs_is_vendor(&four)) return n->c - 1; return n->c; } bool cvs_is_trunk(const cvs_number *number) /* does the specified CVS release number describe a trunk revision? */ { return number->c == 2; } /* * Import branches are of the form 1.1.x where x is odd */ bool cvs_is_vendor(const cvs_number *number) /* is the specified CVS release number on a vendor branch? */ { if (number->c != 4) return 0; if (number->n[0] != 1) return false; if (number->n[1] != 1) return false; if ((number->n[2] & 1) != 1) return false; return true; } char * cvs_number_string(const cvs_number *n, char *str, size_t maxlen) /* return the human-readable representation of a CVS release number */ { char r[CVS_MAX_DIGITS + 1]; int i; str[0] = '\0'; for (i = 0; i < n->c; i++) { snprintf(r, 10, "%d", n->n[i]); if (i > 0) strcat(str, "."); if (strlen(str) + strlen(r) < maxlen -1) strcat(str, r); else fatal_error("revision string too long"); } return str; } char * stringify_revision(const char *name, const char *sep, const cvs_number *number, char *buf, size_t bufsz) /* stringify a revision number */ { if (name != NULL) { if (strlen(name) >= bufsz - strlen(sep) - 1) fatal_error("filename too long"); strncpy(buf, name, bufsz - strlen(sep) - 1); strcat(buf, sep); } if (number) cvs_number_string(number, buf + strlen(buf), bufsz - strlen(buf)); return buf; } /* end */ cvs-fast-export-1.35/cvstypes.h0000664000175000017500000000232512455647040014717 0ustar esresr#ifndef _CVSTYPES_H_ #define _CVSTYPES_H_ /* * Typedefs have been carefully chosen to minimize working set. */ /* * Use instead of bool in frequently used structures to reduce * working-set size. */ typedef char flag; /* * On 64-bit Linux a time_t is 8 bytes. We want to reduce memory * footprint; by storing dates as 32-bit offsets from the beginning of * 1982 (the year RCS was released) we can cover dates all the way to * 2118-02-07T06:28:15 in half that size. If you're still doing * conversions after that you'll just have to change this to a uint64_t. * Yes, the code *does* sanity-check for input dates older than this epoch. */ typedef uint32_t cvstime_t; #define RCS_EPOCH 378691200 /* 1982-01-01T00:00:00 */ #define RCS_OMEGA UINT32_MAX /* 2118-02-07T06:28:15 */ /* * This type must be wide enough to enumerate every CVS revision. * There's a sanity check in the code. */ typedef uint32_t serial_t; #define MAX_SERIAL_T UINT32_MAX /* * This type must be wide enough to count all branches cointaining a commit. * There's a sanity check in the code. */ typedef uint16_t branchcount_t; #define MAX_BRANCHCOUNT_T UINT16_MAX /* Hash values */ typedef uint32_t hash_t; #endif /* _CVSTYPES_H_ */ cvs-fast-export-1.35/cvsutil.c0000664000175000017500000000252112624157451014521 0ustar esresr/* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #include #ifdef REDBLACK #include "rbtree.h" #endif /* REDBLACK */ #include "cvs.h" static void cvs_symbol_free(cvs_symbol *symbol) /* discard all master symbols from this CVS context */ { cvs_symbol *s; while ((s = symbol)) { symbol = s->next; free(s); } } static void cvs_branch_free(cvs_branch *branch) /* discard all master branches from this CVS context */ { cvs_branch *b; while ((b = branch)) { branch = b->next; free(b); } } static void cvs_version_free(cvs_version *version) /* discard all master versions from this CVS context */ { cvs_version *v; while ((v = version)) { version = v->next; cvs_branch_free(v->branches); free(v); } } static void cvs_patch_free(cvs_patch *patch) /* discard all master patches from this CVS context */ { cvs_patch *v; while ((v = patch)) { patch = v->next; free(v); } } void generator_free(generator_t *gen) { cvs_version_free(gen->versions); cvs_patch_free(gen->patches); clean_hash(&gen->nodehash); } void cvs_file_free(cvs_file *cvs) /* discard a file object and its storage */ { cvs_symbol_free(cvs->symbols); #ifdef REDBLACK rbtree_free(cvs->symbols_by_name); #endif /* REDBLACK */ free(cvs); } /* end */ cvs-fast-export-1.35/dirpack.c0000664000175000017500000001511512444373046014450 0ustar esresr/* Simpler method of packing a file list. * Designed to be included in revdir.c */ #define REV_DIR_HASH 393241 struct _file_list { /* a directory containing a collection of file states */ serial_t nfiles; cvs_commit *files[0]; }; typedef struct _file_list_hash { struct _file_list_hash *next; hash_t hash; file_list fl; } file_list_hash; static file_list_hash *buckets[REV_DIR_HASH]; static hash_t hash_files(const cvs_commit *const * const files, const int nfiles) /* hash a file list so we can recognize it cheaply */ { hash_t h = 0; size_t i; /* Combine existing hashes rather than computing new ones */ for (i = 0; i < nfiles; i++) h = HASH_COMBINE(h, files[i]->hash); return h; } static file_list * pack_file_list(const cvs_commit * const * const files, const int nfiles) /* pack a collection of file revisions for space efficiency */ { hash_t hash = hash_files(files, nfiles); file_list_hash **bucket = &buckets[hash % REV_DIR_HASH]; file_list_hash *h; /* avoid packing a file list if we've done it before */ for (h = *bucket; h; h = h->next) { if (h->hash == hash && h->fl.nfiles == nfiles && !memcmp(files, h->fl.files, nfiles * sizeof(cvs_commit *))) { return &h->fl; } } h = xmalloc(sizeof(file_list_hash) + nfiles * sizeof(cvs_commit *), __func__); h->next = *bucket; *bucket = h; h->hash = hash; h->fl.nfiles = nfiles; memcpy(h->fl.files, files, nfiles * sizeof(cvs_commit *)); return &h->fl; } static size_t sdirs = 0; static file_list **dirs = NULL; static void fl_put(const size_t index, file_list *fl) /* puts an entry into the dirs buffer, growing if needed */ { if (sdirs == 0) { sdirs = 128; dirs = xmalloc(sdirs * sizeof(file_list *), __func__); } else if (sdirs <= index) { do { sdirs *= 2; } while (sdirs <= index); dirs = xrealloc(dirs, sdirs * sizeof(revdir *), __func__); } dirs[index] = fl; } void revdir_free(void) { size_t i; for (i = 0; i < REV_DIR_HASH; i++) { file_list_hash **bucket = &buckets[i]; file_list_hash *h; while ((h = *bucket)) { *bucket = h->next; free(h); } } } void revdir_free_bufs(void) { if (dirs) { free(dirs); dirs = NULL; sdirs = 0; } } struct _revdir_iter { file_list * const *dir; file_list * const *dirmax; cvs_commit **file; cvs_commit **filemax; } file_iter; /* Iterator interface */ cvs_commit * revdir_iter_next(revdir_iter *it) { if (it->dir == it->dirmax) return NULL; again: if (it->file != it->filemax) return *it->file++; ++it->dir; if (it->dir == it->dirmax) return NULL; it->file = (*it->dir)->files; it->filemax = it->file + (*it->dir)->nfiles; goto again; } cvs_commit * revdir_iter_next_dir(revdir_iter *it) { again: ++it->dir; if (it->dir >= it->dirmax) return NULL; it->file = (*it->dir)->files; it->filemax = it->file + (*it->dir)->nfiles; if (it->file != it->filemax) return *it->file++; goto again; } void revdir_iter_start(revdir_iter *it, const revdir *revdir) { it->dir = revdir->dirs; it->dirmax = revdir->dirs + revdir->ndirs; if (it->dir != it->dirmax) { it->file = (*it->dir)->files; it->filemax = it->file + (*it->dir)->nfiles; } else { it->file = it->filemax = NULL; } } bool revdir_iter_same_dir(const revdir_iter *it1, const revdir_iter *it2) { return *it1->dir == *it2->dir; } revdir_iter * revdir_iter_alloc(const revdir *revdir) { revdir_iter *it = xmalloc(sizeof(revdir_iter), __func__); revdir_iter_start(it, revdir); return it; } serial_t revdir_nfiles(const revdir *revdir) { serial_t c = 0, i; for (i = 0; i < revdir->ndirs; i++) c += revdir->dirs[i]->nfiles; return c; } static serial_t nfiles = 0; static serial_t sfiles = 0; static const cvs_commit **files = NULL; static const master_dir *dir; static const master_dir *curdir; static unsigned short ndirs; void revdir_pack_alloc(const size_t max_size) { if (!files) { files = xmalloc(max_size * sizeof(cvs_commit *), __func__); sfiles = max_size; } else if (sfiles < max_size) { files = xrealloc(files, max_size * sizeof(cvs_commit *), __func__); sfiles = max_size; } } void revdir_pack_init(void) { nfiles = 0; curdir = NULL; dir = NULL; ndirs = 0; } void revdir_pack_add(const cvs_commit *file, const master_dir *in_dir) { if (curdir != in_dir) { if (!dir_is_ancestor(in_dir, dir)) { if (nfiles > 0) { file_list *fl = pack_file_list(files, nfiles); fl_put(ndirs++, fl); nfiles = 0; } dir = in_dir; } curdir = in_dir; } files[nfiles++] = file; } void revdir_pack_end(revdir *revdir) { if (dir) { file_list *fl = pack_file_list(files, nfiles); fl_put(ndirs++, fl); } revdir->dirs = xmalloc(ndirs * sizeof(file_list *), __func__); revdir->ndirs = ndirs; memcpy(revdir->dirs, dirs, ndirs * sizeof(file_list *)); } void revdir_pack_free() { free(files); files = NULL; nfiles = 0; sfiles = 0; } void revdir_pack_files(const cvs_commit ** files, const size_t nfiles, revdir *revdir) { size_t start = 0, i; const master_dir *curdir = NULL, *dir = NULL; file_list *fl; unsigned short ndirs = 0; #ifdef ORDERDEBUG fputs("Packing:\n", stderr); { cvs_commit **s; for (s = files; s < files + nfiles; s++) fprintf(stderr, "cvs_commit: %s\n", (*s)->master->name); } #endif /* ORDERDEBUG */ /* * We want the files in directory-path order so we get the longest * possible runs of common directory prefixes, and thus maximum * space-saving effect out of the next step. This reduces * working-set size at the expense of the sort runtime. * * That used to be done with a qsort(3) call here, but sorting the * masters at the input stage causes them to come out in the right * order here, without multiple additional sorts. */ /* pull out directories */ for (i = 0; i < nfiles; i++) { /* avoid strncmp as much as possible */ if (curdir != files[i]->dir) { if (!dir_is_ancestor(files[i]->dir, dir)) { if (i > start) { fl = pack_file_list(files + start, i - start); fl_put(ndirs++, fl); start = i; } dir = files[i]->dir; } curdir = files[i]->dir; } } if (dir) { fl = pack_file_list(files + start, nfiles - start); fl_put(ndirs++, fl); } revdir->dirs = xmalloc(ndirs * sizeof(file_list *), "rev_dir"); revdir->ndirs = ndirs; memcpy(revdir->dirs, dirs, ndirs * sizeof(file_list *)); } cvs-fast-export-1.35/dump.c0000664000175000017500000000205112624157452013774 0ustar esresr/* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ /* * Dump functions for graphing and debug instrumentation. */ #include "cvs.h" #include #ifdef ORDERDEBUG #include "revdir.h" #endif /*ORDERDEBUG */ void dump_number_file(FILE *f, const char *name, const cvs_number *number) /* dump a filename/CVS-version pair to a specified file pointer */ { char buf[BUFSIZ]; fputs(stringify_revision(name, " ", number, buf, sizeof buf), f); } void dump_number(const char *name, const cvs_number *number) /* dump a filename/CVS-version pair to standard output */ { dump_number_file(stdout, name, number); } #ifdef ORDERDEBUG void dump_git_commit(const git_commit *c, FILE *fp) /* dump all delta/revision pairs associated with a gitspace commit */ { cvs_commit *cc; revdir_iter *it = revdir_iter_alloc(&c->revdir); while((cc = revdir_iter_next(it))) { dump_number_file(fp, cc->master->name, cc->number); printf(" "); } fputs("\n", fp); } #endif /* ORDERDEBUG */ /* end */ cvs-fast-export-1.35/export.c0000664000175000017500000006236512624157452014366 0ustar esresr/* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #define _XOPEN_SOURCE 700 #define _BSD_SOURCE #include #include #include #include #include #include #include "cvs.h" #include "revdir.h" /* * If a program has ever invoked pthreads, the GNU C library does extra * checking during stdio operations even if the program no longer has * active subthreads. Foil this with a GNU extension. Doing this nearly * doubled throughput on the benchmark repositories. * * The unlocked_stdio(3) manual pages claim that fputs_unlocked) and * fclose_unlocked exist, but they don't actually seem to. */ #ifdef __GLIBC__ #define fread fread_unlocked #define fwrite fwrite_unlocked #define putchar putchar_unlocked #define fputc fputc_unlocked #define feof feof_unlocked #endif /* __GLIBC__ */ /* * Below this byte-volume threshold, default to canonical order. * Above it, default to fast. Note that this is total volume of * the CVS masters - it would be better to use total snapshot volume * but we don't have that at the time the check is done. This threshold is * mainly present for backward compatibility and is somewhat arbitrary. */ #define SMALL_REPOSITORY 1000000 /* * This code is somewhat complex because the natural order of operations * generated by the file-traversal operations in the rest of the code is * not even remotely like the canonical order generated by git-fast-export. * We want to emulate the latter in order to make regression-testing and * comparisons with other tools as easy as possible. */ static serial_t *markmap; static serial_t mark; static volatile int seqno; static char blobdir[PATH_MAX]; static export_stats_t export_stats; static int seqno_next(void) /* Returns next sequence number, starting with 1 */ { ++seqno; if (seqno >= MAX_SERIAL_T) fatal_error("snapshot sequence number too large, widen serial_t"); return seqno; } /* * GNU CVS default ignores. We omit from this things that CVS ignores * by default but which are highly unlikely to turn up outside an * actual CVS repository and should be conspicuous if they do: RCS * SCCS CVS CVS.adm RCSLOG cvslog.* */ #define CVS_IGNORES "# CVS default ignores begin\ntags\nTAGS\n.make.state\n.nse_depinfo\n*~\n#*\n.#*\n,*\n_$*\n*$\n*.old\n*.bak\n*.BAK\n*.orig\n*.rej\n.del-*\n*.a\n*.olb\n*.o\n*.obj\n*.so\n*.exe\n*.Z\n*.elc\n*.ln\ncore\n# CVS default ignores end\n" static char *blobfile(const char *basename, const int serial, const bool create, char *path) /* Random-access location of the blob corresponding to the specified serial */ { int m; #ifdef FDEBUG (void)fprintf(stderr, "-> blobfile(%d, %d)...\n", serial, create); #endif /* FDEBUG */ (void)snprintf(path, PATH_MAX, "%s", blobdir); /* * FANOUT should be chosen to be the largest directory size that does not * cause slow secondary allocations. It's something near 256 on ext4 * (we think...) */ #define FANOUT 256 for (m = serial;;) { int digit = m % FANOUT; if ((m = (m - digit) / FANOUT) == 0) { (void)snprintf(path + strlen(path), PATH_MAX - strlen(path), "/=%x", digit); #ifdef FDEBUG (void)fprintf(stderr, "path: %s\n", path); #endif /* FDEBUG */ break; } else { (void)snprintf(path + strlen(path), PATH_MAX - strlen(path), "/%x", digit); /* coverity[toctou] */ #ifdef FDEBUG (void)fprintf(stderr, "directory: %s\n", path); #endif /* FDEBUG */ if (create && access(path, R_OK) != 0) { #ifdef FDEBUG (void)fprintf(stderr, "directory: %s\n", path); #endif /* FDEBUG */ errno = 0; if (mkdir(path,S_IRWXU | S_IRWXG) != 0 && errno != EEXIST) fatal_error("blob subdir creation of %s failed: %s (%d)\n", path, strerror(errno), errno); } } } #undef FANOUT #ifdef FDEBUG (void)fprintf(stderr, "<- ...returned path for %s %d = %s\n", basename, serial, path); #endif /* FDEBUG */ return path; } static void export_blob(node_t *node, void *buf, const size_t len, export_options_t *opts) /* output the blob, or save where it will be available for random access */ { size_t extralen = 0; export_stats.snapsize += len; if (strcmp(node->commit->master->name, ".cvsignore") == 0) { extralen = sizeof(CVS_IGNORES) - 1; } node->commit->serial = seqno_next(); if (opts->reportmode == fast) { markmap[node->commit->serial] = ++mark; printf("blob\nmark :%d\n", mark); fprintf(stdout, "data %zd\n", len + extralen); if (extralen > 0) fwrite(CVS_IGNORES, extralen, sizeof(char), stdout); fwrite(buf, len, sizeof(char), stdout); fputc('\n', stdout); } else { FILE *wfp; char path[PATH_MAX]; blobfile(node->commit->master->name, node->commit->serial, true, path); wfp = fopen(path, "w"); if (wfp == NULL) fatal_error("blobfile open of %s: %s (%d)", path, strerror(errno), errno); fprintf(wfp, "data %zd\n", len + extralen); if (extralen > 0) fwrite(CVS_IGNORES, extralen, sizeof(char), wfp); fwrite(buf, len, sizeof(char), wfp); fputc('\n', wfp); (void)fclose(wfp); } } static int unlink_cb(const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf) { int rv = remove(fpath); if (rv) perror(fpath); return rv; } static void cleanup(const export_options_t *opts) { if (opts->reportmode == canonical) nftw(blobdir, unlink_cb, 64, FTW_DEPTH | FTW_PHYS); } static const char *utc_offset_timestamp(const time_t *timep, const char *tz) { static char outbuf[BUFSIZ]; struct tm *tm; char tzbuf[BUFSIZ]; /* coverity[tainted_string_return_content] */ char *oldtz = getenv("TZ"); // make a copy in case original is clobbered if (oldtz != NULL) strncpy(tzbuf, oldtz, sizeof(tzbuf)-1); setenv("TZ", tz, 1); tzset(); // just in case ... tm = localtime(timep); #ifndef __CYGWIN__ strftime(outbuf, sizeof(outbuf), "%s %z", tm); #else // Cygdwin doesn't have %s for strftime int x = sprintf(outbuf, "%li", *timep); strftime(outbuf + x, sizeof(outbuf) - x, " %z", tm); #endif if (oldtz != NULL) setenv("TZ", tzbuf, 1); else unsetenv("TZ"); tzset(); return outbuf; } struct fileop { char op; mode_t mode; cvs_commit *rev; const char *path; }; /* * The magic number 100000 avoids generating forced UTC times that might be * negative in some timezone, while producing a sequence easy to read. */ #define display_date(c, m, f) (f ? (100000 + (m) * commit_time_window * 2) : ((c)->date + RCS_EPOCH)) #ifdef ORDERDEBUG static void dump_file(const cvs_commit *cvs_commit, FILE *fp) { char buf[CVS_MAX_REV_LEN + 1]; fprintf(fp, " file name: %s %s\n", cvs_commit->master->name, cvs_number_string(cvs_commit->number, buf, sizeof(buf))); } static void dump_commit(const git_commit *commit, FILE *fp) { revdir_iter *it = revdir_iter_alloc(&commit->revdir); cvs_commit *c; fprintf(fp, "commit %p seq %d mark %d nfiles: %d\n", commit, commit->serial, markmap[commit->serial], revdir_nfiles(&commit->revdir)); while ((c = revdir_iter_next(it))) dump_file(c, fp); } #endif /* ORDERDEBUG */ static struct fileop * next_op_slot(struct fileop **operations, struct fileop *op, int *noperations) /* move to next operations slot, expand if necessary */ { #define OP_CHUNK 32 if (++op == (*operations) + (*noperations)) { (*noperations) += OP_CHUNK; *operations = xrealloc(*operations, sizeof(struct fileop) * (*noperations), __func__); // realloc can move operations op = (*operations) + (*noperations) - OP_CHUNK; } return op; } static void build_modify_op(cvs_commit *c, struct fileop *op) /* fill out a modify fileop from a cvs commit */ { op->rev = c; op->path = c->master->fileop_name; op->op = 'M'; if (c->master->mode & 0100) op->mode = 0755; else op->mode = 0644; } static void append_revpair(cvs_commit *c, const export_options_t *opts, char **revpairs, size_t *revpairsize) /* append file information if requested */ { if (opts->revision_map || opts->reposurgeon || opts->embed_ids) { char fr[BUFSIZ]; int xtr = opts->embed_ids ? 10 : 2; stringify_revision(c->master->name, " ", c->number, fr, sizeof fr); if (strlen(*revpairs) + strlen(fr) + xtr > *revpairsize) { *revpairsize *= 2; *revpairs = xrealloc(*revpairs, *revpairsize, "revpair allocation"); } if (opts->embed_ids) strcat(*revpairs, "CVS-ID: "); strcat(*revpairs, fr); strcat(*revpairs, "\n"); } } static revdir_iter *commit_iter = NULL; static revdir_iter *parent_iter = NULL; static void build_delete_op(cvs_commit *c, struct fileop *op) { op->op = 'D'; op->path = c->master->fileop_name; } static void export_commit(git_commit *commit, const char *branch, const bool report, const export_options_t *opts) /* export a commit and the blobs it is the first to reference */ { const git_commit *parent = commit->parent; cvs_commit *cc; cvs_author *author; const char *full; const char *email; const char *timezone; char *revpairs = NULL; size_t revpairsize = 0; time_t ct; struct fileop *operations, *op, *op2; int noperations; serial_t here; static const char *s_gitignore; if (!s_gitignore) s_gitignore = atom(".gitignore"); if (opts->reposurgeon || opts->revision_map || opts->embed_ids) { revpairs = xmalloc((revpairsize = 1024), "revpair allocation"); revpairs[0] = '\0'; } noperations = OP_CHUNK; op = operations = xmalloc(sizeof(struct fileop) * noperations, "fileop allocation"); /* Perform a merge join between files in commit and files in parent commit * to determine modified (including new) and deleted files between commits. * This works because files are sorted by path_deep_compare order * The merge join also preseves this order, removing the need to sort * operations once generated. */ REVDIR_ITER_START(commit_iter, &commit->revdir); cc = revdir_iter_next(commit_iter); if (parent) { REVDIR_ITER_START(parent_iter, &parent->revdir); cvs_commit *pc = revdir_iter_next(parent_iter); while (cc && pc) { /* If we're in the same packed directory then skip it */ if (revdir_iter_same_dir(commit_iter, parent_iter)) { pc = revdir_iter_next_dir(parent_iter); cc = revdir_iter_next_dir(commit_iter); continue; } if (cc == pc) { /* Child and parent the same, skip. Do this check second * as we have already accessed cc and pc, so they'll be hot * plus, it's a common case. */ pc = revdir_iter_next(parent_iter); cc = revdir_iter_next(commit_iter); continue; } if (pc->master == cc->master) { /* file exists in commit and parent, but different revisions, modify op */ build_modify_op(cc, op); append_revpair(cc, opts, &revpairs, &revpairsize); op = next_op_slot(&operations, op, &noperations); pc = revdir_iter_next(parent_iter); cc = revdir_iter_next(commit_iter); continue; } /* masters are sorted in fileop order */ if (pc->master < cc->master) { /* parent but no child, delete op */ build_delete_op(pc, op); op = next_op_slot(&operations, op, &noperations); pc = revdir_iter_next(parent_iter); } else { /* child but no parent, modify op */ build_modify_op(cc, op); append_revpair(cc, opts, &revpairs, &revpairsize); op = next_op_slot(&operations, op, &noperations); cc = revdir_iter_next(commit_iter); } } for (; pc; pc = revdir_iter_next(parent_iter)) { /* parent but no child, delete op */ build_delete_op(pc, op); op = next_op_slot(&operations, op, &noperations); } } for (; cc; cc = revdir_iter_next(commit_iter)) { /* child but no parent, modify op */ build_modify_op(cc, op); append_revpair(cc, opts, &revpairs, &revpairsize); op = next_op_slot(&operations, op, &noperations); } for (op2 = operations; op2 < op; op2++) { if (op2->op == 'M' && !op2->rev->emitted) { if (opts->reportmode == canonical) markmap[op2->rev->serial] = ++mark; if (report && opts->reportmode == canonical) { char path[PATH_MAX]; char *fn = blobfile(op2->path, op2->rev->serial, false, path); FILE *rfp = fopen(fn, "r"); if (rfp) { char buf[BUFSIZ]; printf("blob\nmark :%d\n", mark); while (!feof(rfp)) { size_t len = fread(buf, 1, sizeof(buf), rfp); (void)fwrite(buf, 1, len, stdout); } (void) unlink(fn); op2->rev->emitted = true; (void)fclose(rfp); } } } } author = fullname(commit->author); if (!author) { full = commit->author; email = commit->author; timezone = "UTC"; } else { full = author->full; email = author->email; timezone = author->timezone ? author->timezone : "UTC"; } if (report) printf("commit %s%s\n", opts->branch_prefix, branch); commit->serial = ++seqno; here = markmap[commit->serial] = ++mark; #ifdef ORDERDEBUG2 /* can't move before mark is updated */ dump_commit(commit, stderr); #endif /* ORDERDEBUG2 */ if (report) printf("mark :%d\n", mark); if (report) { static bool need_ignores = true; const char *ts; ct = display_date(commit, mark, opts->force_dates); ts = utc_offset_timestamp(&ct, timezone); //printf("author %s <%s> %s\n", full, email, ts); printf("committer %s <%s> %s\n", full, email, ts); if (!opts->embed_ids) printf("data %zd\n%s\n", strlen(commit->log), commit->log); else printf("data %zd\n%s\n%s\n", strlen(commit->log) + strlen(revpairs) + 1, commit->log, revpairs); if (commit->parent) { if (markmap[commit->parent->serial] > 0) printf("from :%d\n", markmap[commit->parent->serial]); else { cleanup(opts); fatal_error("child commit emitted before parent exists"); } } for (op2 = operations; op2 < op; op2++) { assert(op2->op == 'M' || op2->op == 'D'); if (op2->op == 'M') printf("M 100%o :%d %s\n", op2->mode, markmap[op2->rev->serial], op2->path); if (op2->op == 'D') printf("D %s\n", op2->path); /* * If there's a .gitignore in the first commit, don't generate one. * export_blob() will already have prepended them. */ if (need_ignores && op2->path == s_gitignore) need_ignores = false; } if (need_ignores) { need_ignores = false; printf("M 100644 inline .gitignore\ndata %zd\n%s\n", sizeof(CVS_IGNORES)-1, CVS_IGNORES); } if (revpairs != NULL && strlen(revpairs) > 0) { if (opts->revision_map) { char *cp; for (cp = revpairs; *cp; cp++) { if (*cp == '\n') fprintf(opts->revision_map, " :%d", here); fputc(*cp, opts->revision_map); } } if (opts->reposurgeon) { if (report) printf("property cvs-revision %zd %s", strlen(revpairs), revpairs); } } } free(revpairs); free(operations); if (report) printf("\n"); #undef OP_CHUNK } static int export_ncommit(const git_repo *rl) /* return a count of converted commits */ { rev_ref *h; git_commit *c; int n = 0; for (h = rl->heads; h; h = h->next) { if (h->tail) continue; /* PUNNING: see the big comment in cvs.h */ for (c = (git_commit *)h->commit; c; c = c->parent) { n++; if (c->tail) break; } } return n; } struct commit_seq { git_commit *commit; rev_ref *head; bool realized; }; static int compare_commit(const git_commit *ac, const git_commit *bc) /* attempt the mathematically impossible total ordering on the DAG */ { time_t timediff; int cmp; timediff = ac->date - bc->date; if (timediff != 0) return timediff; timediff = ac->date - bc->date; if (timediff != 0) return timediff; if (bc == ac->parent || (ac->parent != NULL && bc == ac->parent->parent)) return 1; if (ac == bc->parent || (bc->parent != NULL && ac == bc->parent->parent)) return -1; /* * Any remaining tiebreakers would be essentially arbitrary, * inserted just to have as few cases where the threaded scheduler * is random as posssible. */ cmp = strcmp(ac->author, bc->author); if (cmp != 0) return cmp; cmp = strcmp(ac->log, bc->log); if (cmp != 0) return cmp; return 0; } static int sort_by_date(const void *ap, const void *bp) /* return > 0 if ap newer than bp, < 0 if bp newer than ap */ { git_commit *ac = ((struct commit_seq *)ap)->commit; git_commit *bc = ((struct commit_seq *)bp)->commit; /* older parents drag tied commits back in time (in effect) */ for (;;) { int cmp; if (ac == bc) return 0; cmp = compare_commit(ac, bc); if (cmp != 0) return cmp; if (ac->parent != NULL && bc->parent != NULL) { ac = ac->parent; bc = bc->parent; continue; } return 0; } } static struct commit_seq *canonicalize(git_repo *rl) /* copy/sort merged commits into git-fast-export order */ { /* * Dump in canonical (strict git-fast-export) order. * * Commits are in reverse order on per-branch lists. The branches * have to ship in their current order, otherwise some marks may not * be resolved. * * Dump them all into a common array because (a) we're going to * need to ship them back to front, and (b) we'd prefer to ship * them in canonical order by commit date rather than ordered by * branches. * * But there's a hitch; the branches themselves need to be dumped * in forward order, otherwise not all ancestor marks will be defined. * Since the branch commits need to be dumped in reverse, the easiest * way to arrange this is to reverse the branches in the array, fill * the array in forward order, and dump it forward order. */ struct commit_seq *history; int n; int branchbase; rev_ref *h; git_commit *c; history = (struct commit_seq *)xcalloc(export_stats.export_total_commits, sizeof(struct commit_seq), "export"); #ifdef ORDERDEBUG fputs("Export phase 1:\n", stderr); #endif /* ORDERDEBUG */ branchbase = 0; for (h = rl->heads; h; h = h->next) { if (!h->tail) { int i = 0, branchlength = 0; /* PUNNING: see the big comment in cvs.h */ for (c = (git_commit *)h->commit; c; c = (c->tail ? NULL : c->parent)) branchlength++; /* PUNNING: see the big comment in cvs.h */ for (c = (git_commit *)h->commit; c; c = (c->tail ? NULL : c->parent)) { /* copy commits in reverse order into this branch's span */ n = branchbase + branchlength - (i + 1); history[n].commit = c; history[n].head = h; i++; #ifdef ORDERDEBUG fprintf(stderr, "At n = %d, i = %d\n", n, i); dump_commit(c, stderr); #endif /* ORDERDEBUG */ } branchbase += branchlength; } } return history; } void export_authors(forest_t *forest, export_options_t *opts) /* dump a list of author IDs in the repository */ { const char **authors; int i, nauthors = 0; size_t alloc; authors = NULL; alloc = 0; export_stats.export_total_commits = export_ncommit(forest->git); struct commit_seq *hp, *history = canonicalize(forest->git); progress_begin("Finding authors...", NO_MAX); for (hp = history; hp < history + export_stats.export_total_commits; hp++) { for (i = 0; i < nauthors; i++) { if (authors[i] == hp->commit->author) goto duplicate; } if (nauthors >= alloc) { alloc += 1024; authors = xrealloc(authors, sizeof(char*) * alloc, "author list"); } authors[nauthors++] = hp->commit->author; duplicate:; } progress_end("done"); for (i = 0; i < nauthors; i++) printf("%s\n", authors[i]); free(authors); free(history); } void export_commits(forest_t *forest, export_options_t *opts, export_stats_t *stats) /* export a revision list as a git fast-import stream */ { rev_ref *h; tag_t *t; git_commit *c; git_repo *rl = forest->git; generator_t *gp; int recount = 0; if (opts->reportmode == adaptive) { if (forest->textsize <= SMALL_REPOSITORY) opts->reportmode = canonical; else opts->reportmode = fast; } if (opts->reportmode == canonical) { char *tmp = getenv("TMPDIR"); if (tmp == NULL) tmp = "/tmp"; seqno = mark = 0; snprintf(blobdir, sizeof(blobdir), "%s/cvs-fast-export-XXXXXX", tmp); if (mkdtemp(blobdir) == NULL) fatal_error("temp dir creation failed\n"); } /* an attempt to optimize output throughput */ setvbuf(stdout, NULL, _IOFBF, BUFSIZ); export_stats.export_total_commits = export_ncommit(rl); /* the +1 is because mark indices are 1-origin, slot 0 always empty */ markmap = (serial_t *)xcalloc(sizeof(serial_t), forest->total_revisions + export_stats.export_total_commits + 1, "markmap allocation"); /* export_blob() touches markmap when in fast mode */ progress_begin("Generating snapshots...", forest->filecount); for (gp = forest->generators; gp < forest->generators + forest->filecount; gp++) { generate_files(gp, opts, export_blob); generator_free(gp); progress_jump(++recount); } progress_end("done"); if (progress) { static char msgbuf[100]; snprintf(msgbuf, sizeof(msgbuf), "Saving in %s order: ", opts->reportmode == fast ? "fast" : "canonical"); progress_begin(msgbuf, export_stats.export_total_commits); } if (opts->reposurgeon) fputs("#reposurgeon sourcetype cvs\n", stdout); if (opts->reportmode == fast) { /* * Dump by branch order, not by commit date. Slightly faster * and less memory-intensive, but it's not git-fast-export * canonical form and cannot be directly compared to the * output of other tools. */ git_commit **history; int alloc, i; int n; for (h = rl->heads; h; h = h->next) { if (!h->tail) { // We need to export commits in reverse order; so // first of all, we convert the linked-list given by // h->commit into the array "history". history = NULL; alloc = 0; /* PUNNING: see the big comment in cvs.h */ for (c=(git_commit *)h->commit, n=0; c; c=(c->tail ? NULL : c->parent), n++) { if (n >= alloc) { alloc += 1024; history = (git_commit **)xrealloc(history, alloc *sizeof(git_commit *), "export"); } history[n] = c; } /* * Now walk the history array in reverse order and export the * commits, along with any matching tags. */ for (i=n-1; i>=0; i--) { git_commit *gc = history[i]; if (opts->fromtime >= gc->date) continue; if (gc->parent != NULL && display_date(gc->parent, markmap[gc->parent->serial], opts->force_dates) < opts->fromtime) (void)printf("from %s%s^0\n\n", opts->branch_prefix, h->ref_name); export_commit(gc, h->ref_name, true, opts); progress_step(); for (t = all_tags; t; t = t->next) if (t->commit == gc && display_date(gc, markmap[gc->serial], opts->force_dates) > opts->fromtime) printf("reset refs/tags/%s\nfrom :%d\n\n", t->name, markmap[gc->serial]); } free(history); } } } else { struct commit_seq *history, *hp; bool sortable; history = canonicalize(rl); #ifdef ORDERDEBUG2 fputs("Export phase 2:\n", stderr); for (hp = history; hp < history + export_stats.export_total_commits; hp++) dump_commit(hp->commit, stderr); #endif /* ORDERDEBUG2 */ /* * Check that the topo order is consistent with time order. * If so, we can sort commits by date without worrying that * we'll try to ship a mark before it's defined. */ sortable = true; for (hp = history; hp < history + export_stats.export_total_commits; hp++) { if (hp->commit->parent && hp->commit->parent->date > hp->commit->date) { sortable = false; announce("some parent commits are younger than children.\n"); break; } } if (sortable) qsort((void *)history, export_stats.export_total_commits, sizeof(struct commit_seq), sort_by_date); #ifdef ORDERDEBUG2 fputs("Export phase 3:\n", stderr); #endif /* ORDERDEBUG2 */ for (hp = history; hp < history + export_stats.export_total_commits; hp++) { bool report = true; if (opts->fromtime > 0) { if (opts->fromtime >= display_date(hp->commit, mark+1, opts->force_dates)) { report = false; } else if (!hp->realized) { struct commit_seq *lp; if (hp->commit->parent != NULL && display_date(hp->commit->parent, markmap[hp->commit->parent->serial], opts->force_dates) < opts->fromtime) (void)printf("from %s%s^0\n\n", opts->branch_prefix, hp->head->ref_name); for (lp = hp; lp < history + export_stats.export_total_commits; lp++) { if (lp->head == hp->head) { lp->realized = true; } } } } progress_jump(hp - history); export_commit(hp->commit, hp->head->ref_name, report, opts); for (t = all_tags; t; t = t->next) if (t->commit == hp->commit && display_date(hp->commit, markmap[hp->commit->serial], opts->force_dates) > opts->fromtime) printf("reset refs/tags/%s\nfrom :%d\n\n", t->name, markmap[hp->commit->serial]); } free(history); } for (h = rl->heads; h; h = h->next) { if (display_date(h->commit, markmap[h->commit->serial], opts->force_dates) > opts->fromtime) printf("reset %s%s\nfrom :%d\n\n", opts->branch_prefix, h->ref_name, markmap[h->commit->serial]); } free(markmap); progress_end("done"); fputs("done\n", stdout); cleanup(opts); if (forest->skew_vulnerable > 0 && forest->filecount > 1 && !opts->force_dates) { time_t udate = forest->skew_vulnerable; warn("no commitids before %s.\n", cvstime2rfc3339(udate)); } memcpy(stats, &export_stats, sizeof(export_stats_t)); } /* end */ cvs-fast-export-1.35/generate.c0000664000175000017500000006601612624157452014634 0ustar esresr/* * Copyright © 2006 Sean Estabrooks * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ * * Large portions of code contained in this file were obtained from * the original RCS application under GPLv2 or later license, it retains * the copyright of the original authors listed below: * * Copyright 1982, 1988, 1989 Walter Tichy * Copyright 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert * Distributed under license by the Free Software Foundation, Inc. */ /* * The entire aim of this module is the last function, which turns * the in-core revision history of a CVS/RCS master file and materializes * all of its revision levels through a specified export hook. */ #include #include #include "cvs.h" typedef unsigned char uchar; struct alloclist { void* alloc; struct alloclist *nextalloc; }; struct diffcmd { long line1, nlines, adprev, dafter; }; const int initial_out_buffer_size = 1024; char const ciklog[] = "checked in with -k by "; #define KEYLENGTH 8 /* max length of any of the above keywords */ #define KDELIM '$' /* keyword delimiter */ #define VDELIM ':' /* separates keywords from values */ #define SDELIM '@' /* string delimiter */ #define min(a,b) ((a) < (b) ? (a) : (b)) #define max(a,b) ((a) > (b) ? (a) : (b)) char const *const Keyword[] = { 0, "Author", "Date", "Header", "Id", "Locker", "Log", "Name", "RCSfile", "Revision", "Source", "State" }; enum markers { Nomatch, Author, Date, Header, Id, Locker, Log, Name, RCSfile, Revision, Source, State }; enum stringwork {ENTER, EDIT}; /* backup one position in the input buffer, unless at start of buffer * return character at new position, or EOF if we could not back up */ static int in_buffer_ungetc(editbuffer_t *eb) { int c; if (Ginbuf(eb)->read_count == 0) return EOF; --Ginbuf(eb)->read_count; --Ginbuf(eb)->ptr; c = *Ginbuf(eb)->ptr; if (c == SDELIM) { --Ginbuf(eb)->ptr; c = *Ginbuf(eb)->ptr; } return c; } static int in_buffer_getc(editbuffer_t *eb) { int c; c = *(Ginbuf(eb)->ptr++); ++Ginbuf(eb)->read_count; if (c == SDELIM) { c = *(Ginbuf(eb)->ptr++); if (c != SDELIM) { Ginbuf(eb)->ptr -= 2; --Ginbuf(eb)->read_count; return EOF; #ifdef LINESTATS } else { eb->has_stringdelim = true; #endif } } return c ; } static uchar *in_get_line(editbuffer_t *eb) { int c; uchar *ptr = Ginbuf(eb)->ptr; #ifdef LINESTATS eb->has_stringdelim = false; #endif c=in_buffer_getc(eb); if (c == EOF) return NULL; while (c != EOF && c != '\n') c = in_buffer_getc(eb); #ifdef LINESTATS eb->line_len = Ginbuf(eb)->ptr - ptr; #endif return ptr; } static const uchar *in_buffer_loc(const editbuffer_t *const eb) { return(Ginbuf(eb)->ptr); } static void in_buffer_init(editbuffer_t *eb, const uchar * const text, const int bypass_initial) { Ginbuf(eb)->ptr = Ginbuf(eb)->buffer = (uchar *)text; Ginbuf(eb)->read_count=0; if (bypass_initial && *Ginbuf(eb)->ptr++ != SDELIM) fatal_error("Illegal buffer, missing @ %s", text); } static void out_buffer_init(editbuffer_t *eb) { char *t; eb->Goutbuf = xmalloc(sizeof(struct out_buffer_type), "out_buffer_init"); eb->Goutbuf->size = initial_out_buffer_size; t = xmalloc(eb->Goutbuf->size, "out+buffer_init"); eb->Goutbuf->text = t; eb->Goutbuf->ptr = t; eb->Goutbuf->end_of_text = t + eb->Goutbuf->size; } static void out_buffer_enlarge(editbuffer_t *eb) { register struct out_buffer_type *ob = eb->Goutbuf; int ptroffset = ob->ptr - ob->text; ob->size *= 2; ob->text = xrealloc(ob->text, ob->size, "out_buffer_enlarge"); ob->end_of_text = ob->text + ob->size; ob->ptr = ob->text + ptroffset; } static unsigned long out_buffer_count(const editbuffer_t *const eb) { return(unsigned long) (eb->Goutbuf->ptr - eb->Goutbuf->text); } static char *out_buffer_text(const editbuffer_t *const eb) { return eb->Goutbuf->text; } static void out_buffer_cleanup(const editbuffer_t *eb) { free(eb->Goutbuf->text); free(eb->Goutbuf); } inline static void out_putc(editbuffer_t *eb, const int c) { /* * This function is a severe hot spot. */ register struct out_buffer_type *ob = eb->Goutbuf; *ob->ptr++ = c; if (ob->ptr >= ob->end_of_text) out_buffer_enlarge(eb); } static void out_printf(editbuffer_t *eb, const char *fmt, ...) { va_list ap; while (1) { int ret, room; room = eb->Goutbuf->end_of_text - eb->Goutbuf->ptr; va_start(ap, fmt); ret = vsnprintf(eb->Goutbuf->ptr, room, fmt, ap); va_end(ap); if (ret > -1 && ret < room) { eb->Goutbuf->ptr += ret; return; } out_buffer_enlarge(eb); } } static void out_fputs(editbuffer_t *eb, const char *s) { while (*s) out_putc(eb, *s++); } static void out_awrite(editbuffer_t *eb, const char *s, size_t len) { while (len--) out_putc(eb, *s++); } static bool latin1_alpha(const int c) { if (c >= 192 && c != 215 && c != 247 ) return true; if ((c >= 97 && c < 123) || (c >= 65 && c < 91)) return true; return false; } static int latin1_whitespace(const uchar c) { return (c == ' ' || (c >= '\b' && c <= '\r' && c != '\n')); } enum expand_mode expand_override(char const *s) { if (s != NULL) { char *const expand_names[] = {"kv", "kvl", "k", "v", "o", "b"}; int i; for (i=0; i < 6; ++i) if (strcmp(s,expand_names[i]) == 0) return(enum expand_mode) i; } return EXPANDUNSPEC; } static char const *basefilename(const char* const p) { char const *b = p, *q = p; for (;;) switch(*q++) { case '/': b = q; break; case 0: return b; } } static char const * getfullRCSname(editbuffer_t *eb) /* Convert relative RCS filename to absolute path */ { char *wdbuf = NULL; int wdbuflen = 0; size_t dlen; char const *r; char* d; if (eb->Gfilename[0] == '/') return eb->Gfilename; /* If we've already calculated the absolute path, return it */ if (eb->Gabspath) return eb->Gabspath; /* Get working directory and strip any trailing slashes */ wdbuflen = _POSIX_PATH_MAX + 1; wdbuf = xmalloc(wdbuflen, "getcwd"); while (!getcwd(wdbuf, wdbuflen)) { if (errno == ERANGE) /* coverity[leaked_storage] */ xrealloc(wdbuf, wdbuflen<<1, "getcwd"); else fatal_system_error("getcwd"); } /* Trim off trailing slashes */ dlen = strlen(wdbuf); while (dlen && wdbuf[dlen-1] == '/') --dlen; wdbuf[dlen] = 0; /* Ignore leading `./'s in Gfilename. */ for (r = eb->Gfilename; r[0]=='.' && r[1] == '/'; r += 2) while (r[2] == '/') r++; /* Build full pathname. */ eb->Gabspath = d = xmalloc(dlen + strlen(r) + 2, "pathname building"); memcpy(d, wdbuf, dlen); d += dlen; *d++ = '/'; strcpy(d, r); free(wdbuf); return eb->Gabspath; } static enum markers trymatch(char const *const string) /* Check if string starts with a keyword followed by a KDELIM or VDELIM */ { int j; for (j = sizeof(Keyword)/sizeof(*Keyword); (--j); ) { char const *p, *s; p = Keyword[j]; s = string; while (*p++ == *s++) { if (!*p) { switch(*s) { case KDELIM: case VDELIM: return(enum markers)j; default: return Nomatch; } } } } return(Nomatch); } #ifdef LINESTATS static void insertline(editbuffer_t *eb, const unsigned long n, uchar * l) /* Before line N, insert line L. N is 0-origin. */ { if (n > Glinemax(eb) - Ggapsize(eb)) fatal_error("edit script tried to insert beyond eof"); if (!Ggapsize(eb)) { if (Glinemax(eb)) { Ggap(eb) = Ggapsize(eb) = Glinemax(eb); Glinemax(eb) <<= 1; Gline(eb) = xrealloc(Gline(eb), sizeof(editline_t) * Glinemax(eb), "insertline"); } else { Glinemax(eb) = Ggapsize(eb) = 1024; Gline(eb) = xmalloc(sizeof(editline_t) * Glinemax(eb), "insertline"); } } if (n < Ggap(eb)) memmove(Gline(eb)+n+Ggapsize(eb), Gline(eb)+n, (Ggap(eb)-n) * sizeof(editline_t)); else if (Ggap(eb) < n) memmove(Gline(eb)+Ggap(eb), Gline(eb)+Ggap(eb)+Ggapsize(eb), (n-Ggap(eb)) * sizeof(editline_t)); Gline(eb)[n].ptr = l; Gline(eb)[n].has_stringdelim = eb->has_stringdelim; Gline(eb)[n].length = eb->line_len; Ggap(eb) = n + 1; Ggapsize(eb)--; } static void deletelines(editbuffer_t *eb, const unsigned long n, const unsigned long nlines) /* Delete lines N through N+NLINES-1. N is 0-origin. */ { unsigned long l = n + nlines; if (Glinemax(eb)-Ggapsize(eb) < l || l < n) fatal_error("edit script tried to delete beyond eof"); if (l < Ggap(eb)) memmove(Gline(eb)+l+Ggapsize(eb), Gline(eb)+l, (Ggap(eb)-l) * sizeof(editline_t)); else if (Ggap(eb) < n) memmove(Gline(eb)+Ggap(eb), Gline(eb)+Ggap(eb)+Ggapsize(eb), (n-Ggap(eb)) * sizeof(editline_t)); Ggap(eb) = n; Ggapsize(eb) += nlines; } #else static void insertline(editbuffer_t *eb, const unsigned long n, uchar * l) /* Before line N, insert line L. N is 0-origin. */ { if (n > Glinemax(eb) - Ggapsize(eb)) fatal_error("edit script tried to insert beyond eof"); if (!Ggapsize(eb)) { if (Glinemax(eb)) { Ggap(eb) = Ggapsize(eb) = Glinemax(eb); Glinemax(eb) <<= 1; Gline(eb) = xrealloc(Gline(eb), sizeof(uchar *) * Glinemax(eb), "insertline"); } else { Glinemax(eb) = Ggapsize(eb) = 1024; Gline(eb) = xmalloc(sizeof(uchar *) * Glinemax(eb), "insertline"); } } if (n < Ggap(eb)) memmove(Gline(eb)+n+Ggapsize(eb), Gline(eb)+n, (Ggap(eb)-n) * sizeof(uchar *)); else if (Ggap(eb) < n) memmove(Gline(eb)+Ggap(eb), Gline(eb)+Ggap(eb)+Ggapsize(eb), (n-Ggap(eb)) * sizeof(uchar *)); Gline(eb)[n] = l; Ggap(eb) = n + 1; Ggapsize(eb)--; } static void deletelines(editbuffer_t *eb, const unsigned long n, const unsigned long nlines) /* Delete lines N through N+NLINES-1. N is 0-origin. */ { unsigned long l = n + nlines; if (Glinemax(eb)-Ggapsize(eb) < l || l < n) fatal_error("edit script tried to delete beyond eof"); if (l < Ggap(eb)) memmove(Gline(eb)+l+Ggapsize(eb), Gline(eb)+l, (Ggap(eb)-l) * sizeof(uchar *)); else if (Ggap(eb) < n) memmove(Gline(eb)+Ggap(eb), Gline(eb)+Ggap(eb)+Ggapsize(eb), (n-Ggap(eb)) * sizeof(uchar *)); Ggap(eb) = n; Ggapsize(eb) += nlines; } #endif static long parsenum(editbuffer_t *eb) /* parse and return a decimal integer */ { int c; long ret = 0; for (c=in_buffer_getc(eb); isdigit(c); c=in_buffer_getc(eb)) ret = (ret * 10) + (c - '0'); in_buffer_ungetc(eb); return ret; } static int parse_next_delta_command(editbuffer_t *eb, struct diffcmd *dc) { int cmd; long line1, nlines; cmd = in_buffer_getc(eb); if (cmd==EOF) return -1; line1 = parsenum(eb); while (in_buffer_getc(eb) == ' ') ; in_buffer_ungetc(eb); nlines = parsenum(eb); while (in_buffer_getc(eb) != '\n') ; if (!nlines || (cmd != 'a' && cmd != 'd') || line1+nlines < line1) fatal_error("Corrupt delta"); if (cmd == 'a') { if (line1 < dc->adprev) fatal_error("backward insertion in delta"); dc->adprev = line1 + 1; } else if (cmd == 'd') { if (line1 < dc->adprev || line1 < dc->dafter) fatal_error("backward deletion in delta"); dc->adprev = line1; dc->dafter = line1 + nlines; } dc->line1 = line1; dc->nlines = nlines; return cmd == 'a'; } static void escape_string(editbuffer_t *eb, register char const *s) { for (;;) { register char c; switch((c = *s++)) { case 0: return; case '\t': out_fputs(eb, "\\t"); break; case '\n': out_fputs(eb, "\\n"); break; case ' ': out_fputs(eb, "\\040"); break; case KDELIM: out_fputs(eb, "\\044"); break; case '\\': out_fputs(eb, "\\\\"); break; default: out_putc(eb, c); break; } } } static void keyreplace(editbuffer_t *eb, enum markers marker) /* output the appropriate keyword value(s) */ { char *leader = NULL; char date_string[25]; enum expand_mode exp = eb->Gexpand; char const *kw = Keyword[(int)marker]; time_t utime = RCS_EPOCH + eb->Gversion->date; strftime(date_string, 25, "%Y/%m/%d %H:%M:%S", localtime(&utime)); out_printf(eb, "%c%s", KDELIM, kw); /* bug: Locker expansion is not implemented */ if (exp != EXPANDKK) { #ifdef __UNUSED__ const char *target_lockedby = NULL; #endif /* __UNUSED__ */ if (exp != EXPANDKV) out_printf(eb, "%c%c", VDELIM, ' '); switch(marker) { case Author: out_fputs(eb, eb->Gversion->author); break; case Date: out_fputs(eb, date_string); break; case Id: case Header: if (marker == Id ) escape_string(eb, basefilename(eb->Gfilename)); else escape_string(eb, getfullRCSname(eb)); out_printf(eb, " %s %s %s %s", eb->Gversion_number, date_string, eb->Gversion->author, eb->Gversion->state); #ifdef __UNUSED__ if (target_lockedby && exp == EXPANDKKVL) out_printf(eb, " %s", target_lockedby); #endif /* __UNUSED__ */ break; case Locker: #ifdef __UNUSED__ if (target_lockedby && exp == EXPANDKKVL) out_fputs(eb, target_lockedby); #endif /* __UNUSED__ */ break; case Log: case RCSfile: escape_string(eb, basefilename(eb->Gfilename)); break; case Revision: out_fputs(eb, eb->Gversion_number); break; case Source: escape_string(eb, getfullRCSname(eb)); break; case State: out_fputs(eb, eb->Gversion->state); break; default: break; } if (exp != EXPANDKV) out_putc(eb, ' '); } #if 0 /* Closing delimiter is processed again in expandline */ if (exp != EXPANDKV) out_putc(eb, KDELIM); #endif if (marker == Log) { char const *xxp; const uchar *kdelim_ptr = NULL; int c; size_t cs, cw, ls; /* * "Closing delimiter is processed again in expandline" * does not apply here, since we consume the input. */ if (exp != EXPANDKV) out_putc(eb, KDELIM); kw = eb->Glog; ls = strlen(eb->Glog); if (sizeof(ciklog)-1<=ls && !memcmp(kw,ciklog,sizeof(ciklog)-1)) return; /* Back up to the start of the current input line */ int num_kdelims = 0; for (;;) { c = in_buffer_ungetc(eb); if (c == EOF) break; if (c == '\n') { in_buffer_getc(eb); break; } if (c == KDELIM) { num_kdelims++; /* It is possible to have multiple keywords on one line. Make sure we don't backtrack into some other keyword! */ if (num_kdelims > 2) { in_buffer_getc(eb); break; } kdelim_ptr = in_buffer_loc(eb); } } /* Copy characters before `$Log' into LEADER. */ xxp = leader = xmalloc(kdelim_ptr - in_buffer_loc(eb), "keyword expansion"); for (cs = 0; ; cs++) { c = in_buffer_getc(eb); if (c == KDELIM) break; leader[cs] = c; } /* Convert traditional C or Pascal leader to ` *'. */ for (cw = 0; cw < cs; cw++) if (!latin1_whitespace(xxp[cw])) break; if (cw+1 < cs && xxp[cw+1] == '*' && (xxp[cw] == '/' || xxp[cw] == '(')) { size_t i = cw+1; for (;;) { if (++i == cs) { leader[cw] = ' '; break; } else if (!latin1_whitespace(xxp[i])) break; } } /* Skip `$Log ... $' string. */ do { c = in_buffer_getc(eb); } while (c != KDELIM); out_putc(eb, '\n'); out_awrite(eb, xxp, cs); out_printf(eb, "Revision %s %s %s", eb->Gversion_number, date_string, eb->Gversion->author); /* Do not include state: it may change and is not updated. */ cw = cs; for (; cw && (xxp[cw-1]==' ' || xxp[cw-1]=='\t'); --cw) ; for (;;) { out_putc(eb, '\n'); out_awrite(eb, xxp, cw); if (!ls) break; --ls; c = *kw++; if (c != '\n') { out_awrite(eb, xxp+cw, cs-cw); do { out_putc(eb, c); if (!ls) break; --ls; c = *kw++; } while (c != '\n'); } } free(leader); } } static int expandline(editbuffer_t *eb) { register int c = 0; char * tp; register int e, r; char const *tlim; enum markers matchresult; int orig_size; if (eb->Gkvlen < KEYLENGTH+3) { eb->Gkvlen = KEYLENGTH + 3; eb->Gkeyval = xrealloc(eb->Gkeyval, eb->Gkvlen, "expandline"); } e = 0; r = -1; for (;;) { c = in_buffer_getc(eb); for (;;) { switch(c) { case EOF: goto uncache_exit; case '\n': out_putc(eb, c); r = 2; goto uncache_exit; case KDELIM: r = 0; /* check for keyword */ /* first, copy a long enough string into keystring */ tp = eb->Gkeyval; *tp++ = KDELIM; for (;;) { c = in_buffer_getc(eb); if (tp <= &eb->Gkeyval[KEYLENGTH] && latin1_alpha(c)) *tp++ = c; else break; } *tp++ = c; *tp = '\0'; matchresult = trymatch(eb->Gkeyval+1); if (matchresult==Nomatch) { tp[-1] = 0; out_fputs(eb, eb->Gkeyval); continue; /* last c handled properly */ } /* Now we have a keyword terminated with a K/VDELIM */ if (c==VDELIM) { /* try to find closing KDELIM, and replace value */ tlim = eb->Gkeyval + eb->Gkvlen; for (;;) { c = in_buffer_getc(eb); if (c=='\n' || c==KDELIM) break; *tp++ =c; if (tlim <= tp) { orig_size = eb->Gkvlen; eb->Gkvlen *= 2; eb->Gkeyval = xrealloc(eb->Gkeyval, eb->Gkvlen, "expandline"); tlim = eb->Gkeyval + eb->Gkvlen; tp = eb->Gkeyval + orig_size; } if (c==EOF) goto keystring_eof; } if (c!=KDELIM) { /* couldn't find closing KDELIM -- give up */ *tp = 0; out_fputs(eb, eb->Gkeyval); continue; /* last c handled properly */ } } /* * CVS will expand keywords that have * overlapping delimiters, eg "$Name$Id$". To * support that(mis)feature, push the closing * delimiter back on the input so that the * loop will resume processing starting with * it. */ if (c == KDELIM) in_buffer_ungetc(eb); /* now put out the new keyword value */ keyreplace(eb, matchresult); e = 1; break; default: out_putc(eb, c); r = 0; break; } break; } } keystring_eof: *tp = 0; out_fputs(eb, eb->Gkeyval); uncache_exit: return r + e; } #if USE_MMAP #include #include #include #include #include static uchar * load_text(editbuffer_t *eb, const cvs_text *text) { struct stat st; uchar *base; int fd; size_t size; size_t offset = (size_t)text->offset; if (eb->text_map.filename == text->filename) { base = eb->text_map.base; return base + offset; } if ((fd = open(text->filename, O_RDONLY)) == -1) fatal_system_error("open: %s", text->filename); if (fstat(fd, &st) == -1) fatal_system_error("fstat: %s", text->filename); #if SIZE_MAX < LONG_MAX /* check will always succed if sizeof(size_t) == sizeof(off_t) */ if (st.st_size > SIZE_MAX) fatal_error("%s: too big", text->filename); #endif size = st.st_size; base = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0); if (base == MAP_FAILED) fatal_system_error("mmap: %s %zu", text->filename, size); close(fd); munmap(eb->text_map.base, eb->text_map.size); eb->text_map.filename = text->filename; eb->text_map.base = base; eb->text_map.size = size; return base + offset; } static void unload_all_text(editbuffer_t *eb) { if (eb->text_map.filename) { munmap(eb->text_map.base, eb->text_map.size); eb->text_map.filename = NULL; } } static void unload_text(editbuffer_t *eb, const cvs_text *text, uchar *data) { } #else static uchar * load_text(editbuffer_t *eb, const cvs_text *text) { FILE *f = fopen(text->filename, "rb"); uchar *data; if (!f) fatal_error("Cannot open %s", text->filename); if (fseek(f, text->offset, SEEK_SET) == -1) fatal_system_error("fseek %s", text->filename); data = xmalloc(text->length + 2, __func__); if (fread(data, 1, text->length, f) != text->length) fatal_system_error("short read %s", text->filename); if (data[0] != '@') fatal_error("doesn't start with '@'"); if (data[text->length - 1] != '@') fatal_error("doesn't end with '@'"); data[text->length] = ' '; data[text->length + 1] = '\0'; fclose(f); return data; } static void unload_text(editbuffer_t *eb, const cvs_text *text, uchar *data) { free(data); } static void unload_all_text(editbuffer_t *eb) { } #endif /* !USE_MMAP */ static void process_delta(editbuffer_t *eb, const node_t *const node, const enum stringwork func) { long editline = 0, linecnt = 0, adjust = 0; int editor_command; struct diffcmd dc; uchar *ptr; eb->Glog = node->patch->log; in_buffer_init(eb, Gnode_text(eb), 1); eb->Gversion = node->version; cvs_number_string(eb->Gversion->number, eb->Gversion_number, sizeof(eb->Gversion_number)); switch(func) { case ENTER: while ( (ptr=in_get_line(eb)) ) insertline(eb, editline++, ptr); /* coverity[fallthrough] */ case EDIT: dc.dafter = dc.adprev = 0; while ((editor_command = parse_next_delta_command(eb, &dc)) >= 0) { if (editor_command) { editline = dc.line1 + adjust; linecnt = dc.nlines; while (linecnt--) insertline(eb, editline++, in_get_line(eb)); adjust += dc.nlines; } else { deletelines(eb, dc.line1 - 1 + adjust, dc.nlines); adjust -= dc.nlines; } } break; } } static void expandedit(editbuffer_t *eb) { #ifdef LINESTATS editline_t *p, *lim, *l = Gline(eb); for (p=l, lim=l+Ggap(eb); p, says: * "snapshotline is mostly called on small text lines so the buffer is * unlikely to get enlarged more than once and data is unlikely to * drop off cachelines before the memcpy" */ #define FASTOUT static void snapshotline(editbuffer_t *eb, register uchar * l) { register int c; #ifdef FASTOUT struct out_buffer_type *ob = eb->Goutbuf; uchar * start = l; #endif do { #ifndef FASTOUT if ((c = *l++) == SDELIM && *l++ != SDELIM) return; out_putc(eb, c); #else if ((c = *l++) == SDELIM && *l++ != SDELIM) { l = l - 2; break; } if (c == SDELIM) { // @@ is a memcpy barrier as we're unescaping it // -1 because if we get here we skipped a SDELIM while (ob->end_of_text - ob->ptr < l - start - 1) { out_buffer_enlarge(eb); ob = eb->Goutbuf; } memcpy(ob->ptr, start, l - start - 1); ob->ptr += l - start - 1; start = l; } #endif } while (c != '\n'); #ifdef FASTOUT if (l - start != 0) { while (ob->end_of_text - ob->ptr < l - start) { out_buffer_enlarge(eb); ob = eb->Goutbuf; } memcpy(ob->ptr, start, l - start); ob->ptr += l - start; } #endif /* FASTOUT */ } #ifdef LINESTATS static void snapshotline_nodelim(editbuffer_t *eb, editline_t *l) { struct out_buffer_type *ob = eb->Goutbuf; size_t chars_read = l->length; if (chars_read != 0) { while (ob->end_of_text - ob->ptr < chars_read) { out_buffer_enlarge(eb); ob = eb->Goutbuf; } memcpy(ob->ptr, l->ptr, chars_read); ob->ptr += chars_read; } } static void snapshotedit(editbuffer_t *eb) { editline_t *p, *lim, *l = Gline(eb); for (p=l, lim=l+Ggap(eb); phas_stringdelim) snapshotline(eb, (*p++).ptr); else snapshotline_nodelim(eb, p++); for (p+=Ggapsize(eb), lim=l+Glinemax(eb); phas_stringdelim) snapshotline(eb, (*p++).ptr); else snapshotline_nodelim(eb, p++); } #else static void snapshotedit(editbuffer_t *eb) { uchar **p, **lim, **l=Gline(eb); for (p=l, lim=l+Ggap(eb); pcurrent->linemax, "enter branch"); memcpy(p, eb->current->line, sizeof(editline_t) * eb->current->linemax); ++eb->current; eb->current[0] = eb->current[-1]; eb->current->next_branch = node->sib; eb->current->line = p; #else uchar **p = xmalloc(sizeof(uchar *) * eb->current->linemax, "enter branch"); memcpy(p, eb->current->line, sizeof(uchar *) * eb->current->linemax); ++eb->current; eb->current[0] = eb->current[-1]; eb->current->next_branch = node->sib; eb->current->line = p; #endif } static node_t *generate_setup(generator_t *gen, enum expand_mode id_token_expand) { if (gen->nodehash.head_node != NULL) { editbuffer_t *eb = &gen->editbuffer; eb->Gkeyval = NULL; eb->Gkvlen = 0; eb->current = eb->stack; eb->Gfilename = gen->master_name; if (gen->expand == EXPANDKB) eb->Gexpand = gen->expand; else if (id_token_expand != EXPANDUNSPEC) eb->Gexpand = id_token_expand; else if (gen->expand != EXPANDUNSPEC) eb->Gexpand = gen->expand; else eb->Gexpand = EXPANDKB; eb->Gabspath = NULL; Gline(eb) = NULL; Ggap(eb) = Ggapsize(eb) = Glinemax(eb) = 0; } return gen->nodehash.head_node; } static void generate_wrap(generator_t *gen) { editbuffer_t *eb = &gen->editbuffer; free(eb->Gkeyval); eb->Gkeyval = NULL; eb->Gkvlen = 0; free(eb->Gabspath); unload_all_text(eb); } void generate_files(generator_t *gen, export_options_t *opts, void(*hook)(node_t *node, void *buf, size_t len, export_options_t *opts)) /* export all the revision states of a CVS/RCS master through a hook */ { editbuffer_t *eb = &gen->editbuffer; node_t *node = generate_setup(gen, opts->id_token_expand); if (node == NULL) return; eb->current->node = node; eb->current->node_text = load_text(eb, &node->patch->text); process_delta(eb, node, ENTER); for (;;) { /* * Revisions are written backwards in time starting from the tip, * so if we're incremental-dumping we can just stop on the * first that's too old. */ if (node->commit && opts->fromtime >= node->commit->date) goto Done; if (node->commit != NULL && !node->commit->dead) { out_buffer_init(eb); if (eb->Gexpand < EXPANDKO) expandedit(eb); else snapshotedit(eb); hook(node, out_buffer_text(eb), out_buffer_count(eb), opts); out_buffer_cleanup(eb); } node = node->down; if (node) { enter_branch(eb, node); goto Next; } while ((node = eb->current->node->to) == NULL) { unload_text(eb, &eb->current->node->patch->text, eb->current->node_text); free(eb->current->line); if (eb->current == eb->stack) goto Done; node = (node_t *)eb->current->next_branch; --eb->current; if (node) { enter_branch(eb, node); break; } } Next: eb->current->node = node; eb->current->node_text = load_text(eb, &node->patch->text); process_delta(eb, node, EDIT); } Done: generate_wrap(gen); } /* end */ cvs-fast-export-1.35/gram.c0000664000175000017500000017162212624616010013756 0ustar esresr/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison implementation for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "3.0.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 2 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Copy the first part of user declarations. */ #line 1 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:339 */ /* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #include "cvs.h" #include "gram.h" #include "lex.h" extern void yyerror(yyscan_t, cvs_file *, const char *); extern YY_DECL; /* FIXME: once the Bison bug requiring this is fixed */ #line 82 "gram.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus # define YY_NULLPTR nullptr # else # define YY_NULLPTR 0 # endif # endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* In a future release of Bison, this section will be replaced by #include "gram.h". */ #ifndef YY_YY_GRAM_H_INCLUDED # define YY_YY_GRAM_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { HEAD = 258, BRANCH = 259, ACCESS = 260, SYMBOLS = 261, LOCKS = 262, COMMENT = 263, DATE = 264, BRANCHES = 265, DELTATYPE = 266, NEXT = 267, COMMITID = 268, EXPAND = 269, GROUP = 270, KOPT = 271, OWNER = 272, PERMISSIONS = 273, FILENAME = 274, MERGEPOINT = 275, HARDLINKS = 276, DESC = 277, LOG = 278, TEXT = 279, STRICT = 280, AUTHOR = 281, STATE = 282, SEMI = 283, COLON = 284, IGNORED = 285, BRAINDAMAGED_NUMBER = 286, LOGIN = 287, TOKEN = 288, DATA = 289, TEXT_DATA = 290, NUMBER = 291 }; #endif /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE YYSTYPE; union YYSTYPE { #line 31 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:355 */ int i; cvstime_t date; char *s; /* on heap */ const char *atom; cvs_text text; cvs_number number; cvs_symbol *symbol; cvs_version *version; cvs_version **vlist; cvs_patch *patch; cvs_patch **patches; cvs_branch *branch; cvs_file *file; #line 175 "gram.c" /* yacc.c:355 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif int yyparse (void *scanner, cvs_file *cvsfile); #endif /* !YY_YY_GRAM_H_INCLUDED */ /* Copy the second part of user declarations. */ #line 189 "gram.c" /* yacc.c:358 */ #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #else typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(Msgid) dgettext ("bison-runtime", Msgid) # endif # endif # ifndef YY_ # define YY_(Msgid) Msgid # endif #endif #ifndef YY_ATTRIBUTE # if (defined __GNUC__ \ && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C # define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else # define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif #ifndef YY_ATTRIBUTE_PURE # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) #endif #ifndef YY_ATTRIBUTE_UNUSED # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif #if !defined _Noreturn \ && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) # if defined _MSC_VER && 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn YY_ATTRIBUTE ((__noreturn__)) # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) #else # define YYUSE(E) /* empty */ #endif #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value #endif #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN # define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif #ifndef YY_INITIAL_VALUE # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's 'empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) #endif #if defined YYCOPY_NEEDED && YYCOPY_NEEDED /* Copy COUNT objects from SRC to DST. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ #define YYFINAL 21 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 83 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 37 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 40 /* YYNRULES -- Number of rules. */ #define YYNRULES 68 /* YYNSTATES -- Number of states. */ #define YYNSTATES 124 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 291 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex, without out-of-bounds checking. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 87, 87, 96, 97, 99, 101, 103, 104, 106, 107, 109, 112, 113, 115, 117, 118, 120, 137, 140, 142, 145, 147, 150, 152, 159, 164, 165, 172, 175, 179, 180, 182, 187, 187, 187, 187, 188, 188, 188, 188, 190, 209, 214, 217, 220, 223, 232, 234, 237, 240, 242, 245, 248, 251, 253, 270, 273, 276, 279, 282, 283, 285, 288, 291, 294, 297, 300, 301 }; #endif #if YYDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "HEAD", "BRANCH", "ACCESS", "SYMBOLS", "LOCKS", "COMMENT", "DATE", "BRANCHES", "DELTATYPE", "NEXT", "COMMITID", "EXPAND", "GROUP", "KOPT", "OWNER", "PERMISSIONS", "FILENAME", "MERGEPOINT", "HARDLINKS", "DESC", "LOG", "TEXT", "STRICT", "AUTHOR", "STATE", "SEMI", "COLON", "IGNORED", "BRAINDAMAGED_NUMBER", "LOGIN", "TOKEN", "DATA", "TEXT_DATA", "NUMBER", "$accept", "file", "headers", "header", "locks", "lock", "lock_type", "accesslist", "logins", "symbollist", "symbols", "symbol", "fscked_symbol", "name", "revisions", "revtrailer", "ignored", "revision", "date", "author", "state", "branches", "numbers", "next", "opt_number", "commitid", "desc", "patches", "patch", "log", "text", "deltatype", "group", "kopt", "owner", "permissions", "filename", "mergepoint", "hardlinks", "strings", YY_NULLPTR }; #endif # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291 }; # endif #define YYPACT_NINF -42 #define yypact_value_is_default(Yystate) \ (!!((Yystate) == (-42))) #define YYTABLE_NINF -1 #define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int8 yypact[] = { -2, -28, -26, -42, -42, -42, -9, -8, 32, -42, -2, -42, -42, -42, 5, 6, 3, -6, -5, 8, 9, -42, -22, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, 10, 13, 11, -42, -42, -42, 7, 33, -42, -42, -7, 15, -42, 12, -42, 14, 18, 16, -42, -42, -42, -42, 17, 20, 19, 24, -42, -42, 21, 22, 41, 23, 30, -42, 28, 25, 46, -42, 27, -42, -42, 25, 31, -28, -42, -42, -42, -42, 35, 0, -42, 34, 36, 38, -21, 40, 42, 43, 29, 44, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, 47, 48, 49, -42, 50, 51, 52, 53, 54, 44, 55, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 4, 50, 0, 19, 23, 13, 0, 0, 0, 29, 4, 7, 8, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 3, 5, 6, 17, 18, 20, 26, 27, 21, 22, 0, 16, 0, 12, 10, 11, 0, 0, 28, 54, 0, 0, 9, 0, 52, 0, 0, 2, 25, 24, 15, 14, 0, 0, 0, 0, 53, 42, 0, 0, 0, 0, 0, 43, 0, 47, 0, 56, 0, 55, 44, 47, 0, 50, 30, 57, 46, 45, 0, 41, 48, 0, 0, 0, 0, 0, 0, 0, 0, 68, 32, 31, 35, 34, 36, 33, 37, 39, 38, 40, 0, 0, 0, 61, 0, 0, 0, 0, 0, 68, 0, 58, 51, 59, 60, 62, 63, 64, 65, 67, 66 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { -42, -42, 56, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -14, -42, -12, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -42, -41 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { -1, 8, 9, 10, 18, 36, 45, 11, 16, 12, 17, 31, 32, 33, 22, 82, 93, 41, 49, 57, 63, 69, 75, 77, 14, 94, 42, 50, 59, 65, 72, 95, 96, 97, 98, 99, 100, 101, 102, 113 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint8 yytable[] = { 39, 1, 2, 3, 4, 5, 6, 106, 13, 107, 15, 84, 7, 85, 40, 86, 87, 88, 89, 90, 91, 92, 28, 34, 51, 19, 20, 29, 35, 52, 30, 26, 21, 24, 25, 27, 37, 38, 44, 43, 46, 47, 48, 53, 56, 60, 62, 64, 54, 66, 55, 68, 58, 61, 71, 67, 73, 70, 76, 80, 79, 74, 78, 83, 81, 111, 23, 103, 105, 104, 108, 122, 109, 110, 112, 114, 115, 116, 117, 118, 119, 120, 121, 123 }; static const yytype_uint8 yycheck[] = { 22, 3, 4, 5, 6, 7, 8, 28, 36, 30, 36, 11, 14, 13, 36, 15, 16, 17, 18, 19, 20, 21, 28, 28, 31, 34, 34, 33, 33, 36, 36, 28, 0, 28, 28, 32, 28, 28, 25, 29, 29, 34, 9, 28, 26, 28, 27, 23, 36, 28, 36, 10, 36, 33, 24, 33, 28, 34, 12, 28, 74, 36, 35, 28, 76, 36, 10, 33, 30, 33, 30, 112, 30, 30, 30, 28, 28, 28, 28, 28, 28, 28, 28, 28 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 3, 4, 5, 6, 7, 8, 14, 38, 39, 40, 44, 46, 36, 61, 36, 45, 47, 41, 34, 34, 0, 51, 39, 28, 28, 28, 32, 28, 33, 36, 48, 49, 50, 28, 33, 42, 28, 28, 22, 36, 54, 63, 29, 25, 43, 29, 34, 9, 55, 64, 31, 36, 28, 36, 36, 26, 56, 36, 65, 28, 33, 27, 57, 23, 66, 28, 33, 10, 58, 34, 24, 67, 28, 36, 59, 12, 60, 35, 59, 28, 61, 52, 28, 11, 13, 15, 16, 17, 18, 19, 20, 21, 53, 62, 68, 69, 70, 71, 72, 73, 74, 75, 33, 33, 30, 28, 30, 30, 30, 30, 36, 30, 76, 28, 28, 28, 28, 28, 28, 28, 28, 76, 28 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 37, 38, 39, 39, 40, 40, 40, 40, 40, 40, 40, 41, 41, 42, 43, 43, 44, 45, 45, 46, 47, 47, 47, 48, 49, 50, 50, 51, 51, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 54, 55, 56, 57, 58, 59, 59, 60, 61, 61, 62, 63, 64, 64, 65, 66, 67, 68, 69, 70, 70, 71, 72, 73, 74, 75, 76, 76 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 4, 2, 0, 3, 3, 1, 1, 4, 3, 3, 2, 0, 3, 2, 0, 3, 2, 0, 3, 2, 2, 0, 3, 3, 1, 1, 2, 0, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 7, 3, 3, 3, 3, 2, 0, 3, 1, 0, 3, 2, 2, 0, 3, 2, 2, 3, 3, 3, 2, 3, 3, 3, 3, 3, 2, 0 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY) \ { \ yychar = (Token); \ yylval = (Value); \ YYPOPSTACK (yylen); \ yystate = *yyssp; \ goto yybackup; \ } \ else \ { \ yyerror (scanner, cvsfile, YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (0) /* Error token number */ #define YYTERROR 1 #define YYERRCODE 256 /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (0) /* This macro is provided for backward compatibility. */ #ifndef YY_LOCATION_PRINT # define YY_LOCATION_PRINT(File, Loc) ((void) 0) #endif # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value, scanner, cvsfile); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) /*----------------------------------------. | Print this symbol's value on YYOUTPUT. | `----------------------------------------*/ static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *scanner, cvs_file *cvsfile) { FILE *yyo = yyoutput; YYUSE (yyo); YYUSE (scanner); YYUSE (cvsfile); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *scanner, cvs_file *cvsfile) { YYFPRINTF (yyoutput, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep, scanner, cvsfile); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule, void *scanner, cvs_file *cvsfile) { unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], &(yyvsp[(yyi + 1) - (yynrhs)]) , scanner, cvsfile); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyssp, yyvsp, Rule, scanner, cvsfile); \ } while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ static YYSIZE_T yystrlen (const char *yystr) { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ static char * yystpcpy (char *yydest, const char *yysrc) { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message about the unexpected token YYTOKEN for the state stack whose top is YYSSP. Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is not large enough to hold the message. In that case, also set *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per "expected"). */ int yycount = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected tokens because there are none. - The only way there can be no lookahead present (in yychar) is if this state is a consistent state with a default action. Thus, detecting the absence of a lookahead is sufficient to determine that there is no unexpected or expected token to report. In that case, just report a simple "syntax error". - Don't assume there isn't a lookahead just because this state is a consistent state with a default action. There might have been a previous inconsistent state, consistent state with a non-default action, or user semantic action that manipulated yychar. - Of course, the expected token list depends on states to have correct lookahead information, and it depends on the parser not to perform extra reductions after fetching a lookahead from the scanner and before detecting a syntax error. Thus, state merging (from LALR or IELR) and default reductions corrupt the expected token list. However, the list is correct for canonical LR with one exception: it will still contain any token that will not be accepted due to an error action in a later state. */ if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. In other words, skip the first -YYN actions for this state because they are default actions. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yyx; for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR && !yytable_value_is_error (yytable[yyx + yyn])) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; break; } yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } } } } switch (yycount) { # define YYCASE_(N, S) \ case N: \ yyformat = S; \ break YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); # undef YYCASE_ } { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; yysize = yysize1; } if (*yymsg_alloc < yysize) { *yymsg_alloc = 2 * yysize; if (! (yysize <= *yymsg_alloc && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; return 1; } /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ { char *yyp = *yymsg; int yyi = 0; while ((*yyp = *yyformat) != '\0') if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyformat += 2; } else { yyp++; yyformat++; } } return 0; } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, void *scanner, cvs_file *cvsfile) { YYUSE (yyvaluep); YYUSE (scanner); YYUSE (cvsfile); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); YY_IGNORE_MAYBE_UNINITIALIZED_END } /*----------. | yyparse. | `----------*/ int yyparse (void *scanner, cvs_file *cvsfile) { /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ YY_INITIAL_VALUE (static YYSTYPE yyval_default;) YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); /* Number of syntax errors so far. */ int yynerrs; int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: 'yyss': related to states. 'yyvs': related to semantic values. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yyssp = yyss = yyssa; yyvsp = yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yypact_value_is_default (yyn)) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = yylex (&yylval, scanner, cvsfile); } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yytable_value_is_error (yyn)) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: #line 88 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { /* The description text (if any) is only used * for empty log messages in the 'patch' production */ free((void *)cvsfile->description); cvsfile->description = NULL; } #line 1361 "gram.c" /* yacc.c:1646 */ break; case 5: #line 100 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { cvsfile->head = atom_cvs_number((yyvsp[-1].number)); } #line 1367 "gram.c" /* yacc.c:1646 */ break; case 6: #line 102 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { cvsfile->branch = atom_cvs_number((yyvsp[-1].number)); } #line 1373 "gram.c" /* yacc.c:1646 */ break; case 8: #line 105 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { cvsfile->symbols = (yyvsp[0].symbol); } #line 1379 "gram.c" /* yacc.c:1646 */ break; case 10: #line 108 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { free((yyvsp[-1].s)); } #line 1385 "gram.c" /* yacc.c:1646 */ break; case 11: #line 110 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { cvsfile->gen.expand = expand_override((yyvsp[-1].s)); } #line 1391 "gram.c" /* yacc.c:1646 */ break; case 17: #line 121 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { /******************************************************************** * From OPTIONS in rcs(1) man page * * -alogins * Append the login names appearing in the comma-separated list logins * to the access list of the RCS file. * * The logins in the access list seems to be ignored by all RCS operations. * Nevertheless it is appropriate to allow an access list with logins. * Some RCS files have them. Without this patch you get a syntax error * if you have logins in the access list. JW 20151120 *******************************************************************/ (yyval.symbol) = (yyvsp[-1].symbol); } #line 1411 "gram.c" /* yacc.c:1646 */ break; case 18: #line 138 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.symbol) = NULL; /* ignore LOGIN */ } #line 1417 "gram.c" /* yacc.c:1646 */ break; case 19: #line 140 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.symbol) = NULL; /* empty access list */ } #line 1423 "gram.c" /* yacc.c:1646 */ break; case 20: #line 143 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.symbol) = (yyvsp[-1].symbol); } #line 1429 "gram.c" /* yacc.c:1646 */ break; case 21: #line 146 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyvsp[0].symbol)->next = (yyvsp[-1].symbol); (yyval.symbol) = (yyvsp[0].symbol); } #line 1435 "gram.c" /* yacc.c:1646 */ break; case 22: #line 148 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.symbol) = (yyvsp[-1].symbol); } #line 1441 "gram.c" /* yacc.c:1646 */ break; case 23: #line 150 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.symbol) = NULL; } #line 1447 "gram.c" /* yacc.c:1646 */ break; case 24: #line 153 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.symbol) = xcalloc (1, sizeof (cvs_symbol), "making symbol"); (yyval.symbol)->symbol_name = (yyvsp[-2].atom); (yyval.symbol)->number = atom_cvs_number((yyvsp[0].number)); } #line 1457 "gram.c" /* yacc.c:1646 */ break; case 25: #line 160 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { warn("ignoring symbol %s (FreeBSD RELENG_2_1_0 braindamage?)\n", (yyvsp[-2].atom)); } #line 1465 "gram.c" /* yacc.c:1646 */ break; case 27: #line 166 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { char name[CVS_MAX_REV_LEN]; cvs_number_string (&(yyvsp[0].number), name, sizeof(name)); (yyval.atom) = atom (name); } #line 1475 "gram.c" /* yacc.c:1646 */ break; case 28: #line 173 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { *(yyvsp[-1].vlist) = (yyvsp[0].version); (yyval.vlist) = &(yyvsp[0].version)->next;} #line 1481 "gram.c" /* yacc.c:1646 */ break; case 29: #line 175 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.vlist) = &cvsfile->gen.versions; } #line 1487 "gram.c" /* yacc.c:1646 */ break; case 30: #line 179 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.atom) = NULL; } #line 1493 "gram.c" /* yacc.c:1646 */ break; case 31: #line 181 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.atom) = (yyvsp[0].atom); } #line 1499 "gram.c" /* yacc.c:1646 */ break; case 41: #line 191 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.version) = xcalloc (1, sizeof (cvs_version), "gram.y::revision"); (yyval.version)->number = atom_cvs_number((yyvsp[-6].number)); (yyval.version)->date = (yyvsp[-5].date); (yyval.version)->author = (yyvsp[-4].atom); (yyval.version)->state = (yyvsp[-3].atom); (yyval.version)->dead = !strcmp ((yyvsp[-3].atom), "dead"); (yyval.version)->branches = (yyvsp[-2].branch); (yyval.version)->parent = atom_cvs_number((yyvsp[-1].number)); (yyval.version)->commitid = (yyvsp[0].atom); if ((yyval.version)->commitid == NULL && cvsfile->skew_vulnerable < (yyval.version)->date) cvsfile->skew_vulnerable = (yyval.version)->date; hash_version(&cvsfile->gen.nodehash, (yyval.version)); ++cvsfile->nversions; } #line 1521 "gram.c" /* yacc.c:1646 */ break; case 42: #line 210 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.date) = lex_date (&(yyvsp[-1].number), scanner, cvsfile); } #line 1529 "gram.c" /* yacc.c:1646 */ break; case 43: #line 215 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.atom) = (yyvsp[-1].atom); } #line 1535 "gram.c" /* yacc.c:1646 */ break; case 44: #line 218 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.atom) = (yyvsp[-1].atom); } #line 1541 "gram.c" /* yacc.c:1646 */ break; case 45: #line 221 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.branch) = (yyvsp[-1].branch); } #line 1547 "gram.c" /* yacc.c:1646 */ break; case 46: #line 224 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.branch) = xcalloc (1, sizeof (cvs_branch), "gram.y::numbers"); (yyval.branch)->next = (yyvsp[0].branch); (yyval.branch)->number = atom_cvs_number((yyvsp[-1].number)); hash_branch(&cvsfile->gen.nodehash, (yyval.branch)); } #line 1559 "gram.c" /* yacc.c:1646 */ break; case 47: #line 232 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.branch) = NULL; } #line 1565 "gram.c" /* yacc.c:1646 */ break; case 48: #line 235 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-1].number); } #line 1571 "gram.c" /* yacc.c:1646 */ break; case 49: #line 238 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[0].number); } #line 1577 "gram.c" /* yacc.c:1646 */ break; case 50: #line 240 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.number).c = 0; } #line 1583 "gram.c" /* yacc.c:1646 */ break; case 51: #line 243 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.atom) = (yyvsp[-1].atom); } #line 1589 "gram.c" /* yacc.c:1646 */ break; case 52: #line 246 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { cvsfile->description = (yyvsp[0].s); } #line 1595 "gram.c" /* yacc.c:1646 */ break; case 53: #line 249 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { *(yyvsp[-1].patches) = (yyvsp[0].patch); (yyval.patches) = &(yyvsp[0].patch)->next; } #line 1601 "gram.c" /* yacc.c:1646 */ break; case 54: #line 251 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.patches) = &cvsfile->gen.patches; } #line 1607 "gram.c" /* yacc.c:1646 */ break; case 55: #line 254 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.patch) = xcalloc (1, sizeof (cvs_patch), "gram.y::patch"); (yyval.patch)->number = atom_cvs_number((yyvsp[-2].number)); if (!strcmp((yyvsp[-1].s), "Initial revision\n")) { /* description is available because the * desc production has already been reduced */ if (strlen(cvsfile->description) == 0) (yyval.patch)->log = atom("*** empty log message ***\n"); else (yyval.patch)->log = atom(cvsfile->description); } else (yyval.patch)->log = atom((yyvsp[-1].s)); (yyval.patch)->text = (yyvsp[0].text); hash_patch(&cvsfile->gen.nodehash, (yyval.patch)); free((yyvsp[-1].s)); } #line 1627 "gram.c" /* yacc.c:1646 */ break; case 56: #line 271 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.s) = (yyvsp[0].s); } #line 1633 "gram.c" /* yacc.c:1646 */ break; case 57: #line 274 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.text) = (yyvsp[0].text); } #line 1639 "gram.c" /* yacc.c:1646 */ break; case 58: #line 277 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.atom) = (yyvsp[-1].atom); } #line 1645 "gram.c" /* yacc.c:1646 */ break; case 59: #line 280 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.atom) = NULL; } #line 1651 "gram.c" /* yacc.c:1646 */ break; case 62: #line 286 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.atom) = NULL; } #line 1657 "gram.c" /* yacc.c:1646 */ break; case 63: #line 289 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.atom) = NULL; } #line 1663 "gram.c" /* yacc.c:1646 */ break; case 64: #line 292 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.atom) = NULL; } #line 1669 "gram.c" /* yacc.c:1646 */ break; case 65: #line 295 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1646 */ { (yyval.number) = (yyvsp[-1].number); } #line 1675 "gram.c" /* yacc.c:1646 */ break; #line 1679 "gram.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires that yytoken be updated with the new translation. We take the approach of translating immediately before every use of yytoken. One alternative is translating here after every semantic action, but that translation would be missed if the semantic action invokes YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an incorrect destructor might then be invoked immediately. In the case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*--------------------------------------. | yyerrlab -- here on detecting error. | `--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (scanner, cvsfile, YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) { char const *yymsgp = YY_("syntax error"); int yysyntax_error_status; yysyntax_error_status = YYSYNTAX_ERROR; if (yysyntax_error_status == 0) yymsgp = yymsg; else if (yysyntax_error_status == 1) { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; yysyntax_error_status = 2; } else { yysyntax_error_status = YYSYNTAX_ERROR; yymsgp = yymsg; } } yyerror (scanner, cvsfile, yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } # undef YYSYNTAX_ERROR #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval, scanner, cvsfile); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp, scanner, cvsfile); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (scanner, cvsfile, YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ yytoken = YYTRANSLATE (yychar); yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, scanner, cvsfile); } /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp, scanner, cvsfile); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif return yyresult; } #line 303 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1906 */ void yyerror(yyscan_t scanner, cvs_file *cvs, const char *msg) { fatal_error("parse error %s at %s\n", msg, yyget_text(scanner)); } cvs-fast-export-1.35/gram.h0000664000175000017500000000601712624616010013756 0ustar esresr/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison interface for Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ #ifndef YY_YY_GRAM_H_INCLUDED # define YY_YY_GRAM_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif #if YYDEBUG extern int yydebug; #endif /* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { HEAD = 258, BRANCH = 259, ACCESS = 260, SYMBOLS = 261, LOCKS = 262, COMMENT = 263, DATE = 264, BRANCHES = 265, DELTATYPE = 266, NEXT = 267, COMMITID = 268, EXPAND = 269, GROUP = 270, KOPT = 271, OWNER = 272, PERMISSIONS = 273, FILENAME = 274, MERGEPOINT = 275, HARDLINKS = 276, DESC = 277, LOG = 278, TEXT = 279, STRICT = 280, AUTHOR = 281, STATE = 282, SEMI = 283, COLON = 284, IGNORED = 285, BRAINDAMAGED_NUMBER = 286, LOGIN = 287, TOKEN = 288, DATA = 289, TEXT_DATA = 290, NUMBER = 291 }; #endif /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE YYSTYPE; union YYSTYPE { #line 31 "/home/esr/public_html/cvs-fast-export//gram.y" /* yacc.c:1909 */ int i; cvstime_t date; char *s; /* on heap */ const char *atom; cvs_text text; cvs_number number; cvs_symbol *symbol; cvs_version *version; cvs_version **vlist; cvs_patch *patch; cvs_patch **patches; cvs_branch *branch; cvs_file *file; #line 107 "gram.h" /* yacc.c:1909 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 #endif int yyparse (void *scanner, cvs_file *cvsfile); #endif /* !YY_YY_GRAM_H_INCLUDED */ cvs-fast-export-1.35/graph.c0000664000175000017500000001551612624157452014142 0ustar esresr/* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #include "cvs.h" #include "revdir.h" /* * This is the visualizer. It takes the DAG generated by the analysis * stage and turns it into a descriptipn of the graph in the DOT markup * language used by graphviz. */ /* FIXME: never set anywhere - should see what happens if it is */ static bool difffiles = false; void dump_log(FILE *f, const char *log) { int j; for (j = 0; j < 48; j++) { if (log[j] == '\0') break; if (log[j] == '\n') { if (j > 5) break; continue; } if (log[j] & 0x80) continue; if (log[j] < ' ') continue; if (log[j] == '(' || log[j] == ')' || log[j] == '[' || log[j] == ']' || log[j] == '{' || log[j] == '}') continue; if (log[j] == '"') putc('\\', f); putc(log[j], f); if (log[j] == '.' && isspace((unsigned char)log[j+1])) break; } } static void dot_ref_name(FILE *f, const rev_ref *ref) { if (ref->parent) { dot_ref_name(f, ref->parent); fprintf(f, " > "); } fprintf(f, "%s", ref->ref_name); } static bool cvs_commit_list_has_filename(const cvs_commit_list *fl, const char *name) { for (; fl; fl = fl->next) if (fl->file->master->name == name) return true; return false; } static void dot_commit_graph(git_commit *c, const rev_ref *branch) { printf("\""); if (branch) dot_ref_name(stdout, branch); // if (c->tail) // printf("*** TAIL"); printf("\\n"); printf("%s\\n", cvstime2rfc3339(c->date)); dump_log(stdout, c->log); printf("\\n"); if (difffiles) { rev_diff *diff = git_commit_diff(c->parent, c); cvs_commit_list *fl; for (fl = diff->add; fl; fl = fl->next) { if (!cvs_commit_list_has_filename(diff->del, fl->file->master->name)) { printf("+"); dump_number(fl->file->master->name, fl->file->number); printf("\\n"); } } for (fl = diff->add; fl; fl = fl->next) { if (cvs_commit_list_has_filename(diff->del, fl->file->master->name)) { printf("|"); dump_number(fl->file->master->name, fl->file->number); printf("\\n"); } } for (fl = diff->del; fl; fl = fl->next) { if (!cvs_commit_list_has_filename(diff->add, fl->file->master->name)) { printf("-"); dump_number(fl->file->master->name, fl->file->number); printf("\\n"); } } rev_diff_free(diff); } else { cvs_commit *f; revdir_iter *r = revdir_iter_alloc(&c->revdir); while ((f = revdir_iter_next(r))) { dump_number(f->master->name, f->number); printf("\\n"); } free(r); } printf("%p", c); printf("\""); } static void dot_tag_name(FILE *f, const tag_t *tag) { if (tag->parent) { dot_ref_name(f, tag->parent); fprintf(f, " > "); } fprintf(f, "%s", tag->name); } static rev_ref *dump_find_branch(git_repo *rl, const git_commit *commit) { rev_ref *h; git_commit *c; for (h = rl->heads; h; h = h->next) { if (h->tail) continue; /* PUNNING: see the big comment in cvs.h */ for (c = (git_commit *)h->commit; c; c = c->parent) { if (c == commit) return h; if (c->tail) break; } } return NULL; } static void dot_refs(git_repo *rl, rev_ref *refs, const char *title, const char *shape) { rev_ref *r, *o; int n; for (r = refs; r; r = r->next) { if (!r->shown) { printf("\t"); printf("\""); if (title) printf("%s\\n", title); if (r->tail) printf("TAIL\\n"); n = 0; for (o = r; o; o = o->next) if (!o->shown && o->commit == r->commit) { o->shown = true; if (n) printf("\\n"); dot_ref_name(stdout, o); printf(" (%d)", o->degree); n++; } printf("\" [fontsize=6,fixedsize=false,shape=%s];\n", shape); } } for (r = refs; r; r = r->next) r->shown = false; for (r = refs; r; r = r->next) { if (!r->shown) { printf("\t"); printf("\""); if (title) printf("%s\\n", title); if (r->tail) printf("TAIL\\n"); n = 0; for (o = r; o; o = o->next) if (!o->shown && o->commit == r->commit) { o->shown = true; if (n) printf("\\n"); dot_ref_name(stdout, o); printf(" (%d)", o->degree); n++; } printf("\""); printf(" -> "); if (r->commit) /* PUNNING: see the big comment in cvs.h */ dot_commit_graph((git_commit *)r->commit, dump_find_branch(rl, (git_commit *)r->commit)); else printf("LOST"); printf(" [weight=%d];\n", !r->tail ? 100 : 3); } } for (r = refs; r; r = r->next) r->shown = false; } static void dot_tags(git_repo *rl, const char *title, const char *shape) { tag_t *r; int n; int i, count; struct { int alias; tag_t *t; } *v; for (r = all_tags, count = 0; r; r = r->next, count++) ; v = xcalloc(count, sizeof(*v), __func__); for (r = all_tags, i = 0; r; r = r->next) v[i++].t = r; for (i = 0; i < count; i++) { if (v[i].alias) continue; r = v[i].t; printf("\t\""); if (title) printf("%s\\n", title); dot_tag_name(stdout, r); for (n = i + 1; n < count; n++) { if (v[n].t->commit == r->commit) { v[n].alias = 1; printf("\\n"); dot_tag_name(stdout, v[n].t); } } printf("\" [fontsize=6,fixedsize=false,shape=%s];\n", shape); } for (i = 0; i < count; i++) { if (v[i].alias) continue; r = v[i].t; printf("\t\""); if (title) printf("%s\\n", title); dot_tag_name(stdout, r); for (n = i + 1; n < count; n++) { if (v[n].alias && v[n].t->commit == r->commit) { printf("\\n"); dot_tag_name(stdout, v[n].t); } } printf("\" -> "); if (r->commit) dot_commit_graph(r->commit, dump_find_branch(rl, r->commit)); else printf("LOST"); printf(" [weight=3];\n"); } free(v); } #define dump_get_rev_parent(c) ((c)->parent) static void dot_rev_graph_nodes(git_repo *rl, const char *title) { rev_ref *h; git_commit *c, *p; bool tail; printf("nodesep=0.1;\n"); printf("ranksep=0.1;\n"); printf("edge [dir=none];\n"); printf("node [shape=box,fontsize=6];\n"); dot_refs(rl, rl->heads, title, "ellipse"); dot_tags(rl, title, "diamond"); for (h = rl->heads; h; h = h->next) { if (h->tail) continue; /* PUNNING: see the big comment in cvs.h */ for (c = (git_commit *)h->commit; c; c = p) { p = dump_get_rev_parent(c); tail = c->tail; if (!p) break; printf("\t"); dot_commit_graph(c, h); printf(" -> "); dot_commit_graph(p, tail ? h->parent : h); if (!tail) printf(" [weight=10];"); printf("\n"); if (tail) break; } } } static void dot_rev_graph_begin(void) { printf("digraph G {\n"); } static void dot_rev_graph_end(void) { printf("}\n"); } void dump_rev_graph(git_repo *rl, const char *title) /* dump a DOT graph representation of a apecified revlist */ { dot_rev_graph_begin(); dot_rev_graph_nodes(rl, title); dot_rev_graph_end(); } /* end */ cvs-fast-export-1.35/hash.c0000664000175000017500000000405112440075555013753 0ustar esresr#include #include #include #include #include "hash.h" /* FNV Hash Constants from http://isthe.com/chongo/tech/comp/fnv/ */ //#if UINT_MAX == UINT32_MAX #define HASH_FNV_INITIAL 2166136261U #define HASH_FNV_MIXVAL 16777619U /* #elif UINT_MAX == UINT64_MAX #define HASH_FNV_INITIAL 14695981039346656037UL #define HASH_FNV_MIXVAL 1099511628211UL #endif */ #define HASH_MIX_FNV1A(hash, val) hash = (hash ^ (uint8_t)(val)) * HASH_FNV_MIXVAL static hash_t fnv1a_hash_init(void) { return HASH_FNV_INITIAL; } static hash_t fnv1a_hash_mix_string(hash_t seed, const char *val) { uint8_t c; while ((c = (uint8_t)*val++)) HASH_MIX_FNV1A(seed, c); return seed; } static hash_t fnv1a_hash_string(const char *val) { return fnv1a_hash_mix_string(HASH_FNV_INITIAL, val); } static hash_t fnv1a_hash_mix(hash_t seed, const char *val, size_t len) { size_t i; for (i = 0; i < len; i++) HASH_MIX_FNV1A(seed, val[i]); return seed; } static hash_t fnv1a_hash_value(const char *val, size_t len) { return fnv1a_hash_mix(HASH_FNV_INITIAL, val, len); } static hash_t crc32_table[256]; static void generate_crc32_table(void) { hash_t c, p; int n, m; p = 0xedb88320; for (n = 0; n < 256; n++) { c = n; for (m = 0; m < 8; m++) c = (c >> 1) ^ ((c & 1) ? p : 0); crc32_table[n] = c; } } static hash_t crc32(const char *string) { hash_t crc32 = ~0; unsigned char c; if (crc32_table[1] == 0) generate_crc32_table(); while ((c = (unsigned char) *string++)) crc32 = (crc32 >> 8) ^ crc32_table[(crc32 ^ c) & 0xff]; return ~crc32; } hash_t hash_init(void) { return fnv1a_hash_init(); } hash_t hash_string(const char *val) { return fnv1a_hash_string(val); } hash_t hash_mix(hash_t seed, const char *val, size_t len) { return fnv1a_hash_mix(seed, val, len); } hash_t hash_value(const char *val, size_t len) { return fnv1a_hash_value(val, len); } hash_t hash_mix_string(hash_t seed, const char *val) { return fnv1a_hash_mix_string(seed, val); } //end cvs-fast-export-1.35/hash.h0000664000175000017500000000122112514751762013757 0ustar esresr#ifndef _HASH_H_ #define _HASH_H_ #include "cvstypes.h" hash_t hash_init(void); hash_t hash_string(const char *val); hash_t hash_value(const char *val, size_t len); hash_t hash_mix(hash_t seed, const char *val, size_t len); hash_t hash_mix_string(hash_t seed, const char *val); #define HASH_INIT(hash) hash_t hash = hash_init() #define HASH_MIX_SEED(hash, seed, val) hash = hash_mix((seed), (const char *)&(val), sizeof(val)) #define HASH_VALUE(val) hash_value((const char *)&(val), sizeof(val)) #define HASH_MIX(hash, val) hash = hash_mix((hash), (const char *)&(val), sizeof(val)) #define HASH_COMBINE(h1, h2) ((h1) ^ (h2)) #endif /* _HASH_H_ */ cvs-fast-export-1.35/import.c0000644000175000017500000002663112624620165014345 0ustar esresr/* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #include #include #include #ifdef THREADS #include #endif /* THREADS */ #include "cvs.h" #include "gram.h" #include "lex.h" /* * CVS master analysis. Grinds out a cvs_repo list represnting * the entire CVS history of a collection. */ typedef struct _rev_filename { struct _rev_filename *next; const char *file; } rev_filename; typedef struct _rev_file { const char *name; const char *rectified; } rev_file; /* * Ugh...least painful way to make some stuff that isn't thread-local * visible. */ static rev_filename *fn_head = NULL, **fn_tail = &fn_head, *fn; /* Slabs to be sorted in path_deep_compare order */ static rev_file *sorted_files; static cvs_master *cvs_masters; static rev_master *rev_masters; static volatile size_t fn_i = 0, fn_n; static volatile cvstime_t skew_vulnerable; static volatile size_t total_revisions, load_current_file; static volatile generator_t *generators; static volatile int err; static int total_files, striplen; static int verbose; #ifdef THREADS static pthread_mutex_t revlist_mutex = PTHREAD_MUTEX_INITIALIZER; static pthread_mutex_t enqueue_mutex = PTHREAD_MUTEX_INITIALIZER; static pthread_t *workers; #endif /* THREADS */ typedef struct _analysis { cvstime_t skew_vulnerable; unsigned int total_revisions; generator_t generator; } analysis_t; static cvs_master * sort_cvs_masters(cvs_master *list); static void debug_cvs_masters(cvs_master *list); static char * rectify_name(const char *raw, char *rectified, size_t rectlen) /* from master name to the name humans thought of the file by */ { unsigned len; const char *s, *snext; char *p; p = rectified; s = raw + striplen; while (*s) { for (snext = s; *snext; snext++) if (*snext == '/') { ++snext; /* assert(*snext != '\0'); */ break; } len = snext - s; /* special processing for final components */ if (*snext == '\0') { /* trim trailing ,v */ if (len > 2 && s[len - 2] == ',' && s[len - 1] == 'v') len -= 2; } else { /* s[len-1] == '/' */ /* drop some path components */ if (len == sizeof "Attic" && memcmp(s, "Attic/", len) == 0) goto skip; if (len == sizeof "RCS" && memcmp(s, "RCS/", len) == 0) goto skip; } /* copy the path component */ if (p + len >= rectified + rectlen) fatal_error("File name %s\n too long\n", raw); memcpy(p, s, len); p += len; skip: s = snext; } *p = '\0'; len = p - rectified; return rectified; } static const char* atom_rectify_name(const char *raw) { char rectified[PATH_MAX]; return atom(rectify_name(raw, rectified, sizeof(rectified))); } static void rev_list_file(rev_file *file, analysis_t *out, cvs_master *cm, rev_master *rm) { struct stat buf; yyscan_t scanner; FILE *in; cvs_file *cvs; in = fopen(file->name, "r"); if (!in) { perror(file->name); ++err; return; } if (stat(file->name, &buf) == -1) { fatal_system_error("%s", file->name); } cvs = xcalloc(1, sizeof(cvs_file), __func__); cvs->gen.master_name = file->name; cvs->gen.expand = EXPANDUNSPEC; cvs->export_name = file->rectified; cvs->mode = buf.st_mode; cvs->verbose = verbose; yylex_init(&scanner); yyset_in(in, scanner); yyparse(scanner, cvs); yylex_destroy(scanner); fclose(in); if (cvs_master_digest(cvs, cm, rm) == NULL) { warn("warning - master file %s has no revision number - ignore file\n", file->name); } else { out->total_revisions = cvs->nversions; out->skew_vulnerable = cvs->skew_vulnerable; out->generator = cvs->gen; } cvs_file_free(cvs); } static int strcommonendingwith(const char *a, const char *b, char endc) /* return the length of the common prefix of strings a and b ending with endc */ { int c = 0; int d = 0; while (*a == *b) { if (!*a) { break; } a++; b++; c++; if (*a == endc) { d = c + 1; } } return d; } static void *worker(void *arg) /* consume masters off the queue */ { analysis_t out = {0, 0}; size_t i; for (;;) { /* pop a master off the queue, terminating if none left */ #ifdef THREADS if (threads > 1) pthread_mutex_lock(&enqueue_mutex); #endif /* THREADS */ i = fn_i++; #ifdef THREADS if (threads > 1) pthread_mutex_unlock(&enqueue_mutex); #endif /* THREADS */ if (i >= fn_n) return(NULL); /* process it */ rev_list_file(&sorted_files[i], &out, &cvs_masters[i], &rev_masters[i]); /* pass it to the next stage */ #ifdef THREADS if (threads > 1) pthread_mutex_lock(&revlist_mutex); #endif /* THREADS */ generators[i] = out.generator; progress_jump(++load_current_file); total_revisions += out.total_revisions; if (out.skew_vulnerable > skew_vulnerable) skew_vulnerable = out.skew_vulnerable; #ifdef THREADS if (threads > 1) pthread_mutex_unlock(&revlist_mutex); #endif /* THREADS */ } } /* * Compare/order filenames, such that files in subdirectories * sort earlier than files in the parent * * Also sorts in the same order that git fast-export does * As it says, 'Handle files below a directory first, in case they are * all deleted and the directory changes to a file or symlink.' * Because this doesn't have to handle renames, just sort lexicographically * * a/x < b/y < a < b */ int path_deep_compare(const void *a, const void *b) { const char *af = (const char *)a; const char *bf = (const char *)b; const char *aslash; const char *bslash; int compar; /* short circuit */ if (af == bf) return 0; compar = strcmp(af, bf); /* * strcmp() will suffice, except for this case: * * p/p/b/x/x < p/p/a * * In the comments below, * ? is a string without slashes * ?? is a string that may contain slashes */ if (compar == 0) return 0; /* ?? = ?? */ aslash = strrchr(af, '/'); bslash = strrchr(bf, '/'); if (!aslash && !bslash) return compar; /* ? ~ ? */ if (!aslash) return +1; /* ? > ??/? */ if (!bslash) return -1; /* ??/? < ? */ /* * If the final slashes are at the same position, then either * both paths are leaves of the same directory, or they * are totally different paths. Both cases are satisfied by * normal lexicographic sorting: */ if (aslash - af == bslash - bf) return compar; /* ??/? ~ ??/? */ /* * Must find the case where the two paths share a common * prefix (p/p). */ if (aslash - af < bslash - bf) { if (bf[aslash - af] == '/' && memcmp(af, bf, aslash - af) == 0) { return +1; /* p/p/??? > p/p/???/? */ } } else { if (af[bslash - bf] == '/' && memcmp(af, bf, bslash - bf) == 0) { return -1; /* ???/???/? ~ ???/??? */ } } return compar; } static int file_compare(const void *f1, const void *f2) { rev_file r1 = *(rev_file *)f1; rev_file r2 = *(rev_file *)f2; return path_deep_compare(r1.rectified, r2.rectified); } void analyze_masters(int argc, char *argv[], import_options_t *analyzer, forest_t *forest) /* main entry point; collect and parse CVS masters */ { char name[PATH_MAX]; const char *last = NULL; char *file; size_t i, j = 1; int c; #ifdef THREADS pthread_attr_t attr; /* Initialize and reinforce default thread non-detached attribute */ pthread_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); atom_dir_init(); #endif /* THREADS */ striplen = analyzer->striplen; forest->textsize = forest->filecount = 0; progress_begin("Reading file list...", NO_MAX); for (;;) { struct stat stb; int l; if (argc < 2) { /* coverity[tainted_data] Safe, never handed to exec */ if (fgets(name, sizeof(name), stdin) == NULL) break; l = strlen(name); if (name[l-1] == '\n') name[l-1] = '\0'; file = name; } else { file = argv[j++]; if (!file) break; } if (stat(file, &stb) != 0) continue; else if (S_ISDIR(stb.st_mode) != 0) continue; else if (!analyzer->promiscuous) { char *end = file + strlen(file); if (end - file < 2 || end[-1] != 'v' || end[-2] != ',') continue; if (strstr(file, "CVSROOT") != NULL) continue; } forest->textsize += stb.st_size; fn = xcalloc(1, sizeof(rev_filename), "filename gathering"); *fn_tail = fn; fn_tail = (rev_filename **)&fn->next; if (striplen > 0 && last != NULL) { c = strcommonendingwith(file, last, '/'); if (c < striplen) striplen = c; } else if (striplen < 0) { striplen = 0; for (i = 0; i < strlen(file); i++) if (file[i] == '/') striplen = i + 1; } fn->file = atom(file); last = fn->file; total_files++; if (progress && total_files % 100 == 0) progress_jump(total_files); } forest->filecount = total_files; generators = xcalloc(sizeof(generator_t), total_files, "Generators"); sorted_files = xmalloc(sizeof(rev_file) * total_files, "sorted_files"); cvs_masters = xcalloc(total_files, sizeof(cvs_master), "cvs_masters"); rev_masters = xmalloc(sizeof(rev_master) * total_files, "rev_masters"); fn_n = total_files; i = 0; rev_filename *tn; for (fn = fn_head; fn; fn = tn) { tn = fn->next; sorted_files[i].name = fn->file; sorted_files[i++].rectified = atom_rectify_name(fn->file); free(fn); } /* * Sort list of files in path_deep_compare order of output name. * cvs_masters and rev_masters will be mainteined in this order. * This causes commits to come out in correct pack order. * It also causes operations to come out in correct fileop_sort order. * Note some output names are different to input names. * e.g. .cvsignore becomes .gitignore */ qsort(sorted_files, total_files, sizeof(rev_file), file_compare); progress_end("done, %.3fKB in %d files", (forest->textsize/1024.0), forest->filecount); /* things that must be visible to inner functions */ load_current_file = 0; verbose = analyzer->verbose; /* * Analyze the files for CVS revision structure. * * The result of this analysis is a rev_list, each element of * which corresponds to a CVS master and points at a list of named * CVS branch heads (rev_refs), each one of which points at a list * of CVS commit structures (cvs_commit). */ #ifdef THREADS if (threads > 1) snprintf(name, sizeof(name), "Analyzing masters with %d threads...", threads); else #endif /* THREADS */ strcpy(name, "Analyzing masters..."); progress_begin(name, total_files); #ifdef THREADS if (threads > 1) { int i; workers = (pthread_t *)xcalloc(threads, sizeof(pthread_t), __func__); for (i = 0; i < threads; i++) pthread_create(&workers[i], &attr, worker, NULL); /* Wait for all the threads to die off. */ for (i = 0; i < threads; i++) pthread_join(workers[i], NULL); pthread_mutex_destroy(&enqueue_mutex); pthread_mutex_destroy(&revlist_mutex); } else #endif /* THREADS */ worker(NULL); progress_end("done, %d revisions", (int)total_revisions); free(sorted_files); forest->errcount = err; forest->total_revisions = total_revisions; forest->skew_vulnerable = skew_vulnerable; forest->cvs = cvs_masters; forest->generators = (generator_t *)generators; } /* end */ cvs-fast-export-1.35/lex.c0000664000175000017500000022161712624616010013620 0ustar esresr#line 2 "lex.c" #line 4 "lex.c" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 39 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif /* For convenience, these vars (plus the bison vars far below) are macros in the reentrant scanner. */ #define yyin yyg->yyin_r #define yyout yyg->yyout_r #define yyextra yyg->yyextra_r #define yyleng yyg->yyleng_r #define yytext yyg->yytext_r #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) #define yy_flex_debug yyg->yy_flex_debug_r /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN yyg->yy_start = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START ((yyg->yy_start - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart(yyin ,yyscanner ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define YY_BUF_SIZE 32768 #else #define YY_BUF_SIZE 16384 #endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) #define YY_LINENO_REWIND_TO(ptr) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = yyg->yy_hold_char; \ YY_RESTORE_YY_MORE_OFFSET \ yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] void yyrestart (FILE *input_file ,yyscan_t yyscanner ); void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); void yypop_buffer_state (yyscan_t yyscanner ); static void yyensure_buffer_stack (yyscan_t yyscanner ); static void yy_load_buffer_state (yyscan_t yyscanner ); static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); void *yyalloc (yy_size_t ,yyscan_t yyscanner ); void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner ); void yyfree (void * ,yyscan_t yyscanner ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (yyscanner); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define yywrap(yyscanner) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; typedef int yy_state_type; #define yytext_ptr yytext_r static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); static int yy_get_next_buffer (yyscan_t yyscanner ); static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ yyg->yytext_ptr = yy_bp; \ yyleng = (size_t) (yy_cp - yy_bp); \ yyg->yy_hold_char = *yy_cp; \ *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; #define YY_NUM_RULES 44 #define YY_END_OF_BUFFER 45 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[217] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 33, 37, 37, 0, 0, 0, 0, 45, 43, 40, 41, 39, 43, 42, 36, 35, 38, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 27, 26, 31, 31, 31, 30, 30, 43, 42, 33, 33, 33, 33, 33, 33, 33, 37, 37, 37, 37, 37, 37, 36, 28, 29, 29, 29, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 31, 31, 30, 32, 0, 33, 33, 33, 37, 34, 37, 28, 29, 29, 29, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 32, 33, 34, 29, 0, 0, 0, 0, 8, 0, 23, 0, 0, 0, 0, 1, 17, 0, 0, 10, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 5, 0, 18, 0, 14, 0, 0, 3, 13, 2, 0, 0, 0, 7, 0, 0, 0, 0, 12, 0, 0, 6, 0, 0, 0, 0, 0, 0, 4, 9, 11, 0, 20, 0, 0, 0, 15, 22, 0, 0, 0, 0, 21, 19, 0 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 1, 5, 1, 6, 1, 1, 5, 5, 7, 6, 1, 6, 8, 7, 9, 10, 9, 9, 9, 9, 9, 9, 9, 9, 11, 12, 5, 7, 5, 7, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 5, 7, 5, 7, 15, 1, 16, 17, 18, 19, 20, 21, 22, 23, 24, 14, 25, 26, 27, 28, 29, 30, 14, 31, 32, 33, 34, 14, 35, 36, 37, 14, 1, 1, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_int32_t yy_meta[38] = { 0, 1, 1, 1, 1, 2, 3, 3, 4, 5, 5, 1, 6, 1, 5, 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 } ; static yyconst flex_int16_t yy_base[229] = { 0, 0, 0, 37, 50, 51, 0, 84, 99, 106, 108, 113, 115, 127, 138, 149, 160, 172, 185, 198, 211, 478, 479, 479, 479, 479, 124, 135, 479, 479, 479, 48, 446, 447, 209, 439, 450, 442, 210, 443, 442, 450, 449, 433, 447, 194, 446, 0, 479, 146, 157, 457, 224, 227, 230, 233, 0, 0, 0, 0, 236, 239, 0, 0, 0, 0, 0, 242, 245, 0, 0, 0, 248, 251, 254, 257, 446, 430, 446, 434, 427, 242, 429, 432, 428, 425, 439, 424, 251, 422, 416, 423, 419, 82, 422, 412, 0, 262, 439, 267, 270, 273, 0, 276, 279, 0, 282, 285, 0, 0, 288, 291, 294, 426, 422, 416, 416, 422, 408, 422, 423, 418, 403, 417, 416, 401, 408, 479, 410, 398, 410, 402, 395, 403, 409, 392, 297, 300, 303, 306, 392, 394, 404, 297, 479, 405, 479, 392, 391, 388, 391, 479, 479, 384, 395, 479, 383, 389, 392, 393, 381, 479, 377, 377, 384, 378, 372, 371, 384, 386, 479, 377, 479, 370, 479, 367, 479, 365, 371, 479, 479, 376, 362, 370, 355, 479, 360, 356, 348, 336, 479, 288, 287, 479, 299, 198, 197, 179, 144, 133, 479, 479, 479, 126, 479, 103, 99, 91, 479, 479, 42, 37, 46, 11, 479, 479, 479, 321, 328, 335, 342, 349, 356, 362, 366, 371, 378, 381, 386 } ; static yyconst flex_int16_t yy_def[229] = { 0, 216, 1, 217, 217, 1, 5, 218, 218, 5, 5, 5, 5, 219, 219, 220, 220, 221, 221, 222, 222, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 223, 216, 224, 224, 224, 216, 216, 216, 216, 225, 225, 225, 225, 225, 225, 225, 226, 226, 226, 226, 226, 226, 226, 227, 228, 228, 228, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 223, 224, 224, 216, 216, 216, 225, 225, 225, 226, 226, 226, 227, 228, 228, 228, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 225, 226, 228, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 0, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216 } ; static yyconst flex_int16_t yy_nxt[517] = { 0, 22, 23, 24, 25, 22, 22, 22, 22, 26, 27, 28, 29, 30, 22, 22, 31, 32, 33, 34, 35, 36, 37, 38, 22, 39, 40, 41, 42, 43, 44, 22, 45, 46, 22, 22, 22, 22, 22, 23, 24, 25, 22, 215, 22, 22, 26, 27, 28, 29, 30, 22, 23, 24, 25, 22, 214, 22, 22, 26, 27, 28, 29, 30, 48, 213, 76, 22, 22, 22, 22, 22, 22, 22, 22, 212, 22, 22, 22, 22, 22, 22, 77, 22, 22, 22, 23, 24, 25, 22, 22, 22, 22, 49, 50, 28, 29, 22, 132, 22, 22, 23, 24, 25, 22, 22, 22, 22, 49, 50, 28, 29, 22, 133, 22, 52, 53, 52, 53, 22, 211, 22, 54, 55, 54, 55, 22, 210, 22, 57, 58, 59, 74, 75, 75, 209, 60, 61, 62, 29, 57, 58, 59, 74, 75, 75, 208, 60, 61, 62, 29, 64, 65, 66, 74, 97, 97, 207, 67, 68, 69, 29, 64, 65, 66, 74, 97, 97, 206, 67, 68, 69, 29, 22, 23, 24, 25, 22, 22, 22, 22, 26, 27, 28, 29, 22, 22, 23, 24, 25, 22, 22, 22, 22, 26, 27, 28, 29, 22, 22, 23, 24, 25, 22, 205, 22, 22, 72, 73, 28, 29, 22, 22, 23, 24, 25, 22, 204, 22, 22, 72, 73, 28, 29, 22, 80, 85, 93, 203, 81, 86, 94, 74, 99, 99, 74, 99, 99, 100, 101, 101, 100, 101, 101, 103, 104, 104, 103, 104, 104, 106, 107, 107, 106, 107, 107, 110, 111, 111, 110, 111, 111, 112, 112, 112, 74, 75, 75, 118, 126, 74, 97, 97, 127, 119, 74, 99, 99, 136, 136, 136, 100, 101, 101, 137, 137, 137, 103, 104, 104, 138, 138, 138, 106, 107, 107, 139, 139, 139, 110, 111, 111, 112, 112, 112, 136, 136, 136, 137, 137, 137, 138, 138, 138, 139, 139, 139, 165, 202, 201, 200, 166, 47, 47, 47, 47, 47, 47, 47, 51, 51, 51, 51, 51, 51, 51, 56, 56, 56, 56, 56, 56, 56, 63, 63, 63, 63, 63, 63, 63, 70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 96, 96, 96, 96, 199, 96, 98, 98, 102, 102, 102, 102, 102, 198, 102, 105, 105, 105, 105, 105, 197, 105, 108, 196, 108, 109, 109, 109, 195, 109, 194, 193, 192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 141, 140, 216, 135, 134, 131, 130, 129, 128, 125, 124, 123, 122, 121, 120, 117, 116, 115, 114, 113, 216, 95, 92, 91, 90, 89, 88, 87, 84, 83, 82, 79, 78, 216, 21, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216 } ; static yyconst flex_int16_t yy_chk[517] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 213, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 212, 4, 4, 4, 4, 4, 4, 4, 5, 211, 31, 5, 5, 5, 5, 5, 5, 5, 5, 210, 5, 5, 5, 5, 5, 5, 31, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 93, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 93, 8, 9, 9, 10, 10, 9, 207, 10, 11, 11, 12, 12, 11, 206, 12, 13, 13, 13, 26, 26, 26, 205, 13, 13, 13, 13, 14, 14, 14, 27, 27, 27, 203, 14, 14, 14, 14, 15, 15, 15, 49, 49, 49, 199, 15, 15, 15, 15, 16, 16, 16, 50, 50, 50, 198, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 197, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 196, 20, 20, 20, 20, 20, 20, 20, 34, 38, 45, 195, 34, 38, 45, 52, 52, 52, 53, 53, 53, 54, 54, 54, 55, 55, 55, 60, 60, 60, 61, 61, 61, 67, 67, 67, 68, 68, 68, 72, 72, 72, 73, 73, 73, 74, 74, 74, 75, 75, 75, 81, 88, 97, 97, 97, 88, 81, 99, 99, 99, 100, 100, 100, 101, 101, 101, 103, 103, 103, 104, 104, 104, 106, 106, 106, 107, 107, 107, 110, 110, 110, 111, 111, 111, 112, 112, 112, 136, 136, 136, 137, 137, 137, 138, 138, 138, 139, 139, 139, 143, 194, 192, 191, 143, 217, 217, 217, 217, 217, 217, 217, 218, 218, 218, 218, 218, 218, 218, 219, 219, 219, 219, 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 221, 221, 221, 221, 221, 221, 221, 222, 222, 222, 222, 222, 222, 222, 223, 223, 223, 223, 189, 223, 224, 224, 225, 225, 225, 225, 225, 188, 225, 226, 226, 226, 226, 226, 187, 226, 227, 186, 227, 228, 228, 228, 184, 228, 183, 182, 181, 178, 177, 175, 173, 171, 169, 168, 167, 166, 165, 164, 163, 162, 160, 159, 158, 157, 156, 154, 153, 150, 149, 148, 147, 145, 142, 141, 140, 135, 134, 133, 132, 131, 130, 129, 128, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113, 98, 95, 94, 92, 91, 90, 89, 87, 86, 85, 84, 83, 82, 80, 79, 78, 77, 76, 51, 46, 44, 43, 42, 41, 40, 39, 37, 36, 35, 33, 32, 21, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216, 216 } ; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET #line 1 "/home/esr/public_html/cvs-fast-export//lex.l" #line 2 "/home/esr/public_html/cvs-fast-export//lex.l" /* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #include "cvs.h" #include "gram.h" /* lex.h should declare these, and does, in 2.5.39. But didn't, in 2.5.35. */ int yyget_column (yyscan_t); void yyset_column(int,yyscan_t); static char * parse_data(yyscan_t scanner); static void parse_text(cvs_text *text, yyscan_t scanner, cvs_file *); static char * parse_data_until_newline(yyscan_t scanner); static void fast_export_sanitize(yyscan_t scanner, cvs_file *cvs); /* * A relative of export.c's optimization, we can use unlocked getc * in the body of the lexer, because the FILE pointers returned by yyget_in() * are all private to the invoking thread. */ #ifdef __GLIBC__ #undef getc #define getc getc_unlocked #endif /* __GLIBC__ */ /* FIXME: this is inefficient */ #define YY_INPUT(buf,result,max_size) { \ int c = getc(yyget_in(yyscanner)); \ result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \ } YY_DECL; #line 669 "lex.c" #define INITIAL 0 #define CONTENT 1 #define SKIP 2 #define COMMIT 3 #define PERM 4 #define REVISION 5 #define FNAME 6 #define SKIPTOSEMI 7 #define ACCESSS 8 #define AUTHORSS 9 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif /* Holds the entire state of the reentrant scanner. */ struct yyguts_t { /* User-defined. Not touched by flex. */ YY_EXTRA_TYPE yyextra_r; /* The rest are the same as the globals declared in the non-reentrant scanner. */ FILE *yyin_r, *yyout_r; size_t yy_buffer_stack_top; /**< index of top of stack. */ size_t yy_buffer_stack_max; /**< capacity of stack. */ YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ char yy_hold_char; yy_size_t yy_n_chars; yy_size_t yyleng_r; char *yy_c_buf_p; int yy_init; int yy_start; int yy_did_buffer_switch_on_eof; int yy_start_stack_ptr; int yy_start_stack_depth; int *yy_start_stack; yy_state_type yy_last_accepting_state; char* yy_last_accepting_cpos; int yylineno_r; int yy_flex_debug_r; char *yytext_r; int yy_more_flag; int yy_more_len; YYSTYPE * yylval_r; }; /* end struct yyguts_t */ static int yy_init_globals (yyscan_t yyscanner ); /* This must go here because YYSTYPE and YYLTYPE are included * from bison output in section 1.*/ # define yylval yyg->yylval_r int yylex_init (yyscan_t* scanner); int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy (yyscan_t yyscanner ); void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *yyget_in (yyscan_t yyscanner ); void yyset_in (FILE * in_str ,yyscan_t yyscanner ); char *yyget_text (yyscan_t yyscanner ); int yyget_lineno (yyscan_t yyscanner ); int yyget_column (yyscan_t yyscanner ); void yyset_column (int column_no ,yyscan_t yyscanner ); void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap (yyscan_t yyscanner ); #else extern int yywrap (yyscan_t yyscanner ); #endif #endif static void yyunput (int c,char *buf_ptr ,yyscan_t yyscanner); #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner ); #else static int input (yyscan_t yyscanner ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define YY_READ_BUF_SIZE 16384 #else #define YY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex \ (YYSTYPE * yylval_param ,yyscan_t yyscanner); #define YY_DECL int yylex \ (YYSTYPE * yylval_param , yyscan_t yyscanner) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yylval = yylval_param; if ( !yyg->yy_init ) { yyg->yy_init = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! yyg->yy_start ) yyg->yy_start = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } yy_load_buffer_state(yyscanner ); } { #line 50 "/home/esr/public_html/cvs-fast-export//lex.l" #line 935 "lex.c" while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = yyg->yy_c_buf_p; /* Support of yytext. */ *yy_cp = yyg->yy_hold_char; /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = yyg->yy_start; yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 217 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 479 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = yyg->yy_hold_char; yy_cp = yyg->yy_last_accepting_cpos; yy_current_state = yyg->yy_last_accepting_state; goto yy_find_action; case 1: YY_RULE_SETUP #line 51 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(CONTENT); return HEAD; YY_BREAK case 2: YY_RULE_SETUP #line 52 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(CONTENT); return BRANCH; YY_BREAK case 3: YY_RULE_SETUP #line 53 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(ACCESSS); return ACCESS; YY_BREAK case 4: YY_RULE_SETUP #line 54 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(CONTENT); return SYMBOLS; YY_BREAK case 5: YY_RULE_SETUP #line 55 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(CONTENT); return LOCKS; YY_BREAK case 6: YY_RULE_SETUP #line 56 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(CONTENT); return COMMENT; YY_BREAK case 7: YY_RULE_SETUP #line 57 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(CONTENT); return EXPAND; YY_BREAK case 8: YY_RULE_SETUP #line 58 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(CONTENT); return DATE; YY_BREAK case 9: YY_RULE_SETUP #line 59 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(CONTENT); return BRANCHES; YY_BREAK case 10: YY_RULE_SETUP #line 60 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(CONTENT); return NEXT; YY_BREAK case 11: YY_RULE_SETUP #line 61 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(COMMIT); return COMMITID; YY_BREAK case 12: YY_RULE_SETUP #line 62 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(CONTENT); return STRICT; YY_BREAK case 13: YY_RULE_SETUP #line 63 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(AUTHORSS); return AUTHOR; YY_BREAK case 14: YY_RULE_SETUP #line 64 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(CONTENT); return STATE; YY_BREAK case 15: YY_RULE_SETUP #line 65 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(CONTENT); return DELTATYPE; YY_BREAK case 16: YY_RULE_SETUP #line 66 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(PERM); return GROUP; YY_BREAK case 17: YY_RULE_SETUP #line 67 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(SKIPTOSEMI); return KOPT; YY_BREAK case 18: YY_RULE_SETUP #line 68 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(PERM); return OWNER; YY_BREAK case 19: YY_RULE_SETUP #line 69 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(PERM); return PERMISSIONS; YY_BREAK case 20: YY_RULE_SETUP #line 70 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(FNAME); return FILENAME; YY_BREAK case 21: YY_RULE_SETUP #line 71 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(REVISION); return MERGEPOINT; YY_BREAK case 22: YY_RULE_SETUP #line 72 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(SKIPTOSEMI); return HARDLINKS; YY_BREAK case 23: YY_RULE_SETUP #line 73 "/home/esr/public_html/cvs-fast-export//lex.l" return DESC; YY_BREAK case 24: YY_RULE_SETUP #line 74 "/home/esr/public_html/cvs-fast-export//lex.l" return LOG; YY_BREAK case 25: YY_RULE_SETUP #line 75 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(SKIP); return TEXT; YY_BREAK case 26: YY_RULE_SETUP #line 76 "/home/esr/public_html/cvs-fast-export//lex.l" { parse_text(&yylval->text, yyscanner, cvs); BEGIN(INITIAL); return TEXT_DATA; } YY_BREAK case 27: YY_RULE_SETUP #line 81 "/home/esr/public_html/cvs-fast-export//lex.l" { fast_export_sanitize(yyscanner, cvs); yylval->atom = atom(yytext); return TOKEN; } YY_BREAK case 28: YY_RULE_SETUP #line 86 "/home/esr/public_html/cvs-fast-export//lex.l" { return LOGIN; } YY_BREAK case 29: YY_RULE_SETUP #line 89 "/home/esr/public_html/cvs-fast-export//lex.l" { fast_export_sanitize(yyscanner, cvs); yylval->atom = atom(yytext); return TOKEN; } YY_BREAK case 30: YY_RULE_SETUP #line 94 "/home/esr/public_html/cvs-fast-export//lex.l" { return IGNORED; } YY_BREAK case 31: YY_RULE_SETUP #line 97 "/home/esr/public_html/cvs-fast-export//lex.l" { yylval->atom = atom(yytext); return TOKEN; } YY_BREAK case 32: YY_RULE_SETUP #line 101 "/home/esr/public_html/cvs-fast-export//lex.l" { yylval->number = lex_number(yytext); return NUMBER; } YY_BREAK case 33: /* rule 33 can match eol */ YY_RULE_SETUP #line 105 "/home/esr/public_html/cvs-fast-export//lex.l" { return IGNORED; } YY_BREAK case 34: YY_RULE_SETUP #line 108 "/home/esr/public_html/cvs-fast-export//lex.l" { yylval->number = lex_number(yytext); return NUMBER; } YY_BREAK case 35: YY_RULE_SETUP #line 112 "/home/esr/public_html/cvs-fast-export//lex.l" BEGIN(INITIAL); return SEMI; YY_BREAK case 36: YY_RULE_SETUP #line 113 "/home/esr/public_html/cvs-fast-export//lex.l" return COLON; YY_BREAK case 37: /* rule 37 can match eol */ YY_RULE_SETUP #line 114 "/home/esr/public_html/cvs-fast-export//lex.l" { #ifdef __UNUSED__ /* * If we ever need the data from the kopt * or hardlinks clause, * (1) Condition in this. * (2) Condition in the definition of * parse_data_until_newline() below. * (3) Change IGNORED to DATA * (4) Make the corresponding change * in the grammar file. * Renember, parse_data_until_newline() * returns allocated storage. */ yylval->s = parse_data_until_newline(yyscanner); return DATA; #else return IGNORED; #endif /* __UNUSED__ */ } YY_BREAK case 38: YY_RULE_SETUP #line 135 "/home/esr/public_html/cvs-fast-export//lex.l" { yylval->s = parse_data(yyscanner); return DATA; } YY_BREAK case 39: YY_RULE_SETUP #line 139 "/home/esr/public_html/cvs-fast-export//lex.l" ; YY_BREAK case 40: YY_RULE_SETUP #line 140 "/home/esr/public_html/cvs-fast-export//lex.l" ; YY_BREAK case 41: /* rule 41 can match eol */ YY_RULE_SETUP #line 141 "/home/esr/public_html/cvs-fast-export//lex.l" ; YY_BREAK case 42: YY_RULE_SETUP #line 142 "/home/esr/public_html/cvs-fast-export//lex.l" return BRAINDAMAGED_NUMBER; YY_BREAK case 43: YY_RULE_SETUP #line 143 "/home/esr/public_html/cvs-fast-export//lex.l" { warn("%s: (%d) ignoring %c\n", cvs->gen.master_name, yylineno, yytext[0]); } YY_BREAK case 44: YY_RULE_SETUP #line 148 "/home/esr/public_html/cvs-fast-export//lex.l" YY_FATAL_ERROR( "flex scanner jammed" ); YY_BREAK #line 1269 "lex.c" case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(CONTENT): case YY_STATE_EOF(SKIP): case YY_STATE_EOF(COMMIT): case YY_STATE_EOF(PERM): case YY_STATE_EOF(REVISION): case YY_STATE_EOF(FNAME): case YY_STATE_EOF(SKIPTOSEMI): case YY_STATE_EOF(ACCESSS): case YY_STATE_EOF(AUTHORSS): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = yyg->yy_hold_char; YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) { /* This was really a NUL. */ yy_state_type yy_next_state; yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++yyg->yy_c_buf_p; yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = yyg->yy_c_buf_p; goto yy_find_action; } } else switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_END_OF_FILE: { yyg->yy_did_buffer_switch_on_eof = 0; if ( yywrap(yyscanner ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: yyg->yy_c_buf_p = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; yy_current_state = yy_get_previous_state( yyscanner ); yy_cp = yyg->yy_c_buf_p; yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of user's declarations */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = yyg->yytext_ptr; register int number_to_move, i; int ret_val; if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; else { yy_size_t num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { yy_size_t new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), yyg->yy_n_chars, num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } if ( yyg->yy_n_chars == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart(yyin ,yyscanner); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } yyg->yy_n_chars += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (yyscan_t yyscanner) { register yy_state_type yy_current_state; register char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_current_state = yyg->yy_start; for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 217 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) { register int yy_is_jam; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ register char *yy_cp = yyg->yy_c_buf_p; register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { yyg->yy_last_accepting_state = yy_current_state; yyg->yy_last_accepting_cpos = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 217 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 216); (void)yyg; return yy_is_jam ? 0 : yy_current_state; } static void yyunput (int c, register char * yy_bp , yyscan_t yyscanner) { register char *yy_cp; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_cp = yyg->yy_c_buf_p; /* undo effects of setting up yytext */ *yy_cp = yyg->yy_hold_char; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ register yy_size_t number_to_move = yyg->yy_n_chars + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; yyg->yytext_ptr = yy_bp; yyg->yy_hold_char = *yy_cp; yyg->yy_c_buf_p = yy_cp; } #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (yyscan_t yyscanner) #else static int input (yyscan_t yyscanner) #endif { int c; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; *yyg->yy_c_buf_p = yyg->yy_hold_char; if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) /* This was really a NUL. */ *yyg->yy_c_buf_p = '\0'; else { /* need more input */ yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr; ++yyg->yy_c_buf_p; switch ( yy_get_next_buffer( yyscanner ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart(yyin ,yyscanner); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap(yyscanner ) ) return EOF; if ( ! yyg->yy_did_buffer_switch_on_eof ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(yyscanner); #else return input(yyscanner); #endif } case EOB_ACT_CONTINUE_SCAN: yyg->yy_c_buf_p = yyg->yytext_ptr + offset; break; } } } c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ yyg->yy_hold_char = *++yyg->yy_c_buf_p; return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * @param yyscanner The scanner object. * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (yyscanner); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); } yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); yy_load_buffer_state(yyscanner ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * @param yyscanner The scanner object. */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (yyscanner); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state(yyscanner ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ yyg->yy_did_buffer_switch_on_eof = 1; } static void yy_load_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; yyg->yy_hold_char = *yyg->yy_c_buf_p; } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * @param yyscanner The scanner object. * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ,yyscanner ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer(b,file ,yyscanner); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * @param yyscanner The scanner object. */ void yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree((void *) b->yy_ch_buf ,yyscanner ); yyfree((void *) b ,yyscanner ); } /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) { int oerrno = errno; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yy_flush_buffer(b ,yyscanner); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * @param yyscanner The scanner object. */ void yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state(yyscanner ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * @param yyscanner The scanner object. */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (new_buffer == NULL) return; yyensure_buffer_stack(yyscanner); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *yyg->yy_c_buf_p = yyg->yy_hold_char; YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) yyg->yy_buffer_stack_top++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * @param yyscanner The scanner object. */ void yypop_buffer_state (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); YY_CURRENT_BUFFER_LVALUE = NULL; if (yyg->yy_buffer_stack_top > 0) --yyg->yy_buffer_stack_top; if (YY_CURRENT_BUFFER) { yy_load_buffer_state(yyscanner ); yyg->yy_did_buffer_switch_on_eof = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (yyscan_t yyscanner) { yy_size_t num_to_alloc; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (!yyg->yy_buffer_stack) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; yyg->yy_buffer_stack = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; yyg->yy_buffer_stack_top = 0; return; } if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = yyg->yy_buffer_stack_max + grow_size; yyg->yy_buffer_stack = (struct yy_buffer_state**)yyrealloc (yyg->yy_buffer_stack, num_to_alloc * sizeof(struct yy_buffer_state*) , yyscanner); if ( ! yyg->yy_buffer_stack ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); yyg->yy_buffer_stack_max = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer(b ,yyscanner ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * @param yyscanner The scanner object. * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) { return yy_scan_bytes(yystr,strlen(yystr) ,yyscanner); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param yybytes the byte buffer to scan * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner) { YY_BUFFER_STATE b; char *buf; yy_size_t n; yy_size_t i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) yyalloc(n ,yyscanner ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer(buf,n ,yyscanner); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = yyg->yy_hold_char; \ yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ yyg->yy_hold_char = *yyg->yy_c_buf_p; \ *yyg->yy_c_buf_p = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * @param yyscanner The scanner object. */ int yyget_lineno (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yylineno; } /** Get the current column number. * @param yyscanner The scanner object. */ int yyget_column (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; if (! YY_CURRENT_BUFFER) return 0; return yycolumn; } /** Get the input stream. * @param yyscanner The scanner object. */ FILE *yyget_in (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yyin; } /** Get the current token. * @param yyscanner The scanner object. */ char *yyget_text (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; return yytext; } /** Set the user-defined data. This data is never touched by the scanner. * @param user_defined The data to be associated with this scanner. * @param yyscanner The scanner object. */ void yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyextra = user_defined ; } /** Set the current column. * @param line_number * @param yyscanner The scanner object. */ void yyset_column (int column_no , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* column is only valid if an input buffer exists. */ if (! YY_CURRENT_BUFFER ) YY_FATAL_ERROR( "yyset_column called with no buffer" ); yycolumn = column_no; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * @param yyscanner The scanner object. * @see yy_switch_to_buffer */ void yyset_in (FILE * in_str , yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; yyin = in_str ; } /* Accessor methods for yylval and yylloc */ /* User-visible API */ /* yylex_init is special because it creates the scanner itself, so it is * the ONLY reentrant function that doesn't take the scanner as the last argument. * That's why we explicitly handle the declaration, instead of using our macros. */ int yylex_init(yyscan_t* ptr_yy_globals) { if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), NULL ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); return yy_init_globals ( *ptr_yy_globals ); } /* yylex_init_extra has the same functionality as yylex_init, but follows the * convention of taking the scanner as the last argument. Note however, that * this is a *pointer* to a scanner, as it will be allocated by this call (and * is the reason, too, why this function also must handle its own declaration). * The user defined value in the first argument will be available to yyalloc in * the yyextra field. */ int yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) { struct yyguts_t dummy_yyguts; yyset_extra (yy_user_defined, &dummy_yyguts); if (ptr_yy_globals == NULL){ errno = EINVAL; return 1; } *ptr_yy_globals = (yyscan_t) yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); if (*ptr_yy_globals == NULL){ errno = ENOMEM; return 1; } /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); yyset_extra (yy_user_defined, *ptr_yy_globals); return yy_init_globals ( *ptr_yy_globals ); } static int yy_init_globals (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ yyg->yy_buffer_stack = 0; yyg->yy_buffer_stack_top = 0; yyg->yy_buffer_stack_max = 0; yyg->yy_c_buf_p = (char *) 0; yyg->yy_init = 0; yyg->yy_start = 0; yyg->yy_start_stack_ptr = 0; yyg->yy_start_stack_depth = 0; yyg->yy_start_stack = NULL; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = (FILE *) 0; yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (yyscan_t yyscanner) { struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(yyscanner); } /* Destroy the stack itself. */ yyfree(yyg->yy_buffer_stack ,yyscanner); yyg->yy_buffer_stack = NULL; /* Destroy the start condition stack. */ yyfree(yyg->yy_start_stack ,yyscanner ); yyg->yy_start_stack = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( yyscanner); /* Destroy the main struct (reentrant only). */ yyfree ( yyscanner , yyscanner ); yyscanner = NULL; return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size , yyscan_t yyscanner) { return (void *) malloc( size ); } void *yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } void yyfree (void * ptr , yyscan_t yyscanner) { free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 147 "/home/esr/public_html/cvs-fast-export//lex.l" /* * A variable-length buffer, allocated on the stack first * but can grow to use the heap. */ struct varbuf { int max, cur; char *string; char buf[1024]; }; static void varbuf_init(struct varbuf *buf) { buf->max = sizeof buf->buf; buf->cur = 0; buf->string = buf->buf; } static void varbuf_add(struct varbuf *buf, char c) { if (buf->cur == buf->max) { if (buf->string == buf->buf) { buf->max *= 2; buf->string = xmalloc(buf->max, __func__); memcpy(buf->string, buf->buf, buf->cur); } else { buf->max *= 2; buf->string = xrealloc(buf->string, buf->max, __func__); } } buf->string[buf->cur++] = c; } static void varbuf_free(struct varbuf *buf) { if (buf->string != buf->buf) { free(buf->string); } } static char *varbuf_dup(struct varbuf *buf, const char *legend) { char *dup = xmalloc(buf->cur, legend); memcpy(dup, buf->string, buf->cur); return dup; } static char * parse_data(yyscan_t yyscanner) { int c; char *ret; struct varbuf buf; varbuf_init(&buf); for(;;) { c = getc(yyget_in(yyscanner)); if (c == '@') { c = getc (yyget_in(yyscanner)); if (c != '@') break; } varbuf_add(&buf, c); } ungetc(c, yyget_in(yyscanner)); varbuf_add(&buf, '\0'); ret = varbuf_dup(&buf, "parse_data"); varbuf_free(&buf); return ret; } static void parse_text(cvs_text *text, yyscan_t yyscanner, cvs_file *cvs) { int c; size_t length; text->filename = cvs->gen.master_name; text->offset = ftell(yyget_in(yyscanner)) - 1; length = 1; while ((c = getc(yyget_in(yyscanner))) != EOF) { ++length; if (c == '@') { /* lookahead to see if we hit @@ */ c = getc(yyget_in(yyscanner)); if (c == '@') { ++length; } else { /* We consume only the closing single @, * leaving it included in the length */ ungetc(c, yyget_in(yyscanner)); break; } } } text->length = length; } #ifdef __UNUSED__ static char * parse_data_until_newline(yyscan_t yyscanner) { int c; char *ret; struct varbuf buf; varbuf_init(&buf); for(;;) { c = getc(yyget_in(yyscanner)); if (c == '\n') { break; } varbuf_add(&buf, c); } ungetc(c, yyget_in(yyscanner)); varbuf_add(&buf, '\0'); ret = varbuf_dup(&buf, "parse_data_until_newline"); varbuf_free(&buf); return ret; } #endif /* __UNUSED__ */ cvs_number lex_number(const char *s) { cvs_number n; const char *next; n.c = 0; while (*s) { n.n[n.c] = (int)strtol(s, (char **)&next, 10); if (next == s) break; if (*next == '.') next++; s = next; if (n.c > CVS_MAX_DEPTH) fatal_error("revision too long, increase CVS_MAX_DEPTH"); n.c++; } return n; } cvstime_t lex_date(const cvs_number* const n, yyscan_t yyscanner, cvs_file *cvs) { struct tm tm; time_t d; tm.tm_year = n->n[0]; if (tm.tm_year > 1900) tm.tm_year -= 1900; tm.tm_mon = n->n[1] - 1; tm.tm_mday = n->n[2]; tm.tm_hour = n->n[3]; tm.tm_min = n->n[4]; tm.tm_sec = n->n[5]; tm.tm_isdst = 0; #ifndef __CYGWIN__ tm.tm_zone = 0; #endif d = mktime(&tm); if (d == 0) { int i; fprintf(stderr, "%s: (%d) unparsable date: ", cvs->gen.master_name, yyget_lineno(yyscanner)); for (i = 0; i < n->c; i++) { if (i) fprintf(stderr, "."); fprintf(stderr, "%d", n->n[i]); } fprintf(stderr, "\n"); } if (d < RCS_EPOCH) fatal_error("%s: (%d) date before RCS epoch: ", cvs->gen.master_name, yyget_lineno(yyscanner)); else if (d >= RCS_OMEGA) fatal_error("%s: (%d) date too far in future: ", cvs->gen.master_name, yyget_lineno(yyscanner)); return d - RCS_EPOCH; } static void fast_export_sanitize(yyscan_t yyscanner, cvs_file *cvs) { char *sp, *tp; #define SUFFIX(a, s) (strcmp(a + strlen(a) - strlen(s), s) == 0) #define BADCHARS "~^\\*?" for (sp = tp = yyget_text(yyscanner); *sp; sp++) { if (isgraph((unsigned char)*sp) && strchr(BADCHARS, *sp) == NULL) { *tp++ = *sp; if (SUFFIX(yyget_text(yyscanner), "@{") || SUFFIX(yyget_text(yyscanner), "..")) { fatal_error("%s: (%d) tag or branch name %s is ill-formed.\n", cvs->gen.master_name, yyget_lineno(yyscanner), yyget_text(yyscanner)); } } } *tp = '\0'; if (strlen(yyget_text(yyscanner)) == 0) { fatal_error("%s: (%d) tag or branch name was empty after sanitization.\n", cvs->gen.master_name, yyget_lineno(yyscanner)); } } cvs-fast-export-1.35/lex.h0000664000175000017500000002045412624616010013621 0ustar esresr#ifndef yyHEADER_H #define yyHEADER_H 1 #define yyIN_HEADER 1 #line 6 "lex.h" #line 8 "lex.h" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 39 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! C99 */ #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* An opaque pointer. */ #ifndef YY_TYPEDEF_YY_SCANNER_T #define YY_TYPEDEF_YY_SCANNER_T typedef void* yyscan_t; #endif /* For convenience, these vars (plus the bison vars far below) are macros in the reentrant scanner. */ #define yyin yyg->yyin_r #define yyout yyg->yyout_r #define yyextra yyg->yyextra_r #define yyleng yyg->yyleng_r #define yytext yyg->yytext_r #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) #define yy_flex_debug yyg->yy_flex_debug_r /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k. * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. * Ditto for the __ia64__ case accordingly. */ #define YY_BUF_SIZE 32768 #else #define YY_BUF_SIZE 16384 #endif /* __ia64__ */ #endif #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ yy_size_t yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ void yyrestart (FILE *input_file ,yyscan_t yyscanner ); void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); void yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); void yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); void yypop_buffer_state (yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner ); void *yyalloc (yy_size_t ,yyscan_t yyscanner ); void *yyrealloc (void *,yy_size_t ,yyscan_t yyscanner ); void yyfree (void * ,yyscan_t yyscanner ); /* Begin user sect3 */ #define yywrap(yyscanner) 1 #define YY_SKIP_YYWRAP #define yytext_ptr yytext_r #ifdef YY_HEADER_EXPORT_START_CONDITIONS #define INITIAL 0 #define CONTENT 1 #define SKIP 2 #define COMMIT 3 #define PERM 4 #define REVISION 5 #define FNAME 6 #define SKIPTOSEMI 7 #define ACCESSS 8 #define AUTHORSS 9 #endif #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif int yylex_init (yyscan_t* scanner); int yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy (yyscan_t yyscanner ); void yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); FILE *yyget_in (yyscan_t yyscanner ); void yyset_in (FILE * in_str ,yyscan_t yyscanner ); char *yyget_text (yyscan_t yyscanner ); int yyget_lineno (yyscan_t yyscanner ); int yyget_column (yyscan_t yyscanner ); void yyset_column (int column_no ,yyscan_t yyscanner ); void yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap (yyscan_t yyscanner ); #else extern int yywrap (yyscan_t yyscanner ); #endif #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); #endif #ifndef YY_NO_INPUT #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #ifdef __ia64__ /* On IA-64, the buffer size is 16k, not 8k */ #define YY_READ_BUF_SIZE 16384 #else #define YY_READ_BUF_SIZE 8192 #endif /* __ia64__ */ #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex \ (YYSTYPE * yylval_param ,yyscan_t yyscanner); #define YY_DECL int yylex \ (YYSTYPE * yylval_param , yyscan_t yyscanner) #endif /* !YY_DECL */ /* yy_get_previous_state - get the state just before the EOB char was reached */ #undef YY_NEW_FILE #undef YY_FLUSH_BUFFER #undef yy_set_bol #undef yy_new_buffer #undef yy_set_interactive #undef YY_DO_BEFORE_ACTION #ifdef YY_DECL_IS_OURS #undef YY_DECL_IS_OURS #undef YY_DECL #endif #line 147 "/home/esr/public_html/cvs-fast-export//lex.l" #line 351 "lex.h" #undef yyIN_HEADER #endif /* yyHEADER_H */ cvs-fast-export-1.35/main.c0000664000175000017500000003134212624157451013757 0ustar esresr/* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #include "cvs.h" #include #include #include #include #include #include #include "revdir.h" #if defined(__GLIBC__) #include #endif /* __GLIBC__ */ /* options */ int commit_time_window = 300; bool progress = false; FILE *LOGFILE; #ifdef THREADS int threads = NO_MAX; #endif /* THREADS */ static import_options_t import_options = { .striplen = -1, }; static int get_int_substr(const char * str, const regmatch_t * p) { char buff[256]; if (p->rm_so == -1) return 0; if (p->rm_eo - p->rm_so >= sizeof(buff)) return 0; memcpy(buff, str + p->rm_so, p->rm_eo - p->rm_so); buff[p->rm_eo - p->rm_so] = 0; return atoi(buff); } static time_t mktime_utc(const struct tm * tm, const char* tzbuf) { /* coverity[tainted_string_return_content] */ char * old_tz = getenv("TZ"); time_t ret; setenv("TZ", tzbuf, 1); tzset(); ret = mktime((struct tm *)tm); if (old_tz) setenv("TZ", old_tz, 1); else unsetenv("TZ"); tzset(); return ret; } static time_t convert_date(const char *dte) /* accept a date in anything close to RFC3339 form */ { static regex_t date_re; static bool init_re; #define MAX_MATCH 16 size_t nmatch = MAX_MATCH; regmatch_t match[MAX_MATCH]; if (!init_re) { if (regcomp(&date_re, "([0-9]{4})[-/]([0-9]{2})[-/]([0-9]{2})[ T]([0-9]{2}):([0-9]{2}):([0-9]{2})( [-+][0-9]{4})?", REG_EXTENDED)) fatal_error("date regex compilation error\n"); init_re = true; } if (regexec(&date_re, dte, nmatch, match, 0) == 0) { regmatch_t * pm = match; struct tm tm = {0}; char tzbuf[32]; int offseth, offsetm; /* first regmatch_t is match location of entire re */ pm++; tm.tm_year = get_int_substr(dte, pm++); tm.tm_mon = get_int_substr(dte, pm++); tm.tm_mday = get_int_substr(dte, pm++); tm.tm_hour = get_int_substr(dte, pm++); tm.tm_min = get_int_substr(dte, pm++); tm.tm_sec = get_int_substr(dte, pm++); offseth = -get_int_substr(dte, pm++); offsetm = offseth % 100; if (offsetm < 0) offsetm *= -1; offseth /= 100; snprintf(tzbuf, sizeof(tzbuf), "UTC%+d:%d", offseth, offsetm); tm.tm_year -= 1900; tm.tm_mon--; return mktime_utc(&tm, tzbuf); } else { return atoi(dte); } } static void print_sizes(void) { printf("sizeof(char *) = %zu\n", sizeof(char *)); printf("sizeof(long) = %zu\n", sizeof(long)); printf("sizeof(int) = %zu\n", sizeof(int)); printf("sizeof(short) = %zu\n", sizeof(short)); printf("sizeof(mode_t) = %zu\n", sizeof(mode_t)); printf("sizeof(branchcount_t) = %zu\n", sizeof(branchcount_t)); printf("sizeof(cvstime_t) = %zu\n", sizeof(cvstime_t)); printf("sizeof(time_t) = %zu\n", sizeof(time_t)); printf("sizeof(cvs_number) = %zu\n", sizeof(cvs_number)); printf("sizeof(node_t) = %zu\n", sizeof(node_t)); printf("sizeof(cvs_symbol) = %zu\n", sizeof(cvs_symbol)); printf("sizeof(cvs_branch) = %zu\n", sizeof(cvs_branch)); printf("sizeof(cvs_version) = %zu\n", sizeof(cvs_version)); printf("sizeof(cvs_patch) = %zu\n", sizeof(cvs_patch)); printf("sizeof(nodehash_t) = %zu\n", sizeof(nodehash_t)); printf("sizeof(editbuffer_t) = %zu\n", sizeof(editbuffer_t)); printf("sizeof(cvs_file) = %zu\n", sizeof(cvs_file)); printf("sizeof(rev_master) = %zu\n", sizeof(rev_master)); printf("sizeof(revdir) = %zu\n", sizeof(revdir)); printf("sizeof(cvs_commit) = %zu\n", sizeof(cvs_commit)); printf("sizeof(git_commit) = %zu\n", sizeof(git_commit)); printf("sizeof(rev_ref) = %zu\n", sizeof(rev_ref)); printf("sizeof(rev_list) = %zu\n", sizeof(rev_list)); printf("sizeof(cvs_commit_list) = %zu\n", sizeof(cvs_commit_list)); printf("sizeof(rev_diff) = %zu\n", sizeof(rev_diff)); printf("sizeof(cvs_author) = %zu\n", sizeof(cvs_author)); printf("sizeof(chunk_t) = %zu\n", sizeof(chunk_t)); printf("sizeof(Tag) = %zu\n", sizeof(tag_t)); } struct checkpoint { const char *legend; struct timespec timespec; struct rusage rusage; }; static struct checkpoint checkpoints[5]; static int ncheckpoints; static void gather_stats(const char *legend) /* gather resource usage statistics */ { if (ncheckpoints >= sizeof(checkpoints)/sizeof(struct checkpoint)) { announce("cran out of statistics slots %s", legend); return; } checkpoints[ncheckpoints].legend = legend; (void)clock_gettime(CLOCK_REALTIME, &checkpoints[ncheckpoints].timespec); (void)getrusage(RUSAGE_SELF, &checkpoints[ncheckpoints].rusage); ncheckpoints++; } int main(int argc, char **argv) { typedef enum _execution_mode { ExecuteExport, ExecuteGraph, ExecuteAuthors, } execution_mode; execution_mode exec_mode = ExecuteExport; forest_t forest; export_options_t export_options = { .branch_prefix = "refs/heads/", .id_token_expand = EXPANDUNSPEC, }; export_stats_t export_stats; #if defined(__GLIBC__) /* * The default sbrk call grabs memory from the OS in 128kb chunks * for malloc. As we use up memory in prodigous amounts it is * better to grab it in bigger chunks, and make less calls to * sbrk. 16MB seems to be a decent value. */ mallopt(M_TOP_PAD,16*1024*1024); /* grab memory in 16MB chunks */ #endif /* __GLIBC__ */ clock_gettime(CLOCK_REALTIME, &export_options.start_time); memset(&export_stats, '\0', sizeof(export_stats_t)); /* force times using mktime to be interpreted in UTC */ setenv("TZ", "UTC", 1); LOGFILE = stderr; while (1) { static const struct option options[] = { { "help", 0, 0, 'h' }, { "version", 0, 0, 'V' }, { "verbose", 0, 0, 'v' }, { "quiet", 0, 0, 'q' }, { "commit-time-window", 1, 0, 'w' }, { "log", 1, 0, 'l' }, { "authormap", 1, 0, 'A' }, { "authorlist", 1, 0, 'a' }, { "revision-map", 1, 0, 'R' }, { "reposurgeon", 0, 0, 'r' }, { "graph", 0, 0, 'g' }, { "expand", 2, 0, 'k' }, { "remote", 1, 0, 'e' }, { "strip", 1, 0, 's' }, { "progress", 0, 0, 'p' }, { "promiscuous", 0, 0, 'P' }, { "incremental", 1, 0, 'i' }, { "threads", 0, 0, 't' }, { "canonical", 0, 0, 'C' }, { "fast", 0, 0, 'F' }, { "embed-id", 0, 0, 'E' }, { "sizes", 0, 0, 'S' }, /* undocumented */ { NULL, 0, 0, '\0'}, }; int c = getopt_long(argc, argv, "+hVw:l:grvqaA:R:Tk:e:s:pPi:t:CFSE", options, NULL); if (c < 0) break; switch(c) { case 'h': printf("Usage: cvs-fast-export [OPTIONS] [FILE]...\n" "Parse RCS files and emit a fast-import stream.\n\n" "Mandatory arguments to long options are mandatory for short options too.\n" " -h --help This help\n" " -g --graph Dump the commit graph\n" " -k --expand Enable keyword expansion\n" " -V --version Print version\n" " -w --commit-time-window=WINDOW Time window for commits(seconds)\n" " -a --authorlist Report committer IDs from repository\n" " -A --authormap Author map file\n" " -R --revision-map Revision map file\n" " -r --reposurgeon Issue cvs-revision properties\n" " -T Force deterministic dates\n" " -e --remote Relocate branches to refs/remotes/REMOTE\n" " -s --strip Strip the given prefix instead of longest common prefix\n" " -p --progress Enable load-status reporting\n" " -P --promiscuous Process files without ,v extension\n" " -v --verbose Show verbose progress messages\n" " -q --quiet Suppress normal warnings\n" " -i --incremental TIME Incremental dump beginning after specified RFC3339-format time.\n" " -t --threads N Use threaded scheduler for CVS master analyses.\n" " -E --embed-id Embed CVS revisions in the commit messages.\n" "\n" "Example: find | cvs-fast-export\n"); return 0; case 'g': exec_mode = ExecuteGraph; break; case 'P': import_options.promiscuous = true; break; case 'k': export_options.id_token_expand = expand_override(optarg); break; case 'v': import_options.verbose++; #ifdef YYDEBUG extern int yydebug; yydebug = 1; #endif /* YYDEBUG */ break; case 'q': nowarn = true; break; case 'V': printf("%s: version " VERSION "\n", argv[0]); return 0; case 'w': assert(optarg); commit_time_window = atoi(optarg); break; case 'l': assert(optarg); LOGFILE = fopen(optarg, "w"); break; case 'a': exec_mode = ExecuteAuthors; break; case 'A': assert(optarg); load_author_map(optarg); break; case 'R': assert(optarg); export_options.revision_map = fopen(optarg, "w"); if (export_options.revision_map == NULL) fatal_error("cannot open %s for revision-map write", optarg); break; case 'r': export_options.reposurgeon = true; break; case 'E': export_options.embed_ids = true; break; case 'T': export_options.force_dates = true; break; case 'e': assert(optarg); export_options.branch_prefix = (char*)xmalloc(strlen(optarg)+15, __func__); sprintf(export_options.branch_prefix, "refs/remotes/%s/", optarg); break; case 's': assert(optarg); import_options.striplen = strlen(optarg) + 1; break; case 'p': progress = true; break; case 'i': assert(optarg); export_options.fromtime = convert_date(optarg); break; case 't': #ifdef THREADS assert(optarg); threads = atoi(optarg); #else announce("not built with thread support, -t option ignored.\n"); #endif break; case 'C': export_options.reportmode = canonical; break; case 'F': export_options.reportmode = fast; break; case 'S': print_sizes(); return 0; default: /* error message already emitted */ announce("try `%s --help' for more information.\n", argv[0]); return 1; } } if (export_options.reposurgeon) { if (export_options.embed_ids) fatal_error("The options --reposurgeon and --embed-id cannot be combined.\n"); } argv[optind-1] = argv[0]; argv += optind-1; argc -= optind-1; #ifdef THREADS #ifdef _SC_NPROCESSORS_ONLN if (threads == NO_MAX) threads = 2 * sysconf(_SC_NPROCESSORS_ONLN); #endif /* _SC_NPROCESSORS_ONLN */ #endif gather_stats("before parsing"); /* build CVS structures by parsing masters; may read stdin */ analyze_masters(argc, argv, &import_options, &forest); gather_stats("after parsing"); /* commit set coalescence happens here */ forest.git = merge_to_changesets(forest.cvs, forest.filecount, import_options.verbose); gather_stats("after branch merge"); /* report on the DAG */ if (forest.git) { switch(exec_mode) { case ExecuteGraph: dump_rev_graph(forest.git, NULL); break; case ExecuteAuthors: export_authors(&forest, &export_options); break; case ExecuteExport: export_commits(&forest, &export_options, &export_stats); if (export_options.revision_map != NULL) fclose(export_options.revision_map); break; } } gather_stats("total"); if (progress) { float elapsed; struct checkpoint *chp; for (chp = checkpoints+1; chp < checkpoints + ncheckpoints; chp++) fprintf(STATUS, "%20s:\t%.3f\t%ldKB\n", chp->legend, seconds_diff(&chp->timespec, &checkpoints[0].timespec), chp->rusage.ru_maxrss - checkpoints[0].rusage.ru_maxrss); elapsed = seconds_diff(&checkpoints[ncheckpoints-1].timespec, &checkpoints[0].timespec); fprintf(STATUS, "%ld commits/%.3fM text, %u atoms at %d commits/sec.\n", export_stats.export_total_commits, export_stats.snapsize / 1000000.0, natoms, (int)(export_stats.export_total_commits / elapsed)); } if (LOGFILE != stderr) { if (warncount > 0) fprintf(STATUS, "cvs-fast-export: %u warning(s).\n", warncount); fclose(LOGFILE); } discard_atoms(); discard_tags(); revdir_free(); free_author_map(); return forest.errcount > 0; } /* end */ cvs-fast-export-1.35/merge.c0000644000175000017500000011241712624620165014130 0ustar esresr/* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #include "cvs.h" #include "revdir.h" /* * These functions analyze a CVS revlist into a changeset DAG. * * merge_to_changesets() is the main function. */ /* * Pack the dead flag into the commit pointer so we can avoid dereferencing * in the inner loop. Also keep the dir near the packed pointer * as it is used in the inner loop. */ typedef struct _revision { /* packed commit pointer and dead flag */ uintptr_t packed; const master_dir *dir; } revision_t; /* * Once set, dir doesn't change, so have an initial pack that sets dir * and a later pack that doesn't */ #define REVISION_T_PACK(rev, commit) (rev).packed = ((uintptr_t)(commit) | ((commit) ? ((commit)->dead) : 0)) #define REVISION_T_PACK_INIT(rev, commit) do { \ REVISION_T_PACK(rev, commit); \ (rev).dir = (commit)->master->dir; \ } while (0) #define REVISION_T_DEAD(rev) (((rev).packed) & 1) #define COMMIT_MASK (~(uintptr_t)0 ^ 1) #define REVISION_T_COMMIT(rev) (cvs_commit *)(((rev).packed) & (COMMIT_MASK)) /* * Be aware using these macros that they bind to whatever revisions array * is in scope */ #define DEAD(index) (REVISION_T_DEAD(revisions[(index)])) #define REVISIONS(index) (REVISION_T_COMMIT(revisions[(index)])) #define DIR(index) (revisions[(index)].dir) static rev_ref * rev_find_head(head_list *rl, const char *name) /* find a named branch head in a revlist - used on both CVS and gitspace sides */ { rev_ref *h; for (h = rl->heads; h; h = h->next) if (h->ref_name == name) return h; return NULL; } static rev_ref * rev_ref_find_name(rev_ref *h, const char *name) /* find a revision reference by name */ { for (; h; h = h->next) if (h->ref_name == name) return h; return NULL; } static bool parents_in_revlist(const char *child_name, rev_ref *rev_list, cvs_master *source, size_t nsource) /* * See whether all the parents of child_name are in rev_list * If child_name has no parents (e.g. master branch) then this is * trivally true. * * Parent branch names are determined by examining every cvs master. See the * general note on branch matching under merge_changesets(). */ { cvs_master *cm; for (cm = source; cm < source + nsource; cm++) { rev_ref *head = rev_find_head(cm, child_name); if (head) { if (head->parent && !rev_ref_find_name(rev_list, head->parent->ref_name)) return false; } } return true; } static rev_ref * rev_ref_tsort(rev_ref *git_branches, cvs_master *masters, size_t nmasters) /* Sort a list of git space branches so parents come before children */ { rev_ref *sorted_git_branches = NULL; rev_ref **sorted_tail = &sorted_git_branches; rev_ref *r, **prev; while (git_branches) { /* search the remaining input list */ for (prev = &git_branches; (r = *prev); prev = &(*prev)->next) { /* * Find a branch where we've already sorted its parents. * Toposorting with this relation will put the (parentless) trunk first, * and child branches after their respective parent branches. */ if (parents_in_revlist(r->ref_name, sorted_git_branches, masters, nmasters)) { break; } } if (!r) { announce("internal error - branch cycle\n"); return NULL; } /* * Remove the found branch from the input list and * append it to the output list */ *prev = r->next; *sorted_tail = r; r->next = NULL; sorted_tail = &r->next; } return sorted_git_branches; } static int cvs_commit_date_compare(const void *av, const void *bv) { const cvs_commit *a = REVISION_T_COMMIT(*(revision_t *) av); const cvs_commit *b = REVISION_T_COMMIT(*(revision_t *) bv); int t; /* * NULL entries sort last */ if (!a && !b) return 0; else if (!a) return 1; else if (!b) return -1; /* * tailed entries sort next */ if (a->tailed != b->tailed) return(int)a->tailed - (int)b->tailed; /* * Newest entries sort first */ t = -time_compare(a->date, b->date); if (t) return t; /* * Ensure total order by ordering based on commit address */ if ((uintptr_t) a > (uintptr_t) b) return -1; if ((uintptr_t) a < (uintptr_t) b) return 1; return 0; } static cvs_commit * cvs_commit_latest(cvs_commit **commits, int ncommit) /* find newest live commit in a set */ { cvs_commit *max = NULL, **c; for (c = commits; c < commits + ncommit; c++) if ((*c) && !(*c)->dead) if (!max || time_compare((*c)->date, max->date) > 0) max = (*c); return max; } static int cvs_commit_date_sort(revision_t *commits, int ncommit) /* sort CVS commits by date */ { qsort(commits, ncommit, sizeof(revision_t), cvs_commit_date_compare); /* * Trim off NULL entries */ while (ncommit && !REVISION_T_COMMIT(commits[ncommit-1])) ncommit--; return ncommit; } static bool cvs_commit_time_close(const cvstime_t a, const cvstime_t b) /* are two timestamps within the commit-coalescence window of each other? */ { long diff = (long)a - (long)b; if (diff < 0) diff = -diff; if (diff < commit_time_window) return true; return false; } static bool cvs_commit_match(const cvs_commit *a, const cvs_commit *b) /* are two CVS commits eligible to be coalesced into a changeset? */ { /* * Versions of GNU CVS after 1.12 (2004) place a commitid in * each commit to track patch sets. Use it if present */ if (a->commitid && b->commitid) return a->commitid == b->commitid; if (a->commitid || b->commitid) return false; if (!cvs_commit_time_close(a->date, b->date)) return false; if (a->log != b->log) return false; if (a->author != b->author) return false; return true; } /* * These statics are part of an optimization to reduce allocation calls * by only doing one when more memory needs to be grabbed than the * previous commit build used. */ static const cvs_commit **files = NULL; static int sfiles = 0; /* not all platforms have qsort_r so use something global for compare func */ static int srevisions = 0; static revision_t *revisions = NULL; static size_t *sort_buf = NULL; static size_t *sort_temp = NULL; static void alloc_revisions(size_t nrev) /* Allocate buffers for merge_branches */ { if (srevisions < nrev) { /* As first branch is master, don't expect this to be hit more than once */ revisions = xrealloc(revisions, nrev * sizeof(revision_t), __func__); sort_buf = xrealloc(sort_buf, nrev * sizeof(size_t), __func__); sort_temp = xrealloc(sort_temp, nrev * sizeof(size_t), __func__); srevisions = nrev; } } static void merge_branches_cleanup(void) { if (srevisions > 0) { free(revisions); free(sort_buf); free(sort_temp); srevisions = 0; } } static void git_commit_cleanup(void) /* clean up after rev list merge */ { if (files) { free(files); files = NULL; sfiles = 0; } } static git_commit * git_commit_build(revision_t *revisions, const cvs_commit *leader, const int nrevisions, const int nactive) /* build a changeset commit from a clique of CVS revisions */ { size_t n; git_commit *commit; commit = xmalloc( sizeof(git_commit), "creating commit"); commit->parent = NULL; commit->date = leader->date; commit->commitid = leader->commitid; commit->log = leader->log; commit->author = leader->author; commit->tail = commit->tailed = false; commit->dead = false; commit->refcount = commit->serial = 0; revdir_pack_init(); for (n = 0; n < nrevisions; n++) { if (REVISIONS(n) && !(DEAD(n))) { revdir_pack_add(REVISIONS(n), DIR(n)); } } revdir_pack_end(&commit->revdir); #ifdef ORDERDEBUG debugmsg("commit_build: %p\n", commit); #if !defined STREAMDIR for (n = 0; n < nfile; n++) if (REVISIONS(n)) debugmsg("%s\n", REVISIONS(n)->master->name); #endif fputs("After packing:\n", LOGFILE); revdir_iter *i = revdir_iter_alloc(&commit->revdir); cvs_commit *c; while((c = revdir_iter_next(i))) debugmsg(" file name: %s\n", c->master->name); #endif /* ORDERDEBUG */ return commit; } static git_commit * git_commit_locate_date(const rev_ref *branch, const cvstime_t date) /* on branch, locate a commit within fuzz-time distance of date */ { git_commit *commit; /* PUNNING: see the big comment in cvs.h */ for (commit = (git_commit *)branch->commit; commit; commit = commit->parent) { if (time_compare(commit->date, date) <= 0) return commit; } return NULL; } static git_commit * git_commit_locate_one(const rev_ref *branch, const cvs_commit *part) /* seek a gitspace commit on branch incorporating cvs_commit */ { git_commit *commit; if (!branch) return NULL; /* PUNNING: see the big comment in cvs.h */ for (commit = (git_commit *)branch->commit; commit; commit = commit->parent) { /* PUNNING: see the big comment in cvs.h */ if (cvs_commit_match((cvs_commit *)commit, part)) return commit; } return NULL; } static git_commit * git_commit_locate_any(const rev_ref *branch, const cvs_commit *part) /* seek a gitspace commit on *any* branch incorporating cvs_commit */ { git_commit *commit; if (!branch) return NULL; commit = git_commit_locate_any(branch->next, part); if (commit) return commit; return git_commit_locate_one(branch, part); } static git_commit * git_commit_locate(const rev_ref *branch, const cvs_commit *cm) { git_commit *commit; /* * Check the presumed trunk first */ commit = git_commit_locate_one(branch, cm); if (commit) return commit; /* * Now look through all branches */ while (branch->parent) branch = branch->parent; return git_commit_locate_any(branch, cm); } static rev_ref * git_branch_of_commit(const git_repo *gl, const cvs_commit *commit) /* return the gitspace branch head that owns a specified CVS commit */ { rev_ref *h; cvs_commit *c; for (h = gl->heads; h; h = h->next) { if (h->tail) continue; for (c = h->commit; c; c = c->parent) { if (cvs_commit_match(c, commit)) return h; if (c->tail) break; } } return NULL; } static cvstime_t cvs_commit_first_date(cvs_commit *commit) /* return time of first commit along entire history */ { while (commit->parent) commit = commit->parent; return commit->date; } static int compare_clique(const void *a, const void *b) /* * Comparator that will sort null commits first, tailed commits * last and by time order, latest first in the middle * used for finding a clique of cvs commits to make a git commit */ { size_t i1 = *(size_t *)a, i2 = *(size_t *)b; const cvs_commit *c1 = REVISIONS(i1), *c2 = REVISIONS(i2); /* Null commits come first */ if (!c1 && !c2) return 0; if (!c1) return -1; if (!c2) return 1; /* tailed commits come last*/ if (c1->tailed && c2->tailed) return 0; if (c1->tailed) return 1; if (c2->tailed) return -1; /* most recent first date order in between */ return time_compare(c2->date, c1->date); /* Could make it a total order by comparing a and b */ } static void resort_revs (size_t skip, size_t nrev, size_t resort) { /* * Resort the revisions array. First skip items are already sorted * and guaranteed to be nothing sorting less then them. * Next resort items are not sorted, remainder of the array is * Depending on how much we have altered, either sort the array or * sort the changed bits and merge the two sorted parts * There's probably an optimal cutoff point, which I haven't * calculated * sort func is hard coded to compare_clique. */ if (resort > (nrev - skip) / 2) /* Sort the whole array again (except the previous nulls) */ qsort(sort_buf + skip, nrev - skip, sizeof(size_t), compare_clique); else { size_t p, q, i; if (resort > 1) /* sort the head of the array */ qsort(sort_buf + skip, resort, sizeof(size_t), compare_clique); /* merge the two sorted pieces of array into sort_temp */ p = skip; q = skip + resort; i = 0; while (p < skip + resort || q < nrev) { if (p == skip + resort) /* Data is already in the right place * no need to copy to sort_temp and back */ break; else if (q == nrev) { memcpy(sort_temp + i, sort_buf + p, sizeof(size_t) * (skip + resort - p)); i += skip + resort - p; break; } else if (compare_clique(&sort_buf[p], &sort_buf[q]) < 0) sort_temp[i++] = sort_buf[p++]; else sort_temp[i++] = sort_buf[q++]; } /* Copy the resorted piece back into sort_buf */ memcpy(sort_buf + skip, sort_temp, sizeof(size_t) * i); } } static void merge_branches(rev_ref **branches, int nbranch, rev_ref *branch, git_repo *gl) /* merge a set of per-CVS-master branches into a gitspace DAG branch */ { int nlive, n, nrev = nbranch; git_commit *prev = NULL, *head = NULL, **tail = &head, *commit; cvs_commit *latest; time_t birth = 0; #ifdef ORDERDEBUG static unsigned long oc = 0; #endif /* ORDERDEBUG */ alloc_revisions(nrev); /* * It is expected that the array of input branches is all CVS branches * tagged with some single branch name. The job of this code is to * build the changeset sequence for the corresponding named git branch, * then graft it to its parent git branch. * * We want to keep the revisions array in the same order as branches * was passed to us (modulo removing items) if not the fast output * phase suffers badly. * However, for the purpose of computing cliques it is very useful to * have the array sorted by date (with special handling for null and & tailed commits) * So, we will maintain a sort_buf which has indexes into the revisons * array but is sorted to help us find cliques. On any given iteration * sort_buf indexes point to the following types of commit * * 0...skip..........................nrev * |null|non tailed newest first|tailed| * * As each clique will be found near "skip" we may only have to look * at a small number of commits to find the clique. This leaves the * end of the array sorted. After the clique items are moved onto * the next commits in their master, we can sort the changed items * and then merge the two sorted pieces of the array * * resort tracks the number of items past skip we have touched. * nbranch is always nrev - skip, might be worth eliding it. */ nlive = 0; for (n = 0; n < nbranch; n++) { /* * Initialize revisions to head of each branch (that is, the * most recent entry). */ cvs_commit *c = branches[n]->commit; REVISION_T_PACK_INIT(revisions[n], c); sort_buf[n] = n; /* * Compute number of CVS branches that are still live - that is, * have remaining older CVS file commits for this branch. Non-live * branches are reachable by parent-of links from the named head * reference but we're past their branch point from a parent with * a different name (also in our set of heads). */ if (!c) continue; if (branches[n]->tail) { c->tailed = true; continue; } nlive++; /* * This code updates our notion of the start date for the * gitspace branch - that is, the date of the oldest CVS * commit contributing to it. Once we've walked all the CVS * branches, 'start' should hold that oldest commit date. */ while (c && !c->tail) { if (!birth || time_compare(c->date, birth) < 0) birth = c->date; c = c->parent; } if (c && (!c->dead || c->date != c->parent->date)) { if (!birth || time_compare(c->date, birth) < 0) birth = c->date; } } /* * This is a sanity check done just once for each gitspace * branch. If any of the commits at our CVS branch heads is older * than the git branch's imputed start date, something is badly * wrong. In a sane universe with a synchronous clock this * shouldn't be possible, but the CVS universe is not sane and * attempts to do time ordering among branches can be confused by * clock skew on the CVS clients. */ for (n = 0; n < nbranch; n++) { cvs_commit *c = REVISIONS(n); if (!c->tailed) continue; if (!birth || time_compare(birth, c->date) >= 0) continue; if (!c->dead) warn("warning - %s branch %s: tip commit older than imputed branch join\n", c->master->name, branch->ref_name); REVISION_T_PACK(revisions[n], (cvs_commit *)NULL); } /* Initial sort into null/date/tailed order */ qsort(sort_buf, nrev, sizeof(size_t), compare_clique); size_t skip = 0; /* * Walk down CVS branches creating gitspace commits until each CVS * branch has merged with its parent. */ while (nlive > 0 && nbranch > 0) { /* * Gather the next set of CVS commits down the branch and * figure out which (non-tailed) one of them is latest in * time. It will be the leader for the git commit build. */ for (n = skip, latest = NULL; n < nrev; n++) { cvs_commit *rev = REVISIONS(sort_buf[n]); if (!rev) { skip++; nbranch--; continue; } /* array is sorted so we get the latest live item after the nulls */ latest = rev; break; } assert(latest != NULL); /* * Construct current commit from the set of CVS commits * accumulated the last time around the loop. * This is the point at which revisions needs to be sorted * by master for rev dir packing to perform reasonably. */ commit = git_commit_build(revisions, latest, nrev, nbranch); /* * Step down each CVS branch in parallel. Our goal is to land on * a clique of matching CVS commits that will be made into a * matching gitspace commit on the next time around the loop. */ nlive = 0; /* worst case, we have to resort everything */ size_t resort = nbranch; bool can_match = true; for (n = skip; n < nrev; n++) { cvs_commit *c = REVISIONS(sort_buf[n]); cvs_commit *to; /* * Already got to parent branch? * We've sorted the list so everything else is tailed */ if (c->tailed) break; if (c != latest && can_match && !cvs_commit_time_close(latest->date, c->date)) { /* * Because we are in date order, once we hit something too * far off, we can't get anything else in the clique - * unless there are cases where things with the same commitid * have wildly differing dates. */ can_match = false; /* how much of the array might now be unsorted */ resort = n - skip; } /* not affected? */ if (c != latest && (!can_match || !cvs_commit_match(c, latest))) { if (c->parent || !c->dead) nlive++; /* * If we've found the clique, and at least one branch * is still live then bail. * Note, we are guaranteed to set resort before we get here */ if (!can_match && nlive > 0) break; continue; } #ifdef GITSPACEDEBUG if (c->gitspace) { warn("CVS commit allocated to multiple git commits: "); dump_number_file(LOGFILE, c->master->name, c->number); warn("\n"); } else #endif /* GITSPACEDEBUG */ c->gitspace = commit; to = c->parent; /* * CVS branch starts here? If so, drop it out of * the revision set and keep going. */ if (!to) goto Kill; if (c->tail) { /* * Adding file independently added on another * non-trunk branch. */ if (!to->parent && to->dead) goto Kill; /* * If the parent is at the beginning of trunk * and it is younger than some events on our * branch, we have old CVS adding file * independently added on another branch. */ if (birth && time_compare(birth, to->date) < 0) goto Kill; /* * XXX: we still can't be sure that it's * not a file added on trunk after parent * branch had forked off it but before * our branch's creation. */ to->tailed = true; } else if (!to->dead) { nlive++; } else { /* * See if it's recent CVS adding a file * independently added on another branch. */ if (!to->parent) goto Kill; if (to->tail && to->date == to->parent->date) goto Kill; nlive++; } /* * Commit is either not tailed or passed all the special-case * tests for tailed commits. Leave it in the set for the next * changeset construction. */ REVISION_T_PACK(revisions[sort_buf[n]], to); continue; Kill: REVISION_T_PACK(revisions[sort_buf[n]], (cvs_commit *)NULL); } /* we've changed some revs to their parents. Resort */ resort_revs(skip, nrev, resort); #ifdef ORDERDEBUG /* * Sanity check that we've ordered things properly * oc is useful for a conditional breakpoint if not */ size_t i; for (i = skip + 1; i < nrev; i++) { if (compare_clique(&sort_buf[i-1], &sort_buf[i]) > 0) warn("Sort broken oc: %lu\n", oc); } oc++; #endif /* ORDERDEBUG */ *tail = commit; tail = &commit->parent; prev = commit; } /* * Gitspace branch construction is done. Now connect it to its * parent branch. The CVS commits now referenced in the revisions * array are for the oldest commit on the branch (the last clique * to be collected in the previous phase). This is not the brahch's * root commit, but the child of that root. */ nbranch = cvs_commit_date_sort(revisions, nrev); if (nbranch && branch->parent ) { int present; for (present = 0; present < nbranch; present++) { if (!DEAD(present)) { /* * Skip files which appear in the repository after * the first commit along the branch */ if (prev && REVISIONS(present)->date > prev->date && REVISIONS(present)->date == cvs_commit_first_date(REVISIONS(present))) { /* FIXME: what does this mean? */ warn("file %s appears after branch %s date\n", REVISIONS(present)->master->name, branch->ref_name); continue; } break; } } if (present == nbranch) /* * Branch join looks normal, we can just go ahead and build * the last commit. */ *tail = NULL; else if ((*tail = git_commit_locate_one(branch->parent, REVISIONS(present)))) { if (prev && time_compare((*tail)->date, prev->date) > 0) { cvs_commit *first; warn("warning - branch point %s -> %s later than branch\n", branch->ref_name, branch->parent->ref_name); warn("\ttrunk(%3d): %s %s", n, cvstime2rfc3339(REVISIONS(present)->date), DEAD(present) ? "D" : " " ); if (!DEAD(present)) dump_number_file(LOGFILE, REVISIONS(present)->master->name, REVISIONS(present)->number); fprintf(LOGFILE, "\n"); /* * The file part of the error message could be spurious for * a multi-file commit, alas. It wasn't any better back when * both flavors of commit had dedicated 'file' members; the * problem is that we can't actually know which CVS file * commit is the right one for purposes of this message. * (uniform warn messages jw 20151122) */ warn("\tbranch(%3d): %s ", n, cvstime2rfc3339(prev->date)); revdir_iter *ri = revdir_iter_alloc(&prev->revdir); first = revdir_iter_next(ri); free(ri); dump_number_file(LOGFILE, first->master->name, first->number); fprintf(LOGFILE, "\n"); } } else if ((*tail = git_commit_locate_date(branch->parent, REVISIONS(present)->date))) warn("warning - branch point %s -> %s matched by date\n", branch->ref_name, branch->parent->ref_name); else { rev_ref *lost; warn("error - branch point %s -> %s not found.", branch->ref_name, branch->parent->ref_name); if ((lost = git_branch_of_commit(gl, REVISIONS(present)))) warn(" Possible match on %s.", lost->ref_name); fprintf(LOGFILE, "\n"); } if (*tail) { if (prev) prev->tail = true; } else { *tail = git_commit_build(revisions, REVISIONS(0), nrev, nbranch); for (n = 0; n < nrev; n++) if (REVISIONS(n)) { #ifdef GITSPACEDEBUG if (REVISIONS(n)->gitspace) { warn("CVS commit allocated to multiple git commits: "); dump_number_file(LOGFILE, REVISIONS(n)->master->name, REVISIONS(n)->number); warn("\n"); } else #endif /* GITSPACEDEBUG */ REVISIONS(n)->gitspace = *tail; } } } for (n = 0; n < nbranch; n++) if (REVISIONS(n)) REVISIONS(n)->tailed = false; /* PUNNING: see the big comment in cvs.h */ branch->commit = (cvs_commit *)head; } static bool git_commit_contains_revs(git_commit *g, cvs_commit **revs, size_t nrev) /* Check whether the commit is made up of the supplied file list. * List mut be sorted in path_deep_compare order. */ { revdir_iter *it = revdir_iter_alloc(&g->revdir); size_t i = 0; cvs_commit *c = NULL; static bool n_init = false; static const cvs_number *n1 = NULL; static const cvs_number *n2 = NULL; if (!n_init) { n1 = atom_cvs_number(lex_number("1.1")); n2 = atom_cvs_number(lex_number("1.1.1.1")); n_init = true; } /* order of checks is important */ while ((c = revdir_iter_next(it)) && i < nrev) { if (revs[i] != c) { // seen repos where 1.1 and 1.1.1.1 are used interchangeably if (revs[i]->master != c->master || (revs[i]->number != n1 && revs[i]->number != n2) || (c->number != n1 && c->number != n2)) { free(it); return false; } } i++; } free(it); /* check we got to the end of both */ return (i == nrev) && (!c); } static int compare_cvs_commit(const void *a, const void *b) { cvs_commit **ap = (cvs_commit **)a; cvs_commit **bp = (cvs_commit **)b; const char *af = (*ap)->master->name; const char *bf = (*bp)->master->name; #ifdef ORDERDEBUG warn("Comparing %s with %s\n", af, bf); #endif /* ORDERDEBUG */ return path_deep_compare(af, bf); } /* * Locate position in git tree corresponding to specific tag */ static void rev_tag_search(tag_t *tag, cvs_commit **revisions, git_repo *gl) { /* * The cvs_commit->gitspace pointer gives the first git commit a * cvs commit appears in. (first in DAG pre-order) If we find the * newest revision C in the tag and then follow the backlink to G, * there is a good chance this will be the tag point. * * Consider, if any future git commits add files, then these files * would be newer than C, and hence not in the tag set. * * However, this argument doesn't work if a subsequent commit only * deletes files (or a set of commits has this net effect) So, we * first check whether G has a matching set of revisions to the * tag. If so, we're done. * * If not, we search the whole tree (pruning where possible) * for a matching set of revisions. * * If this doesn't work we create branch from G with a single * commit with the correct revisions. * * It is possible for multiple git commits to contain the same * set of cvs revisions. * * Tags can point to dead commits, we ignore these as they * don't get backlinks to git commits. This may get revisited later. */ cvs_commit *c = cvs_commit_latest(revisions, tag->count); if (!c) /* only dead revisions in the tag */ return; if (c->gitspace == NULL) { char buf[CVS_MAX_REV_LEN + 1]; warn("%s %s: %s points at commit with no gitspace link.\n", c->master->name, cvs_number_string(c->number, buf, sizeof(buf)), tag->name); return; } qsort(revisions, tag->count, sizeof(cvs_commit *), compare_cvs_commit); if (git_commit_contains_revs(c->gitspace, revisions, tag->count)) { /* we've seen this set of revisions before, just link tag to it */ tag->commit = c->gitspace; return; } else { /* Search to try and find a matching git commit. * We can prune if we get to c->gitspace. * We can prune if we get to an older commit than c->gitspace. * We could also use tail-bits here to avoid checking the same * commit multiple times, but we haven't built them yet. * If we build them before tagging we would need to teach * this code how to write correct tail bits in the branches it * creates. * * This section can also find revisions in the branches * we add below. * * Emacs has one place with 35 tags pointing to the same * revision set, so this saves 34 branches. */ rev_ref *h; git_commit *g; for (h = gl->heads; h; h = h->next) { if (h->tail) continue; /* PUNNING: See large comment in cvs.h */ for (g = (git_commit *)h->commit; g; g = g->parent) { if (g == c->gitspace) break; if (time_compare(g->date, c->gitspace->date) < 0) break; if (git_commit_contains_revs(g, revisions, tag->count)) { tag->commit = g; return; } } } } /* Tagging mechanism for incomplete tags * * The tag doesn't point to a previously seen set of revisions. * The old code just did "tag->commit = c->gitspace;" at this point. * * Create a new branch with the tag name and join at the inferred * join point. The join point is the earliest one that makes * sense, but it may have happened later. However, if you check the * tag out you will get the correct set of files. * We have no way of knowing the correct author of a tag. */ revision_t *revs = xmalloc(sizeof(revision_t) * tag->count, __func__); size_t i; for (i = 0; i < tag->count; i++) REVISION_T_PACK_INIT(revs[i], revisions[i]); git_commit *g = git_commit_build(revs, c, tag->count, tag->count); free(revs); g->parent = c->gitspace; rev_ref *parent_branch = git_branch_of_commit(gl, c); rev_ref *tag_branch = xcalloc(1, sizeof(rev_ref), __func__); tag_branch->parent = parent_branch; /* type punning */ tag_branch->commit = (cvs_commit *)g; tag_branch->ref_name = tag->name; tag_branch->depth = parent_branch->depth + 1; rev_ref *r; /* Add tag branch to end of list to maintain toposort */ for (r = gl->heads; r->next; r = r->next) continue; r->next = tag_branch; g->author = atom("cvs-fast-export"); size_t len = strlen(tag->name) + 30; char *log = xmalloc(len, __func__); snprintf(log, len, "Synthetic commit for tag %s", tag->name); g->log = atom(log); free(log); } static void rev_ref_set_parent(git_repo *gl, rev_ref *dest, cvs_master *source, size_t nmasters) /* compute parent relationships among gitspace branches */ { cvs_master *s; rev_ref *p, *max; if (dest->depth) return; max = NULL; for (s = source; s < source + nmasters; s++) { rev_ref *sh; sh = rev_find_head(s, dest->ref_name); if (!sh) continue; if (!sh->parent) continue; p = rev_find_head((head_list*)gl, sh->parent->ref_name); assert(p); rev_ref_set_parent(gl, p, source, nmasters); if (!max || p->depth > max->depth) max = p; } dest->parent = max; /* where the magic happens */ if (max) dest->depth = max->depth + 1; else dest->depth = 1; } git_repo * merge_to_changesets(cvs_master *masters, size_t nmasters, int verbose) /* entry point - merge CVS revision lists to a gitspace DAG */ { size_t head_count = 0; int n; /* used only in progress messages */ git_repo *gl = xcalloc(1, sizeof(git_repo), "list merge"); cvs_master *cm; rev_ref *lh, *h; tag_t *t; rev_ref **refs = xcalloc(nmasters, sizeof(rev_ref *), "list merge"); /* * It is expected that the branch trees in all CVS masters have * equivalent sets of parent-child relationships, but not * necessarily that the branch nodes always occur in the same * order. Equivalently, it may not be the case that the branch IDs * of equivalent named branches in different masters are the * same. So the only way we can group CVS branches into cliques * that should be bundled into single gitspace branches is by the * labels at their tips. * * First, find all of the named heads across all of the incoming * CVS trees. Use them to initialize named branch heads in the * output list. Yes, this is currently very inefficient. */ progress_begin("Make DAG branch heads...", nmasters); n = 0; for (cm = masters; cm < masters + nmasters; cm++) { for (lh = cm->heads; lh; lh = lh->next) { h = rev_find_head((head_list *)gl, lh->ref_name); if (!h) { head_count++; rev_list_add_head((head_list *)gl, NULL, lh->ref_name, lh->degree); } else if (lh->degree > h->degree) h->degree = lh->degree; } if (++n % 100 == 0) progress_jump(n); } progress_jump(n); progress_end(NULL); /* * Sort by degree so that finding branch points always works. * In later operations we always want to walk parent branches * before children, with trunk first. */ progress_begin("Sorting...", nmasters); gl->heads = rev_ref_tsort(gl->heads, masters, nmasters); if (!gl->heads) { free(refs); /* coverity[leaked_storage] */ return NULL; } progress_end(NULL); if (verbose) { /* * Display the result of the branch toposort. * The "master" branch should always be at the front * of the list. */ debugmsg("Sorted branches are:\n"); for (h = gl->heads; h; h = h->next) debugmsg("head %s(%d)\n", h->ref_name, h->degree); } /* * Compute branch parent relationships. */ progress_begin("Compute branch parent relationships...", head_count); for (h = gl->heads; h; h = h->next) { rev_ref_set_parent(gl, h, masters, nmasters); progress_step(); } progress_end(NULL); #ifdef ORDERDEBUG fputs("merge_to_changesets: before common branch merge:\n", stderr); for (cm = masters; cm < masters + nmasters; cm++) { for (lh = cm->heads; lh; lh = lh->next) { cvs_commit *commit = lh->commit; fputs("rev_ref: ", stderr); dump_number_file(stderr, lh->ref_name, lh->number); fputc('\n', stderr); fprintf(stderr, "commit first file: %s\n", commit->master->name); } } #endif /* ORDERDEBUG */ /* * Merge common branches */ progress_begin("Merge common branches...", head_count); revdir_pack_alloc(nmasters); for (h = gl->heads; h; h = h->next) { /* * For this imputed gitspace branch, locate the corresponding * set of CVS branches from every master. */ int nref = 0; for (cm = masters; cm < masters + nmasters; cm++) { lh = rev_find_head(cm, h->ref_name); if (lh) { refs[nref++] = lh; } } if (nref) /* * Merge those branches into a single gitspace branch * and add that to the output revlist on gl. */ merge_branches(refs, nref, h, gl); progress_step(); } merge_branches_cleanup(); progress_end(NULL); #ifdef GITSPACEDEBUG /* Check every non-dead cvs commit has a backlink * and that every pair of linked commits match * according to cvs_commit_match. * (note this will check common parents multiple times) */ for (cm = masters; cm < masters + nmasters; cm++) { for (lh = cm->heads; lh; lh = lh->next) { cvs_commit *c = lh->commit; for (; c; c = c->parent) { if (!c->gitspace) { if (!c->dead) { fprintf(LOGFILE, "No gitspace: "); dump_number_file(LOGFILE, c->master->name, c->number); fprintf(LOGFILE, "\n"); } } else if (!cvs_commit_match(c, (cvs_commit *)c->gitspace)) { fprintf(LOGFILE, "Gitspace doesn't match cvs: "); dump_number_file(LOGFILE, c->master->name, c->number); fprintf(LOGFILE, "\n"); } } } } #endif /* GITSPACEDEBUG */ /* * Find tag locations. The goal is to associate each tag object * (which normally corresponds to a clique of named tags, one per master) * with the right gitspace commit. */ progress_begin("Find tag locations...", tag_count); for (t = all_tags; t; t = t->next) { cvs_commit **commits = tagged(t); if (commits) rev_tag_search(t, commits, gl); else announce("internal error - lost tag %s\n", t->name); free(commits); progress_step(); } revdir_pack_free(); revdir_free_bufs(); progress_end(NULL); /* * Compute 'tail' values. These allow us to recognize branch joins * so we can write efficient traversals that walk branches without * wandering on to their parent branches. */ progress_begin("Compute tail values...", NO_MAX); rev_list_set_tail((head_list *)gl); progress_end(NULL); free(refs); //progress_begin("Validate...", NO_MAX); //rev_list_validate(gl); //progress_end(NULL); git_commit_cleanup(); return gl; } /* * Generate a list of files in uniq that aren't in common */ static cvs_commit_list * rev_uniq_file(git_commit *uniq, git_commit *common, int *nuniqp) { int nuniq = 0; cvs_commit_list *head = NULL, **tail = &head, *fl; cvs_commit *c; if (!uniq) return NULL; revdir_iter *ri = revdir_iter_alloc(&uniq->revdir); while ((c = revdir_iter_next(ri))) { if (c->gitspace != common) { fl = xcalloc(1, sizeof(cvs_commit_list), "rev_uniq_file"); fl->file = c; *tail = fl; tail = &fl->next; ++nuniq; } } free(ri); *nuniqp = nuniq; return head; } /* * Generate a diff between two gitspace commits. Either may be NULL */ rev_diff * git_commit_diff(git_commit *old, git_commit *new) { rev_diff *diff = xcalloc(1, sizeof(rev_diff), __func__); diff->del = rev_uniq_file(old, new, &diff->ndel); diff->add = rev_uniq_file(new, old, &diff->nadd); return diff; } static void cvs_commit_list_free(cvs_commit_list *fl) { cvs_commit_list *next; while (fl) { next = fl->next; free(fl); fl = next; } } void rev_diff_free(rev_diff *d) { cvs_commit_list_free(d->del); cvs_commit_list_free(d->add); free(d); } /* end */ cvs-fast-export-1.35/nodehash.c0000664000175000017500000001340312440011740014604 0ustar esresr/* * The per-CVS-master node list this module builds and exports is used * during the analysis phase (only) to walk through all deltas and * build them into snapshots. */ #include "cvs.h" #include "hash.h" unsigned long hash_cvs_number(const cvs_number *const key) { return hash_value((const char *)key, sizeof(short) * (key->c + 1)); } static node_t * node_for_cvs_number(nodehash_t *context, const cvs_number *const n) /* * look up the node associated with a specified CVS release number * only call with a number that has been through atom_cvs_number */ { const cvs_number *k = n; node_t *p; hash_t hash = hash_cvs_number(k) % NODE_HASH_SIZE; for (p = context->table[hash]; p; p = p->hash_next) if (p->number == k) return p; /* * While it looks like a good idea, an attempt at slab allocation * failed miserably here. Noted because the regression-test * suite didn't catch it. Attempting to convert groff did. The * problem shows as difficult-to-interpret errors under valgrind. */ p = xcalloc(1, sizeof(node_t), "hash number generation"); p->number = k; p->hash_next = context->table[hash]; context->table[hash] = p; context->nentries++; return p; } static node_t *find_parent(nodehash_t *context, const cvs_number *const n, const int depth) /* find the parent node of the specified prefix of a release number */ { cvs_number key; const cvs_number *k; node_t *p; hash_t hash; memcpy(&key, n, sizeof(cvs_number)); key.c -= depth; k = atom_cvs_number(key); hash = hash_cvs_number(k) % NODE_HASH_SIZE; for (p = context->table[hash]; p; p = p->hash_next) if (p->number == k) return p; return NULL; } void hash_version(nodehash_t *context, cvs_version *v) /* intern a version onto the node list */ { v->node = node_for_cvs_number(context, v->number); if (v->node->version) { char name[CVS_MAX_REV_LEN]; announce("more than one delta with number %s\n", cvs_number_string(v->node->number, name, sizeof(name))); } else { v->node->version = v; } if (v->node->number->c & 1) { char name[CVS_MAX_REV_LEN]; announce("revision with odd depth(%s)\n", cvs_number_string(v->node->number, name, sizeof(name))); } } void hash_patch(nodehash_t *context, cvs_patch *p) /* intern a patch onto the node list */ { p->node = node_for_cvs_number(context, p->number); if (p->node->patch) { char name[CVS_MAX_REV_LEN]; announce("more than one delta with number %s\n", cvs_number_string(p->node->number, name, sizeof(name))); } else { p->node->patch = p; } if (p->node->number->c & 1) { char name[CVS_MAX_REV_LEN]; announce("patch with odd depth(%s)\n", cvs_number_string(p->node->number, name, sizeof(name))); } } void hash_branch(nodehash_t *context, cvs_branch *b) /* intern a branch onto the node list */ { b->node = node_for_cvs_number(context, b->number); } void clean_hash(nodehash_t *context) /* discard the node list */ { int i; for (i = 0; i < NODE_HASH_SIZE; i++) { node_t *p = context->table[i]; context->table[i] = NULL; while (p) { node_t *q = p->hash_next; free(p); p = q; } } context->nentries = 0; context->head_node = NULL; } static int compare(const void *a, const void *b) /* total ordering of nodes by associated CVS revision number */ { node_t *x = *(node_t * const *)a, *y = *(node_t * const *)b; int n, i; n = x->number->c; if (n < y->number->c) return -1; if (n > y->number->c) return 1; for (i = 0; i < n; i++) { if (x->number->n[i] < y->number->n[i]) return -1; if (x->number->n[i] > y->number->n[i]) return 1; } return 0; } static void try_pair(nodehash_t *context, node_t *a, node_t *b) { int n = a->number->c; if (n == b->number->c) { int i; if (n == 2) { a->next = b; b->to = a; return; } for (i = n - 2; i >= 0; i--) if (a->number->n[i] != b->number->n[i]) break; if (i < 0) { a->next = b; a->to = b; return; } } else if (n == 2) { context->head_node = a; } if ((b->number->c & 1) == 0) { b->starts = true; /* can the code below ever be needed? * it's called 90,000 times in netbsd-pkgsrc * but no parent is ever found. */ node_t *p = find_parent(context, b->number, 1); if (p) p->next = b; } } /* entry points begin here */ node_t * cvs_find_version(const cvs_file *cvs, const cvs_number *number) /* find the file version associated with the specified CVS release number */ { cvs_version *cv; cvs_version *nv = NULL; for (cv = cvs->gen.versions; cv; cv = cv->next) { if (cvs_same_branch(number, cv->number) && cvs_number_compare(cv->number, number) > 0 && (!nv || cvs_number_compare(nv->number, cv->number) > 0)) nv = cv; } return nv ? nv->node : NULL; } void build_branches(nodehash_t *context) /* build branch links in the node list */ { if (context->nentries == 0) return; node_t **v = xmalloc(sizeof(node_t *) * context->nentries, __func__), **p = v; int i; for (i = 0; i < NODE_HASH_SIZE; i++) { node_t *q; for (q = context->table[i]; q; q = q->hash_next) *p++ = q; } qsort(v, context->nentries, sizeof(node_t *), compare); /* only trunk? */ if (v[context->nentries-1]->number->c == 2) context->head_node = v[context->nentries-1]; for (p = v + context->nentries - 2 ; p >= v; p--) try_pair(context, p[0], p[1]); for (p = v + context->nentries - 1 ; p >= v; p--) { node_t *a = *p, *b = NULL; if (!a->starts) continue; b = find_parent(context, a->number, 2); if (!b) { char name[CVS_MAX_REV_LEN]; announce("no parent for %s\n", cvs_number_string(a->number, name, sizeof(name))); continue; } a->sib = b->down; b->down = a; } free(v); } /* end */ cvs-fast-export-1.35/rbtree.c0000664000175000017500000001623212435607267014324 0ustar esresr#include "cvs.h" #include "rbtree.h" /* * Structures for the red/black tree */ typedef enum _rbtree_color { RED = 0, BLACK = 1, } rbtree_color; typedef struct rbtree_node { const void *key; void *value; struct rbtree_node *restrict parent; struct rbtree_node *restrict left; struct rbtree_node *restrict right; rbtree_color color; } rbtree_node; static struct rbtree_node * rbtree_parent(const struct rbtree_node *node) /* This function should be called if existence of the parent is guaranteed within or required by the calling function */ { assert(node->parent); return node->parent; } static bool rbtree_is_left_child(const struct rbtree_node *node, const struct rbtree_node *parent) { assert(rbtree_parent(node) == parent); if (parent && parent->left == node) return true; return false; } static bool rbtree_is_right_child(const struct rbtree_node *node, const struct rbtree_node *parent) { assert(rbtree_parent(node) == parent); if (parent && parent->right == node) return true; return false; } static struct rbtree_node * rbtree_sibling(const struct rbtree_node *node) { struct rbtree_node *parent; parent = rbtree_parent(node); if (rbtree_is_left_child(node, parent)) return parent->right; else return parent->left; } static rbtree_color rbtree_node_color(const struct rbtree_node *node) /* we use NULL as sentinel */ { if (node) return node->color; return BLACK; } #if RBDEBUG static void rbtree_assert_links(const struct rbtree_node *node) /* not a red-black property, but make sure parent <-> child links are * correct at all times */ { if (node) { if (node->left) assert(rbtree_is_left_child(node->left, node)); if (node->right) assert(rbtree_is_right_child(node->right, node)); rbtree_assert_links(node->left); rbtree_assert_links(node->right); } } static void rbtree_assert_property_2(const struct rbtree_node *root) /* 2. red-black property: the root is black */ { assert(struct rbtree_node_color(root) == BLACK); } static void rbtree_assert_property_4(const struct rbtree_node *node) /* 4. red-black property: If a node is red, both its children are black */ { if (node) { if (struct rbtree_node_color(node) == RED) { assert(struct rbtree_node_color(node->left) == BLACK); assert(struct rbtree_node_color(node->right) == BLACK); } rbtree_assert_property_4 (node->left); rbtree_assert_property_4 (node->right); } } static void rbtree_assert_property_5_helper(const struct rbtree_node *node, const int current_count, int *first_leaf_count) { if (struct rbtree_node_color(node) == BLACK) ++current_count; if (node) { rbtree_assert_property_5_helper(node->left, current_count, first_leaf_count); rbtree_assert_property_5_helper(node->right, current_count, first_leaf_count); } else { if (*first_leaf_count != -1) assert(current_count == *first_leaf_count); else *first_leaf_count = current_count; } } static void rbtree_assert_property_5(const struct rbtree_node *node) /* 5. red-black property: For each node, all paths to its leaf nodes contain the same number of black nodes */ { int first_leaf_count = -1; rbtree_assert_property_5_helper(node, 0, &first_leaf_count); } static void rbtree_assert_properties(const struct rbtree_node *root) { rbtree_assert_links(root); /* property 1 is implicit: every node is either red or black */ rbtree_assert_property_2 (root); /* property 3 is implicit: every leaf is black, see struct rbtree_node_color */ rbtree_assert_property_4 (root); rbtree_assert_property_5 (root); } #endif /* #if RBDEBUG */ static void rbtree_rotate_helper(struct rbtree_node *x, struct rbtree_node *y) /* change the parent <-> child links for all nodes involved in a binary tree rotation */ { assert(x); assert(y); assert(y->parent == x); struct rbtree_node *p, *b; p = x->parent; if (rbtree_is_left_child(y, x)) { b = y->right; x->left = b; y->right = x; } else { b = y->left; x->right = b; y->left = x; } if (p) { if (rbtree_is_left_child(x, p)) p->left = y; else p->right = y; } x->parent = y; y->parent = p; if (b) { b->parent = x; } } static void rbtree_rotate_left(struct rbtree_node *x) { rbtree_rotate_helper(x, x->right); } static void rbtree_rotate_right(struct rbtree_node *x) { rbtree_rotate_helper(x, x->left); } static void rbtree_insert_fixup(struct rbtree_node **root, struct rbtree_node *z) /* this one is pretty much copied from the pseudo code in Cormen/Leisterson/Rivest/Stein */ { if (*root != z) { while (rbtree_node_color(z->parent) == RED) { struct rbtree_node *p, *g, *y; p = rbtree_parent(z); g = rbtree_parent(p); y = rbtree_sibling(p); if (rbtree_node_color(y) == RED) { g->color = RED; p->color = BLACK; y->color = BLACK; z = g; } else if (rbtree_is_left_child(p, g)) { if (rbtree_is_right_child(z, p)) { z = p; rbtree_rotate_left(z); p = rbtree_parent(z); g = rbtree_parent(p); } p->color = BLACK; g->color = RED; rbtree_rotate_right(g); } else /* rbtree_is_right_child(p, g) */ { if (rbtree_is_left_child(z, p)) { z = p; rbtree_rotate_right(z); p = rbtree_parent(z); g = rbtree_parent(p); } p->color = BLACK; g->color = RED; rbtree_rotate_left(g); } } /* we might have a new root node after a rotation, so update the place where it is stored */ struct rbtree_node *r; r = *root; while (r->parent) r = r->parent; *root = r; } (*root)->color = BLACK; } void rbtree_insert(struct rbtree_node **root, const void *key, void *value, int(*compare)(const void *key1, const void *key2)) { struct rbtree_node *parent, *node, **nodep; parent = NULL; nodep = root; while ((node = *nodep)) { parent = node; if (compare(node->key, key) < 0) nodep = (struct rbtree_node **)&node->left; else if (compare(node->key, key) > 0) nodep = (struct rbtree_node **)&node->right; else fatal_error("internal error - duplicate key in red black tree"); } node = xcalloc(1, sizeof(struct rbtree_node), "red black tree insertion"); node->key = key; node->value = value; node->parent = parent; assert(node->color == RED); assert(node->left == NULL); assert(node->right == NULL); *nodep = node; rbtree_insert_fixup(root, node); #if RBDEBUG rbtree_assert_properties(*root); #endif /* RBDEBUG */ } struct rbtree_node* rbtree_lookup(struct rbtree_node *root, const void *key, int(*compare)(const void *key1, const void *key2)) { struct rbtree_node *node; node = root; while (node && compare(node->key, key) != 0) { if (compare(node->key, key) < 0) node = node->left; else node = node->right; } return node; } void *rbtree_value(struct rbtree_node *n) { return (void *)n->value; } void rbtree_free(struct rbtree_node *node) { if (node) { rbtree_free(node->left); rbtree_free(node->right); free(node); } } /* Local Variables: */ /* mode: c */ /* c-basic-offset: 4 */ /* indent-tabs-mode: t */ /* End: */ cvs-fast-export-1.35/rbtree.h0000664000175000017500000000072512435607267014331 0ustar esresr/* rbtree.h - prototypes fot red/black tree lookup code */ struct rbtree_node; void rbtree_insert(struct rbtree_node **root, const void *key, void *value, int (*compare)(const void* key1, const void* key2)); struct rbtree_node* rbtree_lookup(struct rbtree_node *root, const void* key, int (*compare)(const void* key1, const void* key2)); void *rbtree_value(struct rbtree_node *n); void rbtree_free(struct rbtree_node *root); /* end */ cvs-fast-export-1.35/revcvs.c0000644000175000017500000005347412624620165014350 0ustar esresr/* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ /* * Build one in-core linked list corresponding to a single CVS * master. Just one entry point, cvs_master_digest(), which takes the * structure built by the grammar parse of the master as one of its * arguments. */ #include "cvs.h" #include "hash.h" #ifdef REDBLACK #include "rbtree.h" #endif /* REDBLACK */ #ifdef THREADS #include #endif const master_dir *root_dir = NULL; static const char * fileop_name(const char *rectified) { size_t rlen = strlen(rectified); if (rlen >= 10 && strcmp(rectified + rlen - 10, ".cvsignore") == 0) { char path[PATH_MAX]; strncpy(path, rectified, PATH_MAX-1); path[rlen - 9] = 'g'; path[rlen - 8] = 'i'; path[rlen - 7] = 't'; return atom(path); } // assume rectified is already an atom return rectified; } static const char* dir_name(const char *filename) { char *slash = strrchr(filename, '/'); char buf[PATH_MAX]; if (slash) { strncpy(buf, filename, slash - filename); buf[slash - filename] = '\0'; return atom(buf); } else { return atom("\0"); } } #define DIR_BUCKETS 24593 typedef struct _dir_bucket { struct _dir_bucket *next; master_dir dir; } dir_bucket; static dir_bucket *dir_buckets[DIR_BUCKETS]; #ifdef THREADS static pthread_mutex_t dir_bucket_mutex; void atom_dir_init(void) { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); pthread_mutex_init(&dir_bucket_mutex, &attr); } #endif /* THREADS */ static const master_dir * atom_dir(const char* dirname) /* Extract information about the directory a master is in . * atomize the result so all references to the same directory * point the the same value. * Needs to be called with an atomized string */ { dir_bucket **head = &dir_buckets[HASH_VALUE(dirname) % DIR_BUCKETS]; dir_bucket *b; while ((b = *head)) { collision: if (b->dir.name == dirname) return &(b->dir); head = &(b->next); } #ifdef THREADS if (threads > 1) pthread_mutex_lock(&dir_bucket_mutex); #endif /* THREADS */ if ((b = *head)) { #ifdef THREADS if (threads > 1) pthread_mutex_unlock(&dir_bucket_mutex); #endif /* THREADS */ goto collision; } b = xmalloc(sizeof(dir_bucket), __func__); b->next = NULL; b->dir.name = dirname; *head = b; if (strlen(dirname) > 0) /* recursive mutex use, find parent dir */ b->dir.parent = atom_dir(dir_name(dirname)); else b->dir.parent = NULL; #ifdef THREADS if (threads > 1) pthread_mutex_unlock(&dir_bucket_mutex); #endif /* THREADS */ return &(b->dir); } static cvs_commit * cvs_master_find_revision(cvs_master *cm, const cvs_number *number) /* given a single-file revlist tree, locate the specific version number */ { rev_ref *h; cvs_commit *c; for (h = cm->heads; h; h = h->next) { if (h->tail) continue; for (c = h->commit; c; c = c->parent) { if (cvs_number_compare(c->number, number) == 0) return c; if (c->tail) break; } } return NULL; } static rev_master * build_rev_master(cvs_file *cvs, rev_master *master) { master->name = cvs->export_name; master->fileop_name = fileop_name(cvs->export_name); master->dir = atom_dir(dir_name(master->name)); master->mode = cvs->mode; master->commits = xcalloc(cvs->nversions, sizeof(cvs_commit), "commit slab alloc"); master->ncommits = 0; return master; } static cvs_commit * cvs_master_branch_build(cvs_file *cvs, rev_master *master, const cvs_number *branch) /* build a list of commit objects representing a branch from deltas on it */ { cvs_number n; const cvs_number *atom_n; cvs_commit *head = NULL; cvs_commit *c, *p, *gc; node_t *node; #if CVSDEBUG char buf[CVS_MAX_REV_LEN]; if (cvs->verbose > 0) debugmsg("\tstarting new branch, branch number = %s\n", cvs_number_string(branch, buf, CVS_MAX_REV_LEN)); #endif /* CVSDEBUG */ memcpy(&n, branch, sizeof(cvs_number)); n.n[n.c-1] = -1; atom_n = atom_cvs_number(n); for (node = cvs_find_version(cvs, atom_n); node; node = node->next) { cvs_version *v = node->version; cvs_patch *p = node->patch; cvs_commit *c; if (!v) continue; c = master->commits + master->ncommits++; c->dir = master->dir; c->date = v->date; c->commitid = v->commitid; c->author = v->author; c->tail = c->tailed = false; c->refcount = c->serial = 0; if (p) c->log = p->log; c->dead = v->dead; /* leave this around so the branch merging stuff can find numbers */ c->master = master; c->number = v->number; if (!v->dead) { node->commit = c; } c->parent = head; /* commits are already interned, these hashes build up revdir hashes */ c->hash = HASH_VALUE(c); head = c; } if (head == NULL) /* coverity[leaked_storage] */ return NULL; /* * Make sure the dates along the branch are well ordered. As we * want to preserve current data, push previous versions back to * align with newer revisions. (The branch is being traversed * in reverse order. p = parent, c = child, gc = grandchild.) */ for (c = head, gc = NULL; (p = c->parent); gc = c, c = p) { if (time_compare(p->date, c->date) > 0 && !nowarn) { warn("warning - %s:", cvs->gen.master_name); dump_number_file(LOGFILE, " ", p->number); dump_number_file(LOGFILE, " is newer than", c->number); /* Try to catch an odd one out, such as a commit with the * clock set wrong. Don't push back all commits for that, * just fix up the current commit instead of the * parent. */ if (gc && time_compare(p->date, gc->date) <= 0) { dump_number_file(LOGFILE, ", adjusting", c->number); c->date = p->date; } else { dump_number_file(LOGFILE, ", adjusting", c->number); p->date = c->date; } fprintf(LOGFILE, "\n"); } } #if CVSDEBUG if (cvs->verbose > 0) debugmsg("\tnew branch, head number = %s\n", cvs_number_string(head->number, buf, CVS_MAX_REV_LEN)); #endif /* CVSDEBUG */ /* coverity[leaked_storage] */ return head; } /* * "Vendor branches" (1.1.x) are created by importing sources from * an external source. In X.org, this was from XFree86 and DRI. When * these trees are imported, cvs sets the 'default' branch in each ,v file * to point along this branch. This means that tags made between * the time the vendor branch is imported and when a new revision * is committed to the head branch are placed on the vendor branch * In addition, any files without such a commit appear to adopt * the vendor branch as 'head'. * * The original behavior of this code was to fix this by merging the * vendor branch into the master branch, as if they were the same. * This produced incorrect behavior on repos where there was a * vendor-branch revision more recent than the tip of the master * branch. * * If the vendor branch has no 1.2, what we do now is point the "master" * named reference at the tip revision of the lowest numbered vendor branch * commit, then splice the old tip to the old branch, then delete the * vendor branch reference. * * A side effect of this code is to give a synthetic label to each * vendor branch that has not already been named. */ static void cvs_master_patch_vendor_branch(cvs_master *cm, cvs_file *cvs) { rev_ref *trunk = NULL; rev_ref *vendor = NULL; rev_ref *nvendor = NULL; trunk = cm->heads; assert(strcmp(trunk->ref_name, "master") == 0); for (vendor = cm->heads; vendor; vendor = vendor->next) { if (vendor->commit && cvs_is_vendor(vendor->commit->number)) { #ifdef CVSDEBUG char vrev[CVS_MAX_REV_LEN]; cvs_number_string(vendor->commit->number, vrev, sizeof(vrev)); fprintf(stderr, "Vendor branch ending in %s\n", vrev); #endif /* CVSDEBUG */ if (!vendor->ref_name) { char rev[CVS_MAX_REV_LEN]; char name[PATH_MAX]; cvs_number branch; cvs_commit *vlast; /* stash pointer to newest vendor branch, might need it later */ nvendor = vendor; for (vlast = vendor->commit; vlast; vlast = vlast->parent) if (!vlast->parent) break; memcpy(&branch, vlast->number, sizeof(cvs_number)); branch.c--; cvs_number_string(&branch, rev, sizeof(rev)); snprintf(name, sizeof(name), "import-%s", rev); vendor->ref_name = atom(name); vendor->parent = trunk; /* * Degree used to be set from vlast->number->c; * this should be equivalent, since the branches * have not yet been grafted. */ vendor->degree = vendor->commit->number->c; vendor->number = vendor->commit->number; } } } /* if there's a vendor branch and no commit 1.2... */ if (nvendor != NULL && trunk->commit->parent == NULL) { cvs_commit *vlast, *oldtip = trunk->commit; trunk->commit = nvendor->commit; trunk->degree = nvendor->commit->number->c; trunk->number = nvendor->commit->number; for (vlast = trunk->commit; vlast; vlast = vlast->parent) if (!vlast->parent) { vlast->parent = oldtip; break; } for (vendor = cm->heads; vendor; vendor = vendor->next) if (vendor->next == nvendor) vendor->next = nvendor->next; } } static void cvs_master_graft_branches(cvs_master *cm, cvs_file *cvs) /* turn disconnected branches into a tree by grafting roots to parents */ { rev_ref *h; cvs_commit *c; cvs_version *cv; cvs_branch *cb; /* * Glue branches together */ for (h = cm->heads; h; h = h->next) { /* * skip master branch; it "can't" join * any other branches and it may well end with a vendor * branch revision of the file, which will then create * a loop back to the recorded branch point */ if (h == cm->heads) continue; if (h->tail) continue; /* * Find last commit on branch */ for (c = h->commit; c && c->parent; c = c->parent) if (c->tail) { c = NULL; /* already been done, skip */ break; } if (c) { /* * Walk the version tree, looking for the branch location. * Note that in the presense of vendor branches, the * branch location may actually be out on that vendor branch */ for (cv = cvs->gen.versions; cv; cv = cv->next) { for (cb = cv->branches; cb; cb = cb->next) { if (cvs_number_compare(cb->number, c->number) == 0) { c->parent = cvs_master_find_revision(cm, cv->number); c->tail = true; break; } } if (c->parent) { #if 0 /* * check for a parallel vendor branch */ for (cb = cv->branches; cb; cb = cb->next) { if (cvs_is_vendor(cb->number)) { cvs_number v_n; cvs_commit *v_c, *n_v_c; warn("Found merge into vendor branch\n"); memcpy(&v_n, cb->number, sizeof(cvs_number)); v_c = NULL; /* * Walk to head of vendor branch */ while ((n_v_c = cvs_master_find_revision(cm, atom_cve_number(v_n)))) { /* * Stop if we reach a date after the * branch version date */ if (time_compare(n_v_c->date, c->date) > 0) break; v_c = n_v_c; v_n.n[v_n.c - 1]++; } if (v_c) { warn("%s: rewrite branch", cvs->name); dump_number_file(LOGFILE, " branch point", v_c->number); dump_number_file(LOGFILE, " branch version", c->number); fprintf(LOGFILE, "\n"); c->parent = v_c; } } } #endif break; } } } } } static rev_ref * cvs_master_find_branch(cvs_master *cm, const cvs_number *number) /* look up a revision reference in a revlist by symbol */ { cvs_number n; rev_ref *h; if (number->c < 2) return NULL; memcpy(&n, number, sizeof(cvs_number)); h = NULL; while (n.c >= 2) { const cvs_number *k = atom_cvs_number(n); for (h = cm->heads; h; h = h->next) { if (cvs_same_branch(h->number, k)) { break; } } if (h) break; n.c -= 2; } return h; } static void cvs_master_set_refs(cvs_master *cm, cvs_file *cvsfile) /* create head references or tags for each symbol in the CVS master */ { rev_ref *h, **ph, *h2; cvs_symbol *s; for (s = cvsfile->symbols; s; s = s->next) { cvs_commit *c = NULL; /* * Locate a symbolic name for this head */ if (cvs_is_head(s->number)) { for (h = cm->heads; h; h = h->next) { if (cvs_same_branch(h->commit->number, s->number)) break; } if (h) { if (!h->ref_name) { h->ref_name = s->symbol_name; h->degree = cvs_number_degree(s->number); } else h = rev_list_add_head(cm, h->commit, s->symbol_name, cvs_number_degree(s->number)); } else { cvs_number n; memcpy(&n, s->number, sizeof(cvs_number)); while (n.c >= 4) { n.c -= 2; c = cvs_master_find_revision(cm, atom_cvs_number(n)); if (c) break; } if (c) h = rev_list_add_head(cm, c, s->symbol_name, cvs_number_degree(s->number)); } if (h) h->number = s->number; } else { c = cvs_master_find_revision(cm, s->number); if (c) tag_commit(c, s->symbol_name, cvsfile); } } /* * Fix up unnamed heads. Give each one a synthetic branch tag named * after the branch root. */ for (h = cm->heads; h; h = h->next) { cvs_number n; cvs_commit *c; if (h->ref_name) continue; for (c = h->commit; c; c = c->parent) { if (!c->dead) break; } if (!c) { char buf[CVS_MAX_REV_LEN]; /* * Strange edge case here. Every revision on the branch * is in state 'dead', and there's no tag pointing to it. * (Yes, this has been seen in the wild.) The code used * to just do a 'continue' here; this produced spurious * unnumbered-head messages. * * We choose to discard the dead branch on the theory that * these revisions couldn't have been visible in the * archival state of the CVS, either. They might have been * visible at some past time in the evolution of the repo, * but that state is impossible to reconstruct. * * This is going to leave some allocated storage hanging. */ h->number = atom_cvs_number(cvs_zero); warn("discarding dead untagged branch %s in %s\n", cvs_number_string(h->commit->number, buf, sizeof(buf)), cvsfile->export_name); continue; } memcpy(&n, c->number, sizeof(cvs_number)); /* convert to branch form */ n.n[n.c-1] = n.n[n.c-2]; n.n[n.c-2] = 0; h->number = atom_cvs_number(n); h->degree = cvs_number_degree(&n); /* compute name after patching parents */ } /* discard zero-marked heads */ for (ph = &cm->heads; *ph; ph = &(h2->next)) { h2 = *ph; if ((*ph)->number == atom_cvs_number(cvs_zero)) *ph = (*ph)->next; } /* * Link heads together in a tree */ for (h = cm->heads; h; h = h->next) { cvs_number n; /* might have been flagged for discard above */ if (h->number == atom_cvs_number(cvs_zero)) continue; /* * keithp: can get unnumbered heads here * not sure what that means * * ESR: I found a bug in the code for patching vendor branches that * produced these. It is likely this is now a can't-happen. I have * re-tagged it as "internal error" but left it in place just in case. */ if (!h->number) { h->number = atom_cvs_number(cvs_zero); if (h->ref_name) warn("internal error - unnumbered head %s in %s\n", h->ref_name, cvsfile->export_name); else warn("internal error - unnumbered head in %s\n", cvsfile->export_name); } if (h->number->c >= 4) { memcpy(&n, h->number, sizeof(cvs_number)); n.c -= 2; h->parent = cvs_master_find_branch(cm, atom_cvs_number(n)); if (!h->parent && !cvs_is_vendor(h->number)) warn("warning - non-vendor %s branch %s has no parent\n", cvsfile->gen.master_name, h->ref_name); } if (h->parent && !h->ref_name) { char name[1024]; char rev[CVS_MAX_REV_LEN]; cvs_number_string(h->number, rev, sizeof(rev)); if (h->commit->commitid) sprintf(name, "%s-UNNAMED-BRANCH-%s", h->parent->ref_name, h->commit->commitid); else sprintf(name, "%s-UNNAMED-BRANCH", h->parent->ref_name); warn("warning - putting %s rev %s on unnamed branch %s off %s\n", cvsfile->gen.master_name, rev, name, h->parent->ref_name); h->ref_name = atom(name); } } } #ifdef REDBLACK static int cvs_symbol_name_compare(const void *x, const void *y) /* compare function used for red-black tree lookup */ { if (x < y) return -1; else if (y < x) return 1; else return 0; } #endif /* REDBLACK */ static cvs_symbol * cvs_find_symbol(cvs_file *cvs, const char *name) /* return the CVS symbol corresponding to a specified name */ { #ifdef REDBLACK struct rbtree_node *n, **tree; tree = &cvs->symbols_by_name; if (!(*tree)) { cvs_symbol *s; for (s = cvs->symbols; s ; s = s->next) rbtree_insert(tree, s->symbol_name, s, cvs_symbol_name_compare); } n = rbtree_lookup(*tree, name, cvs_symbol_name_compare); if (n) return(cvs_symbol*)rbtree_value(n); #else cvs_symbol *s; for (s = cvs->symbols; s; s = s->next) if (s->symbol_name == name) return s; #endif /* REDBLACK */ return NULL; } static int rev_ref_compare(cvs_file *cvs, const rev_ref *r1, const rev_ref *r2) /* comparison function used for topological sorting */ { cvs_symbol *s1, *s2; s1 = cvs_find_symbol(cvs, r1->ref_name); s2 = cvs_find_symbol(cvs, r2->ref_name); if (!s1) { if (!s2) return 0; return -1; } if (!s2) return 1; return cvs_number_compare(s1->number, s2->number); } static void cvs_master_sort_heads(cvs_master *cm, cvs_file *cvs) /* sort branch heads so parents are always before children; trunk first. */ { rev_ref *p = cm->heads, *q; rev_ref *e; rev_ref *l = NULL, *lastl = NULL; int k = 1; int i, psize, qsize; /* * Implemented from description at * http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html */ for (;;) { int passmerges = 0; passmerges = 0; while (p) { passmerges++; q = p; qsize = k; psize = 0; for (i = 0; i < k; i++) { if (!q->next) break; psize++; q = q->next; } while (psize || (qsize && q)) { if (!psize) { e = q; } else if (!(qsize && q)) { e = p; } else if (rev_ref_compare(cvs, p, q) > 0) { e = q; } else { e = p; } /* * If the element ever equals q, it is always safe to assume it * will come from q. The same is not true for p as p == q when * psize == 0 */ if (e == q) { e = q; q = q->next; qsize--; } else { e = p; p = p->next; psize--; } /* * Break the element out of its old list and append it to the * new sorted list */ e->next = NULL; if (l) { lastl->next = e; lastl = e; } else { l = lastl = e; } } p = q; } if (passmerges <= 1) break; p = l; l = lastl = NULL; k = 2*k; } cm->heads = l; #ifdef CVSDEBUG if (cvs->verbose > 0) { debugmsg("Sorted heads for %s\n", cvs->gen.master_name); for (e = cm->heads; e;) { debugmsg("\t"); //cvs_master_dump_ref_parents(stderr, e->parent); dump_number_file(LOGFILE, e->ref_name, e->number); debugmsg("\n"); e = e->next; } } #endif /* CVSDEBUG */ } cvs_commit * cvs_master_digest(cvs_file *cvs, cvs_master *cm, rev_master *master) /* fill out a linked list capturing the CVS master file structure */ { const cvs_number *trunk_number; cvs_commit *trunk; cvs_commit *branch; cvs_version *cv; cvs_branch *cb; cvs_version *ctrunk = NULL; if (!root_dir) root_dir = atom_dir(atom("\0")); build_rev_master(cvs, master); #if CVSDEBUG char buf[CVS_MAX_REV_LEN]; #endif /* CVSDEBUG */ build_branches(&cvs->gen.nodehash); /* * Locate first revision on trunk branch */ for (cv = cvs->gen.versions; cv; cv = cv->next) { if (cvs_is_trunk(cv->number) && (!ctrunk || cvs_number_compare(cv->number, ctrunk->number) < 0)) { ctrunk = cv; } } /* * Generate trunk branch */ if (ctrunk) trunk_number = ctrunk->number; else trunk_number = atom_cvs_number(lex_number("1.1")); trunk = cvs_master_branch_build(cvs, master, trunk_number); if (trunk) { rev_ref *t; t = rev_list_add_head(cm, trunk, atom("master"), 2); t->number = trunk_number; #if CVSDEBUG if (cvs->verbose > 0) debugmsg("Building trunk branch %s for %s:\n", cvs_number_string(t->number, buf, CVS_MAX_REV_LEN), cvs->gen.master_name); #endif /* CVSDEBUG */ } else { warn("warning - no master branch generated\n"); return NULL; /* cannot proceed with this master file */ } #ifdef CVSDEBUG /* * Search for other branches */ if (cvs->verbose > 0) debugmsg("Building non-trunk branches for %s:\n", cvs->gen.master_name); #endif /* CVSDEBUG */ for (cv = cvs->gen.versions; cv; cv = cv->next) { for (cb = cv->branches; cb; cb = cb->next) { branch = cvs_master_branch_build(cvs, master, cb->number); #ifdef CVSDEBUG if (cvs->verbose > 0) { char buf2[CVS_MAX_REV_LEN]; char buf3[CVS_MAX_REV_LEN]; debugmsg("\t%s\t->\t%s\t->\t%s\n", cvs_number_string(cv->number, buf, CVS_MAX_REV_LEN), cvs_number_string(cb->number, buf2, CVS_MAX_REV_LEN), cvs_number_string(branch->number, buf3, CVS_MAX_REV_LEN)); } #endif /* CVSDEBUG */ rev_list_add_head(cm, branch, NULL, 0); } } cvs_master_patch_vendor_branch(cm, cvs); cvs_master_graft_branches(cm, cvs); cvs_master_set_refs(cm, cvs); cvs_master_sort_heads(cm, cvs); rev_list_set_tail(cm); #ifdef CVSDEBUG if (cvs->verbose > 0) { rev_ref *lh; debugmsg("Named heads in %s:\n", cvs->gen.master_name); for (lh = cm->heads; lh; lh = lh->next) { char buf[CVS_MAX_REV_LEN]; debugmsg("\tname = %s\tnumber = %s\n", lh->ref_name, cvs_number_string(lh->number, buf, CVS_MAX_REV_LEN)); } } #endif /* CVSDEBUG */ //rev_list_validate(cm); return trunk; /* to allow testing for an error in calling function */ } // end cvs-fast-export-1.35/revdir.c0000664000175000017500000000104112624157451014317 0ustar esresr/* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ /* * Pack a collection of files into a space-efficient representation in * which directories are coalesced. */ #include "cvs.h" #include "hash.h" #include "revdir.h" static bool dir_is_ancestor(const master_dir *child, const master_dir *ancestor) { while ((child = child->parent)) if (child == ancestor) { return true; } return false; } #ifdef TREEPACK #include "treepack.c" #else #include "dirpack.c" #endif // end cvs-fast-export-1.35/revdir.h0000664000175000017500000000301312445567170014331 0ustar esresr#ifndef _REVDIR_H_ #define _REVDIR_H_ #include "cvs.h" #define MAX_DIR_DEPTH 64 /* struct revdir is defined in cvs.h so we can take advantage of struct packing */ typedef struct _revdir_iter revdir_iter; /* pack a list of files into a revdir, reusing sequences we've seen before */ void revdir_pack_files(const cvs_commit **files, const size_t nfiles, revdir *revdir); /* count the number of files in a revdir */ serial_t revdir_nfiles(const revdir *revdir); /* Create a revdir a file at a time */ void revdir_pack_alloc(const size_t max_size); void revdir_pack_init(void); void revdir_pack_add(const cvs_commit *file, const master_dir *dir); void revdir_pack_end(revdir *revdir); void revdir_pack_free(void); /* allocate an iterator to use with a revdir */ revdir_iter * revdir_iter_alloc(const revdir *revdir); /* set an iterator to the start of a revdir */ void revdir_iter_start(revdir_iter *iter, const revdir *revdir); /* get the next item from a revdir */ cvs_commit * revdir_iter_next(revdir_iter *it); /* skip a "dir" in a revdir */ cvs_commit * revdir_iter_next_dir(revdir_iter *it); /* are two revdirs pointing to the same "dir" */ bool revdir_iter_same_dir(const revdir_iter *it1, const revdir_iter *it2); void revdir_free_bufs(void); void revdir_free(void); /* useful if you're reusing an iterator with different revdirs */ #define REVDIR_ITER_START(iter, revdir) \ if (!(iter)) \ iter = revdir_iter_alloc((revdir)); \ else \ revdir_iter_start((iter), (revdir)) #endif /* _REVDIR_H_ */ cvs-fast-export-1.35/revlist.c0000664000175000017500000000370612624157451014526 0ustar esresr/* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #include "cvs.h" /* * A revision list is the history for an entire RCS/CVS repository. * These are utility functions used by both the analysis phase and * the DAG merge code. */ rev_ref * rev_list_add_head(head_list *rl, cvs_commit *commit, const char *name, const int degree) /* decorate a commit list with a named head reference */ { rev_ref *r; rev_ref **list = &rl->heads; while (*list) list = &(*list)->next; r = xcalloc(1, sizeof(rev_ref), "adding head reference"); r->commit = commit; r->ref_name = name; r->next = *list; r->degree = degree; *list = r; return r; } void rev_list_set_tail(head_list *rl) /* set tail bits so we can walk through each commit in a revlist exactly once */ { rev_ref *head; cvs_commit *c; /* * Set tail bit true where traversal should stop in order to avoid * multiple visits to the same commit. */ for (head = rl->heads; head; head = head->next) { flag tail = true; /* set tail on each previously visited head reference */ if (head->commit && head->commit->refcount > 0) { head->tail = tail; tail = false; } for (c = head->commit; c; c = c->parent) { /* set tail on the child of the first join commit on this branch */ if (tail && c->parent && c->refcount < c->parent->refcount) { c->tail = true; tail = false; } if (c->refcount++ >= MAX_BRANCHCOUNT_T) fatal_error("too many branches, widen branchcount_t"); } } } #ifdef __UNUSED__ bool rev_list_validate(head_list *rl) /* entry point - validate the output */ { rev_ref *h; cvs_commit *c; for (h = rl->heads; h; h = h->next) { if (h->tail) continue; for (c = h->commit; c && c->parent; c = c->parent) { if (c->tail) break; if (time_compare(c->date, c->parent->date) < 0) return false; } } return true; } #endif /* end */ cvs-fast-export-1.35/tags.c0000664000175000017500000000525012435754366014000 0ustar esresr#include #include #include #ifdef THREADS #include #endif /* THREADS */ #include "cvs.h" /* * Manage objects that represent gitspace lightweight tags. * * Because we're going to try to unify tags from different branches * the tag table should *not* be local to any one master. */ static tag_t *table[4096]; tag_t *all_tags; size_t tag_count = 0; #ifdef THREADS static pthread_mutex_t tag_mutex = PTHREAD_MUTEX_INITIALIZER; #endif /* THREADS */ static int tag_hash(const char *name) /* return the hash code for a specified tag */ { uintptr_t l = (uintptr_t)name; int res = 0; while (l) { res ^= l; l >>= 12; } return res & 4095; } static tag_t *find_tag(const char *name) /* look up a tag by name */ { int hash = tag_hash(name); tag_t *tag; for (tag = table[hash]; tag; tag = tag->hash_next) if (tag->name == name) return tag; tag = xcalloc(1, sizeof(tag_t), "tag lookup"); tag->name = name; tag->hash_next = table[hash]; table[hash] = tag; tag->next = all_tags; all_tags = tag; tag_count++; return tag; } void tag_commit(cvs_commit *c, const char *name, cvs_file *cvsfile) /* add a CVS commit to the list associated with a named tag */ { tag_t *tag; #ifdef THREADS if (threads > 1) pthread_mutex_lock(&tag_mutex); #endif /* THREADS */ tag = find_tag(name); if (tag->last == cvsfile->gen.master_name) { announce("duplicate tag %s in CVS master %s, ignoring\n", name, cvsfile->gen.master_name); } else { tag->last = cvsfile->gen.master_name; if (!tag->left) { chunk_t *v = xmalloc(sizeof(chunk_t), __func__); v->next = tag->commits; tag->commits = v; tag->left = Ncommits; } tag->commits->v[--tag->left] = c; tag->count++; } #ifdef THREADS if (threads > 1) pthread_mutex_unlock(&tag_mutex); #endif /* THREADS */ } cvs_commit **tagged(tag_t *tag) /* return an allocated list of pointers to commits with the specified tag */ { cvs_commit **v = NULL; if (tag->count) { /* not mutex-locked because it's not called during analysis phase */ cvs_commit **p = xmalloc(tag->count * sizeof(*p), __func__); chunk_t *c = tag->commits; int n = Ncommits - tag->left; v = p; memcpy(p, c->v + tag->left, n * sizeof(*p)); for (c = c->next, p += n; c; c = c->next, p += Ncommits) memcpy(p, c->v, Ncommits * sizeof(*p)); } return v; } void discard_tags(void) /* discard all tag storage */ { tag_t *tag = all_tags; all_tags = NULL; while (tag) { tag_t *p = tag->next; chunk_t *c = tag->commits; while (c) { chunk_t *next = c->next; free(c); c = next; } free(tag); tag = p; } } /* end */ cvs-fast-export-1.35/treepack.c0000664000175000017500000002154512446524223014632 0ustar esresr/* * Implementation of revdir.h that saves a lot more space than the original dirpack scheme. * Designed to be included in revdir.c. */ #define REV_DIR_HASH 786433 /* Names are getting confusing. Externally we call things a revdir, where really it's * just a list of revisions. * Internally in treepack, we store as a directory of revisions, which each level having * files and subdirectories. A good name for this would appear to be revdir... */ struct _rev_pack { /* a directory containing a collection of subdirs and a collection of file revisions */ hash_t hash; serial_t ndirs; serial_t nfiles; rev_pack **dirs; cvs_commit **files; }; typedef struct _rev_pack_hash { struct _rev_pack_hash *next; rev_pack dir; } rev_pack_hash; static rev_pack_hash *buckets[REV_DIR_HASH]; typedef struct _pack_frame { const master_dir *dir; const rev_pack **dirs; hash_t hash; unsigned short ndirs; unsigned short sdirs; } pack_frame; /* variables used by streaming pack interface */ static serial_t sfiles = 0; static serial_t nfiles = 0; static const cvs_commit **files = NULL; static pack_frame *frame; static pack_frame frames[MAX_DIR_DEPTH]; static const rev_pack * rev_pack_dir(void) { rev_pack_hash **bucket = &buckets[frame->hash % REV_DIR_HASH]; rev_pack_hash *h; /* avoid packing a file list if we've done it before */ for (h = *bucket; h; h = h->next) { if (h->dir.hash == frame->hash && h->dir.nfiles == nfiles && h->dir.ndirs == frame->ndirs && !memcmp(frame->dirs, h->dir.dirs, frame->ndirs * sizeof(rev_pack *)) && !memcmp(files, h->dir.files, nfiles * sizeof(cvs_commit *))) { return &h->dir; } } h = xmalloc(sizeof(rev_pack_hash), __func__); h->next = *bucket; *bucket = h; h->dir.hash = frame->hash; h->dir.ndirs = frame->ndirs; h->dir.dirs = xmalloc(frame->ndirs * sizeof(rev_pack *), __func__); memcpy(h->dir.dirs, frame->dirs, frame->ndirs * sizeof(rev_pack *)); h->dir.nfiles = nfiles; h->dir.files = xmalloc(nfiles * sizeof(cvs_commit *), __func__); memcpy(h->dir.files, files, nfiles * sizeof(cvs_commit *)); return &h->dir; } /* Post order tree traversal iterator. */ typedef struct _dir_pos { const rev_pack *parent; rev_pack **dir; rev_pack **dirmax; } dir_pos; struct _revdir_iter { cvs_commit **file; cvs_commit **filemax; size_t dirpos; // current dir is dirstack[dirpos] dir_pos dirstack[MAX_DIR_DEPTH]; }; bool revdir_iter_same_dir(const revdir_iter *it1, const revdir_iter *it2) /* Are two file iterators pointing to the same revdir? */ { return it1->dirstack[it1->dirpos].dir == it2->dirstack[it2->dirpos].dir; } cvs_commit * revdir_iter_next(revdir_iter *it) { while (1) { if (it->file != it->filemax) return *it->file++; // end of stack if (!it->dirpos) return NULL; // pop the stack dir_pos *d = &it->dirstack[--it->dirpos]; if (++d->dir != d->dirmax) { // does new dir have subdirs? const rev_pack *dir = *d->dir; while (1) { d = &it->dirstack[++it->dirpos]; d->parent = dir; d->dir = dir->dirs; d->dirmax = dir->dirs + dir->ndirs; if (dir->ndirs > 0) dir = dir->dirs[0]; else break; } it->file = dir->files; it->filemax = dir->files + dir->nfiles; } else { // all subdirs done, now do files in this dir const rev_pack *dir = d->parent; it->file = dir->files; it->filemax = dir->files + dir->nfiles; } } } cvs_commit * revdir_iter_next_dir(revdir_iter *it) /* skip the current directory */ { while(1) { if (!it->dirpos) return NULL; dir_pos *d = &it->dirstack[--it->dirpos]; if (++d->dir != d->dirmax) { const rev_pack *dir = *d->dir; while (1) { d = &it->dirstack[++it->dirpos]; d->parent = dir; d->dir = dir->dirs; d->dirmax = dir->dirs + dir->ndirs; if (dir->ndirs > 0) dir = dir->dirs[0]; else break; } it->file = dir->files; it->filemax = dir->files + dir->nfiles; } else { const rev_pack *dir = d->parent; it->file = dir->files; it->filemax = dir->files + dir->nfiles; } if (it->file != it->filemax) return *it->file++; } } void revdir_iter_start(revdir_iter *it, const revdir *revdir) /* post order traversal of rev_dir tree */ { const rev_pack *dir = revdir->revpack; it->dirpos = -1; while (1) { dir_pos *d = &it->dirstack[++it->dirpos]; d->parent = dir; d->dir = dir->dirs; d->dirmax = dir->dirs + dir->ndirs; if (dir->ndirs > 0) dir = dir->dirs[0]; else break; } it->file = dir->files; it->filemax = dir->files + dir->nfiles; } revdir_iter * revdir_iter_alloc(const revdir *revdir) { revdir_iter *it = xmalloc(sizeof(revdir_iter), __func__); revdir_iter_start(it, revdir); return it; } static const master_dir * first_subdir (const master_dir *child, const master_dir *ancestor) /* in ancestor/d1/d2/child, return d1 */ { while (child->parent != ancestor) child = child->parent; return child; } void revdir_pack_alloc(const size_t max_size) { if (!files) { files = xmalloc(max_size * sizeof(cvs_commit *), __func__); sfiles = max_size; } else if (sfiles < max_size) { files = xrealloc(files, max_size * sizeof(cvs_commit *), __func__); sfiles = max_size; } } void revdir_pack_init(void) { frame = frames; nfiles = 0; frames[0].dir = root_dir; frames[0].ndirs = 0; frames[0].hash = hash_init(); } static void push_rev_pack(const rev_pack * const r) /* Store a revpack in the recursive gathering area */ { unsigned short *s = &frame->sdirs; if (*s == frame->ndirs) { if (!*s) *s = 16; else *s *= 2; frame->dirs = xrealloc(frame->dirs, *s * sizeof(rev_pack *), __func__); } frame->dirs[frame->ndirs++] = r; } void revdir_pack_add(const cvs_commit *file, const master_dir *dir) { while (1) { if (frame->dir == dir) { /* If you are using TREEPACK then this is the hottest inner * loop in the application. Avoid dereferencing file */ files[nfiles++] = file; /* Proper FNV1a is a byte at a time, but this is effective * with the amount of data we're typically mixing into the hash * and very lightweight */ frame->hash = (frame->hash ^ (uintptr_t)file) * 16777619U; return; } if (dir_is_ancestor(dir, frame->dir)) { if (frame - frames == MAX_DIR_DEPTH) fatal_error("Directories nested too deep, increase MAX_DIR_DEPTH\n"); const master_dir *parent = frame++->dir; frame->dir = first_subdir(dir, parent); frame->ndirs = 0; frame->hash = hash_init(); continue; } const rev_pack * const r = rev_pack_dir(); nfiles = 0; frame--; frame->hash = HASH_COMBINE(frame->hash, r->hash); push_rev_pack(r); } } void revdir_pack_end(revdir *revdir) { const rev_pack * r = NULL; while (1) { r = rev_pack_dir(); if (frame == frames) break; nfiles = 0; frame--; frame->hash = HASH_COMBINE(frame->hash, r->hash); push_rev_pack(r); } revdir->revpack = r; } void revdir_pack_free(void) { free(files); files = NULL; nfiles = 0; sfiles = 0; } static serial_t revpack_nfiles(const rev_pack *revpack) { serial_t c = 0, i; for (i = 0; i < revpack->ndirs; i++) c += revpack_nfiles(revpack->dirs[i]); return c + revpack->nfiles; } serial_t revdir_nfiles(const revdir *revdir) { return revpack_nfiles(revdir->revpack); } void revdir_pack_files(const cvs_commit **files, const size_t nfiles, revdir *revdir) { size_t i; #ifdef ORDERDEBUG fputs("Packing:\n", stderr); { const cvs_commit **s; for (s = files; s < files + nfiles; s++) fprintf(stderr, "cvs_commit: %s\n", (*s)->master->name); } #endif /* ORDERDEBUG */ /* * We want the files in directory-path order so we get the longest * possible runs of common directory prefixes, and thus maximum * space-saving effect out of the next step. This reduces * working-set size at the expense of the sort runtime. * * That used to be done with a qsort(3) call here, but sorting the * masters at the input stage causes them to come out in the right * order here, without multiple additional sorts. */ revdir_pack_alloc(nfiles); revdir_pack_init(); for (i = 0; i < nfiles; i++) revdir_pack_add(files[i], files[i]->dir); revdir_pack_end(revdir); revdir_pack_free(); } void revdir_free(void) { size_t i; for (i = 0; i < REV_DIR_HASH; i++) { rev_pack_hash **bucket = &buckets[i]; rev_pack_hash *h; while ((h = *bucket)) { *bucket = h->next; free(h->dir.dirs); free(h->dir.files); free(h); } } } void revdir_free_bufs(void) { size_t i; for (i = 0; i < MAX_DIR_DEPTH; i++) { free(frames[i].dirs); frames[i].dir = NULL; frames[i].sdirs = 0; } } cvs-fast-export-1.35/utils.c0000664000175000017500000001455612446524223014200 0ustar esresr#include #include "cvs.h" #if defined(__APPLE__) #include int clock_gettime(clockid_t clock_id, struct timespec *tp) { mach_timebase_info_data_t timebase; mach_timebase_info(&timebase); uint64_t time = mach_absolute_time(); tp->tv_nsec = ((double)time * (double)timebase.numer)/((double)timebase.denom); tp->tv_sec = ((double)time * (double)timebase.numer)/((double)timebase.denom * NSEC_PER_SEC); return EXIT_SUCCESS; } #endif bool nowarn; unsigned int warncount; #if _POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600 void* xmemalign(size_t align, size_t size, char const *legend) { void *ret; int err; err = posix_memalign(&ret, align, size); if (err) fatal_error("posix_memalign(%zd, %zd) failed in %s: %s", align, size, legend, strerror(err)); return ret; } #endif void* xmalloc(size_t size, char const *legend) { void *ret = malloc(size); #ifndef __COVERITY__ if (!ret && !size) ret = malloc(1); #endif /* __COVERITY__ */ if (!ret) fatal_system_error("Out of memory, malloc(%zd) failed in %s", size, legend); return ret; } void* xcalloc(size_t nmemb, size_t size, char const *legend) { void *ret = calloc(nmemb, size); if (!ret) fatal_system_error("Out of memory, calloc(%zd, %zd) failed in %s", nmemb, size, legend); return ret; } void* xrealloc(void *ptr, size_t size, char const *legend) { void *ret = realloc(ptr, size); #ifndef __COVERITY__ if (!ret && !size) ret = realloc(ptr, 1); #endif /* __COVERITY__ */ if (!ret) fatal_system_error("Out of memory, realloc(%zd) failed in %s", size, legend); return ret; } char * cvstime2rfc3339(const cvstime_t date) /* RFC3339 time representation (not thread-safe!) */ { static char timestr[23]; time_t udate = RCS_EPOCH + date; struct tm *tm = localtime(&udate); (void)strftime(timestr, sizeof(timestr), "%Y-%m-%dT%H:%M:%SZ", tm); return timestr; } /* * Print progress messages. * * Call progress_begin() at the start of some activity that may take a * long time. Call progress_step() zero or more times during that * activity. Call progress_end() at the end of the activity. * * Global 'progress' flag enables or disables all this. * * Note: These functions are not thread-safe! */ static char *progress_msg = ""; static int progress_counter = 0; static va_list _unused_va_list; static struct timespec start; static int progress_max = NO_MAX; static bool progress_in_progress; static void _progress_print(bool /*newline*/, const char * /*format*/, va_list) _printflike(2, 0); void progress_begin(const char *msg, const int max) { static char timestr[128]; time_t now = time(NULL); struct tm *tm = localtime(&now); if (!progress) return; progress_max = max; progress_counter = 0; progress_in_progress = true; (void)strftime(timestr, sizeof(timestr), "%Y-%m-%dT%H:%M:%SZ: ", tm); strncat(timestr, msg, sizeof(timestr)-1); progress_msg = timestr; _progress_print(false, "", _unused_va_list); clock_gettime(CLOCK_REALTIME, &start); } void progress_step(void) { if (!progress) return; progress_in_progress = true; progress_counter++; _progress_print(false, "", _unused_va_list); } void progress_jump(const int count) { if (!progress) return; progress_in_progress = true; progress_counter = count; _progress_print(false, "", _unused_va_list); } void progress_end(const char *format, ...) { va_list args; if (!progress) return; progress_in_progress = false; progress_max = progress_counter; /* message will say "100%" or "done" */ va_start(args, format); _progress_print(true, format, args); progress_max = NO_MAX; va_end(args); } static void _progress_print(bool newline, const char *format, va_list args) { if (!progress) return; /* * If a non-empty format was given, use the format and args. * Otherwise, try to print as much information as possible, * such as: : of () * or: : * or: : done * or just: */ if (format && *format) { fprintf(STATUS, "\r%s", progress_msg); vfprintf(STATUS, format, args); } else if (progress_max > 0) { fprintf(STATUS, "\r%s%d of %d(%d%%) ", progress_msg, progress_counter, progress_max, (progress_counter * 100 / progress_max)); } else if (progress_counter > 0) { fprintf(STATUS, "\r%s%d", progress_msg, progress_counter); } else if (progress_counter == progress_max) { /* they should both be zero at this point, but it still means "done" */ fprintf(STATUS, "\r%sdone ", progress_msg); } else { fprintf(STATUS, "\r%s", progress_msg); } if (newline) { struct timespec end; clock_gettime(CLOCK_REALTIME, &end); fprintf(STATUS, " (%.3fsec)", seconds_diff(&end, &start)); fprintf(STATUS, "\n"); } fflush(STATUS); } static void progress_interrupt(void) { if (progress && progress_in_progress) { fputc('\n', stderr); progress_in_progress = false; } #ifdef __UNUSED__ if (progress_max != NO_MAX) { progress_max = NO_MAX; } #endif /* __UNUSED__ */ } void fatal_system_error(char const *format,...) { va_list args; int errno_save = errno; progress_interrupt(); fprintf(stderr, "cvs-fast-export fatal: "); va_start(args, format); vfprintf(stderr, format, args); va_end(args); fputs(": ", stderr); errno = errno_save; perror(NULL); exit(1); } void fatal_error(char const *format,...) { va_list args; progress_interrupt(); fprintf(stderr, "cvs-fast-export fatal: "); va_start(args, format); vfprintf(stderr, format, args); va_end(args); fprintf(stderr, "\n"); exit(1); } void announce(char const *format,...) { va_list args; progress_interrupt(); fprintf(stderr, "cvs-fast-export: "); va_start(args, format); vfprintf(stderr, format, args); va_end(args); } void warn(char const *format,...) { va_list args; if (nowarn) return; if (LOGFILE == stderr) progress_interrupt(); fprintf(LOGFILE, "cvs-fast-export: "); va_start(args, format); vfprintf(LOGFILE, format, args); va_end(args); warncount++; } void debugmsg(char const *format,...) { va_list args; progress_interrupt(); va_start(args, format); vfprintf(LOGFILE, format, args); va_end(args); } // end cvs-fast-export-1.35/gram.y0000600000175000017500000001650012624157452013775 0ustar esresr%{ /* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #include "cvs.h" #include "gram.h" #include "lex.h" extern void yyerror(yyscan_t, cvs_file *, const char *); extern YY_DECL; /* FIXME: once the Bison bug requiring this is fixed */ %} /* * Properly, the first declaration in %parse-params should have the * type yyscan_t, but this runs into the problem that this type is both * declared in lex.h and needed in gram.y - whch lex.h needs. We * used to kluge around this by declaring typredef void *yyscan_t * in CVS, but this caused other problems including complaints * from compilers like clang that barf on duplicate typedefs. */ %define api.pure full %lex-param {yyscan_t scanner} %lex-param {cvs_file *cvsfile} %parse-param {void *scanner} %parse-param {cvs_file *cvsfile} %union { int i; cvstime_t date; char *s; /* on heap */ const char *atom; cvs_text text; cvs_number number; cvs_symbol *symbol; cvs_version *version; cvs_version **vlist; cvs_patch *patch; cvs_patch **patches; cvs_branch *branch; cvs_file *file; } /* * There's a good description of the CVS master format at: * http://www.opensource.apple.com/source/cvs/cvs-19/cvs/doc/RCSFILES?txt */ %token HEAD BRANCH ACCESS SYMBOLS LOCKS COMMENT DATE %token BRANCHES DELTATYPE NEXT COMMITID EXPAND %token GROUP KOPT OWNER PERMISSIONS FILENAME MERGEPOINT HARDLINKS %token DESC LOG TEXT STRICT AUTHOR STATE %token SEMI COLON IGNORED %token BRAINDAMAGED_NUMBER %token LOGIN %token TOKEN %token DATA %token TEXT_DATA %token NUMBER %type text %type log %type accesslist logins %type symbollist symbol symbols %type revision %type revisions %type date %type branches numbers %type revtrailer commitid %type name %type author state %type deltatype %type group %type owner %type permissions %type filename %type mergepoint %type next opt_number %type patch %type patches %% file : headers revisions desc patches { /* The description text (if any) is only used * for empty log messages in the 'patch' production */ free((void *)cvsfile->description); cvsfile->description = NULL; } ; headers : header headers | ; header : HEAD opt_number SEMI { cvsfile->head = atom_cvs_number($2); } | BRANCH NUMBER SEMI { cvsfile->branch = atom_cvs_number($2); } | accesslist | symbollist { cvsfile->symbols = $1; } | LOCKS locks SEMI lock_type | COMMENT DATA SEMI { free($2); } | EXPAND DATA SEMI { cvsfile->gen.expand = expand_override($2); } ; locks : locks lock | ; lock : TOKEN COLON NUMBER ; lock_type : STRICT SEMI | ; accesslist : ACCESS logins SEMI { /******************************************************************** * From OPTIONS in rcs(1) man page * * -alogins * Append the login names appearing in the comma-separated list logins * to the access list of the RCS file. * * The logins in the access list seems to be ignored by all RCS operations. * Nevertheless it is appropriate to allow an access list with logins. * Some RCS files have them. Without this patch you get a syntax error * if you have logins in the access list. JW 20151120 *******************************************************************/ $$ = $2; } ; logins : logins LOGIN { $$ = NULL; /* ignore LOGIN */ } | { $$ = NULL; /* empty access list */ } ; symbollist : SYMBOLS symbols SEMI { $$ = $2; } ; symbols : symbols symbol { $2->next = $1; $$ = $2; } | symbols fscked_symbol { $$ = $1; } | { $$ = NULL; } ; symbol : name COLON NUMBER { $$ = xcalloc (1, sizeof (cvs_symbol), "making symbol"); $$->symbol_name = $1; $$->number = atom_cvs_number($3); } ; fscked_symbol : name COLON BRAINDAMAGED_NUMBER { warn("ignoring symbol %s (FreeBSD RELENG_2_1_0 braindamage?)\n", $1); } ; name : TOKEN | NUMBER { char name[CVS_MAX_REV_LEN]; cvs_number_string (&$1, name, sizeof(name)); $$ = atom (name); } ; revisions : revisions revision { *$1 = $2; $$ = &$2->next;} | { $$ = &cvsfile->gen.versions; } ; revtrailer : /* empty */ { $$ = NULL; } | revtrailer commitid { $$ = $2; } | revtrailer ignored ; /* ignored items from CVS-NT (except hardlinks which is from late GNU CVS) */ ignored : owner | group | deltatype | kopt | permissions | mergepoint | filename | hardlinks; revision : NUMBER date author state branches next revtrailer { $$ = xcalloc (1, sizeof (cvs_version), "gram.y::revision"); $$->number = atom_cvs_number($1); $$->date = $2; $$->author = $3; $$->state = $4; $$->dead = !strcmp ($4, "dead"); $$->branches = $5; $$->parent = atom_cvs_number($6); $$->commitid = $7; if ($$->commitid == NULL && cvsfile->skew_vulnerable < $$->date) cvsfile->skew_vulnerable = $$->date; hash_version(&cvsfile->gen.nodehash, $$); ++cvsfile->nversions; } ; date : DATE NUMBER SEMI { $$ = lex_date (&$2, scanner, cvsfile); } ; author : AUTHOR TOKEN SEMI { $$ = $2; } ; state : STATE TOKEN SEMI { $$ = $2; } ; branches : BRANCHES numbers SEMI { $$ = $2; } ; numbers : NUMBER numbers { $$ = xcalloc (1, sizeof (cvs_branch), "gram.y::numbers"); $$->next = $2; $$->number = atom_cvs_number($1); hash_branch(&cvsfile->gen.nodehash, $$); } | { $$ = NULL; } ; next : NEXT opt_number SEMI { $$ = $2; } ; opt_number : NUMBER { $$ = $1; } | { $$.c = 0; } ; commitid : COMMITID TOKEN SEMI { $$ = $2; } ; desc : DESC DATA { cvsfile->description = $2; } ; patches : patches patch { *$1 = $2; $$ = &$2->next; } | { $$ = &cvsfile->gen.patches; } ; patch : NUMBER log text { $$ = xcalloc (1, sizeof (cvs_patch), "gram.y::patch"); $$->number = atom_cvs_number($1); if (!strcmp($2, "Initial revision\n")) { /* description is available because the * desc production has already been reduced */ if (strlen(cvsfile->description) == 0) $$->log = atom("*** empty log message ***\n"); else $$->log = atom(cvsfile->description); } else $$->log = atom($2); $$->text = $3; hash_patch(&cvsfile->gen.nodehash, $$); free($2); } ; log : LOG DATA { $$ = $2; } ; text : TEXT TEXT_DATA { $$ = $2; } ; deltatype : DELTATYPE TOKEN SEMI { $$ = $2; } ; group : GROUP IGNORED SEMI { $$ = NULL; } ; kopt : KOPT IGNORED SEMI | KOPT SEMI ; owner : OWNER IGNORED SEMI { $$ = NULL; } ; permissions : PERMISSIONS IGNORED SEMI { $$ = NULL; } ; filename : FILENAME IGNORED SEMI { $$ = NULL; } ; mergepoint : MERGEPOINT NUMBER SEMI { $$ = $2; } ; hardlinks : HARDLINKS strings SEMI ; strings : IGNORED strings | /* empty*/ ; %% void yyerror(yyscan_t scanner, cvs_file *cvs, const char *msg) { fatal_error("parse error %s at %s\n", msg, yyget_text(scanner)); } cvs-fast-export-1.35/lex.l0000664000175000017500000002105712624157452013637 0ustar esresr%{ /* * Copyright © 2006 Keith Packard * * SPDX-License-Identifier: GPL-2.0+ */ #include "cvs.h" #include "gram.h" /* lex.h should declare these, and does, in 2.5.39. But didn't, in 2.5.35. */ int yyget_column (yyscan_t); void yyset_column(int, yyscan_t); static char * parse_data(yyscan_t scanner); static void parse_text(cvs_text *text, yyscan_t scanner, cvs_file *); static char * parse_data_until_newline(yyscan_t scanner); static void fast_export_sanitize(yyscan_t scanner, cvs_file *cvs); /* * A relative of export.c's optimization, we can use unlocked getc * in the body of the lexer, because the FILE pointers returned by yyget_in() * are all private to the invoking thread. */ #ifdef __GLIBC__ #undef getc #define getc getc_unlocked #endif /* __GLIBC__ */ /* FIXME: this is inefficient */ #define YY_INPUT(buf,result,max_size) { \ int c = getc(yyget_in(yyscanner)); \ result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \ } YY_DECL; %} %option reentrant bison-bridge %option warn nodefault %option pointer %option noyywrap noyyget_extra noyyget_leng noyyset_lineno %option noyyget_out noyyset_out noyyget_lval noyyset_lval %option noyyget_lloc noyyset_lloc noyyget_debug noyyset_debug %s CONTENT SKIP COMMIT PERM REVISION FNAME SKIPTOSEMI ACCESSS AUTHORSS %% head BEGIN(CONTENT); return HEAD; branch BEGIN(CONTENT); return BRANCH; access BEGIN(ACCESSS); return ACCESS; symbols BEGIN(CONTENT); return SYMBOLS; locks BEGIN(CONTENT); return LOCKS; comment BEGIN(CONTENT); return COMMENT; expand BEGIN(CONTENT); return EXPAND; date BEGIN(CONTENT); return DATE; branches BEGIN(CONTENT); return BRANCHES; next BEGIN(CONTENT); return NEXT; commitid BEGIN(COMMIT); return COMMITID; strict BEGIN(CONTENT); return STRICT; author BEGIN(AUTHORSS); return AUTHOR; state BEGIN(CONTENT); return STATE; deltatype BEGIN(CONTENT); return DELTATYPE; group BEGIN(PERM); return GROUP; kopt BEGIN(SKIPTOSEMI); return KOPT; owner BEGIN(PERM); return OWNER; permissions BEGIN(PERM); return PERMISSIONS; filename BEGIN(FNAME); return FILENAME; mergepoint1 BEGIN(REVISION); return MERGEPOINT; hardlinks BEGIN(SKIPTOSEMI); return HARDLINKS; desc return DESC; log return LOG; text BEGIN(SKIP); return TEXT; @ { parse_text(&yylval->text, yyscanner, cvs); BEGIN(INITIAL); return TEXT_DATA; } [-a-zA-Z_+%][-a-zA-Z_0-9+/%=.~^\\*?#!\[\]()<>]* { fast_export_sanitize(yyscanner, cvs); yylval->atom = atom(yytext); return TOKEN; } [a-zA-Z_][a-zA-Z_0-9]* { return LOGIN; } [-a-zA-Z_0-9+%][-a-zA-Z_0-9+/%=.~^\\*?]* { fast_export_sanitize(yyscanner, cvs); yylval->atom = atom(yytext); return TOKEN; } [0-9]+ { return IGNORED; } [0-9a-zA-Z]+ { yylval->atom = atom(yytext); return TOKEN; } [0-9]+\.[0-9.]* { yylval->number = lex_number(yytext); return NUMBER; } [^;]* { return IGNORED; } [0-9]+\.[0-9.]* { yylval->number = lex_number(yytext); return NUMBER; } ; BEGIN(INITIAL); return SEMI; : return COLON; [^;]* { #ifdef __UNUSED__ /* * If we ever need the data from the kopt * or hardlinks clause, * (1) Condition in this. * (2) Condition in the definition of * parse_data_until_newline() below. * (3) Change IGNORED to DATA * (4) Make the corresponding change * in the grammar file. * Renember, parse_data_until_newline() * returns allocated storage. */ yylval->s = parse_data_until_newline(yyscanner); return DATA; #else return IGNORED; #endif /* __UNUSED__ */ } @ { yylval->s = parse_data(yyscanner); return DATA; } " " ; \t ; \n ; 1 return BRAINDAMAGED_NUMBER; . { warn("%s: (%d) ignoring %c\n", cvs->gen.master_name, yylineno, yytext[0]); } %% /* * A variable-length buffer, allocated on the stack first * but can grow to use the heap. */ struct varbuf { int max, cur; char *string; char buf[1024]; }; static void varbuf_init(struct varbuf *buf) { buf->max = sizeof buf->buf; buf->cur = 0; buf->string = buf->buf; } static void varbuf_add(struct varbuf *buf, char c) { if (buf->cur == buf->max) { if (buf->string == buf->buf) { buf->max *= 2; buf->string = xmalloc(buf->max, __func__); memcpy(buf->string, buf->buf, buf->cur); } else { buf->max *= 2; buf->string = xrealloc(buf->string, buf->max, __func__); } } buf->string[buf->cur++] = c; } static void varbuf_free(struct varbuf *buf) { if (buf->string != buf->buf) { free(buf->string); } } static char *varbuf_dup(struct varbuf *buf, const char *legend) { char *dup = xmalloc(buf->cur, legend); memcpy(dup, buf->string, buf->cur); return dup; } static char * parse_data(yyscan_t yyscanner) { int c; char *ret; struct varbuf buf; varbuf_init(&buf); for(;;) { c = getc(yyget_in(yyscanner)); if (c == '@') { c = getc (yyget_in(yyscanner)); if (c != '@') break; } varbuf_add(&buf, c); } ungetc(c, yyget_in(yyscanner)); varbuf_add(&buf, '\0'); ret = varbuf_dup(&buf, "parse_data"); varbuf_free(&buf); return ret; } static void parse_text(cvs_text *text, yyscan_t yyscanner, cvs_file *cvs) { int c; size_t length; text->filename = cvs->gen.master_name; text->offset = ftell(yyget_in(yyscanner)) - 1; length = 1; while ((c = getc(yyget_in(yyscanner))) != EOF) { ++length; if (c == '@') { /* lookahead to see if we hit @@ */ c = getc(yyget_in(yyscanner)); if (c == '@') { ++length; } else { /* We consume only the closing single @, * leaving it included in the length */ ungetc(c, yyget_in(yyscanner)); break; } } } text->length = length; } #ifdef __UNUSED__ static char * parse_data_until_newline(yyscan_t yyscanner) { int c; char *ret; struct varbuf buf; varbuf_init(&buf); for(;;) { c = getc(yyget_in(yyscanner)); if (c == '\n') { break; } varbuf_add(&buf, c); } ungetc(c, yyget_in(yyscanner)); varbuf_add(&buf, '\0'); ret = varbuf_dup(&buf, "parse_data_until_newline"); varbuf_free(&buf); return ret; } #endif /* __UNUSED__ */ cvs_number lex_number(const char *s) { cvs_number n; const char *next; n.c = 0; while (*s) { n.n[n.c] = (int)strtol(s, (char **)&next, 10); if (next == s) break; if (*next == '.') next++; s = next; if (n.c > CVS_MAX_DEPTH) fatal_error("revision too long, increase CVS_MAX_DEPTH"); n.c++; } return n; } cvstime_t lex_date(const cvs_number* const n, yyscan_t yyscanner, cvs_file *cvs) { struct tm tm; time_t d; tm.tm_year = n->n[0]; if (tm.tm_year > 1900) tm.tm_year -= 1900; tm.tm_mon = n->n[1] - 1; tm.tm_mday = n->n[2]; tm.tm_hour = n->n[3]; tm.tm_min = n->n[4]; tm.tm_sec = n->n[5]; tm.tm_isdst = 0; #ifndef __CYGWIN__ tm.tm_zone = 0; #endif d = mktime(&tm); if (d == 0) { int i; fprintf(stderr, "%s: (%d) unparsable date: ", cvs->gen.master_name, yyget_lineno(yyscanner)); for (i = 0; i < n->c; i++) { if (i) fprintf(stderr, "."); fprintf(stderr, "%d", n->n[i]); } fprintf(stderr, "\n"); } if (d < RCS_EPOCH) fatal_error("%s: (%d) date before RCS epoch: ", cvs->gen.master_name, yyget_lineno(yyscanner)); else if (d >= RCS_OMEGA) fatal_error("%s: (%d) date too far in future: ", cvs->gen.master_name, yyget_lineno(yyscanner)); return d - RCS_EPOCH; } static void fast_export_sanitize(yyscan_t yyscanner, cvs_file *cvs) { char *sp, *tp; #define SUFFIX(a, s) (strcmp(a + strlen(a) - strlen(s), s) == 0) #define BADCHARS "~^\\*?" for (sp = tp = yyget_text(yyscanner); *sp; sp++) { if (isgraph((unsigned char)*sp) && strchr(BADCHARS, *sp) == NULL) { *tp++ = *sp; if (SUFFIX(yyget_text(yyscanner), "@{") || SUFFIX(yyget_text(yyscanner), "..")) { fatal_error("%s: (%d) tag or branch name %s is ill-formed.\n", cvs->gen.master_name, yyget_lineno(yyscanner), yyget_text(yyscanner)); } } } *tp = '\0'; if (strlen(yyget_text(yyscanner)) == 0) { fatal_error("%s: (%d) tag or branch name was empty after sanitization.\n", cvs->gen.master_name, yyget_lineno(yyscanner)); } } cvs-fast-export-1.35/cvssync0000775000175000017500000001062512435607267014313 0ustar esresr#!/usr/bin/python """ cvssync - fetch a CVS repository using rsync This tool is a front end for rsync that attempts to deduce how to get a copy of a CVS repository by analyzing the arguments you are told to pass CVS to check out a copy. The magic (when there is any) is in knowing how to construct the actual path to the repository from the host, path and module arguments. """ # Hosting-site rules live inside the following function. def computesource(sourcehost, sourcepath, sourcemodule): "Compute an rsync source given a CVS sourcehost, sourcepath, and sourcemodule" if "sourceforge" in sourcehost: # Supply the /cvsroot path head if not given. if not sourcepath.startswith("/cvsroot"): sourcepath = "/cvsroot" + sourcepath # Deal with the Sourceforge convention for naming project # pseudohosts. This does it in a backwards-compatible way. project = sourcepath.split("/")[-1] if not sourcehost.startswith(project + "."): sourcehost = project + "." + sourcehost # On SourceForge you need to double the colon and strip the # leading / to invoke the rsync module facility. return "%s::%s/%s/" % (sourcehost, sourcepath[1:], sourcemodule) elif "berlios" in sourcehost: # The pattern is rsync -av cvs.berlios.de::_cvs cvs return "cvs.berlios.de::%s_cvs" % sourcemodule elif "sourceware" in sourcehost: # The pattern is rsync -av sourceware.org::-cvs// return "%s::%s-cvs/%s/" % (sourcehost, sourcepath.split('/')[2], sourcemodule) elif "savannah" in sourcehost: # Supply the /sources path head if not given. if not sourcepath.startswith("/sources"): sourcepath = "/sources" + sourcepath return "rsync://vcs.savannah.gnu.org%s/%s/" % (sourcepath, sourcemodule) else: return "%s:%s/%s/" % (sourcehost, sourcepath, sourcemodule) # You should not need to modify anything below this line import os, sys, getopt, subprocess verbose = False execute = True def do_or_die(dcmd): "Either execute a command or raise a fatal exception." if verbose: sys.stdout.write("cvssync: executing '%s'\n" % (dcmd,)) if execute: try: retcode = subprocess.call(dcmd, shell=True) if retcode < 0: sys.stderr.write("cvssync: child was terminated by signal %d.\n" % -retcode) sys.exit(1) elif retcode != 0: sys.stderr.write("cvssync: child returned %d.\n" % retcode) sys.exit(1) except (OSError, IOError) as e: sys.stderr.write("cvssync: execution of %s failed: %s\n" % (dcmd, e)) sys.exit(1) if __name__ == '__main__': (opts, arguments) = getopt.getopt(sys.argv[1:], "cno:v") oopt = None checkoutable = False for (opt, arg) in opts: if opt == '-c': checkoutable = True if opt == '-n': execute = False if opt == '-o': oopt = arg if opt == '-v': verbose += 1 if len(arguments) == 1 and arguments[0].startswith("cvs://"): try: (host, module) = arguments[0][6:].split("#") i = host.find('/') (host, path) = (host[:i], host[i:]) if "@" in host: host = host.split("@")[1] except ValueError: sys.stderr.write("cvssync: ill-formed CVS URL\n") sys.exit(1) elif len(arguments) == 2: host = arguments[0] module = arguments[1] if "@" in host: host = host.split("@")[1] if ":" not in host: sys.stderr.write("cvssync: repository path is missing.\n") sys.exit(1) (host, path) = host.split(":") else: sys.stderr.write("cvssync: requires a host/path and module argument\n") sys.exit(1) if verbose: print "host = %s, path = %s, module = %s" % (host, path, module) directory = oopt or module vopt = "v" if verbose else "" source = computesource(host, path, module) if checkoutable: if not os.path.exists(directory): os.mkdir(directory) dummyroot = os.path.join(directory, "CVSROOT") if not os.path.exists(dummyroot): os.mkdir(dummyroot) directory = os.path.join(directory, module) do_or_die("rsync -a%sz %s %s" % (vopt, source, directory)) # end cvs-fast-export-1.35/cvsconvert0000775000175000017500000004523112571075633015015 0ustar esresr#!/usr/bin/env python """ cvsconvert - convert a CVS repo and check against the original Convert, and check the tree content of a gitspace conversion against the CVS. The tip state of every branch, and every tag, is checked. Will produce spurious errors if any CVS branch name had to be sanitized. """ # This is the testlifter.py code from the distribution directory. # Modify it there, not here """ Test framework for cvs-fast-export. """ import sys, os, shutil, subprocess, time, filecmp DEBUG_STEPS = 1 DEBUG_COMMANDS = 2 DEBUG_VCS = 3 DEBUG_LIFTER = 4 verbose = 0 os.putenv("PATH", os.getenv("PATH") + os.pathsep + "..") def noisy_run(dcmd, legend=""): "Either execute a command or raise a fatal exception." if legend: legend = " " + legend caller = os.path.basename(sys.argv[0]) if verbose >= DEBUG_COMMANDS: sys.stdout.write("%s: executing '%s'%s\n" % (caller, dcmd, legend)) try: retcode = subprocess.call(dcmd, shell=True) if retcode < 0: sys.stderr.write("%s: %s was terminated by signal %d.\n" % (-caller, dcmd, retcode)) sys.exit(1) elif retcode != 0: sys.stderr.write("%s: %s returned %d.\n" % (caller, dcmd, retcode)) return False except (OSError, IOError) as e: sys.stderr.write("%s: execution of %s%s failed: %s\n" % (caller, dcmd, legend, e)) return False return True def capture_or_die(dcmd, legend=""): "Either execute a command and capture its output or die." if legend: legend = " " + legend caller = os.path.basename(sys.argv[0]) if verbose >= DEBUG_COMMANDS: sys.stdout.write("%s: executing '%s'%s\n" % (caller, dcmd, legend)) try: return subprocess.Popen(dcmd, shell=True, stdout=subprocess.PIPE).communicate()[0] except subprocess.CalledProcessError as e: if e.returncode < 0: sys.stderr.write("%s: child was terminated by signal %d." % (caller, -e.returncode)) elif e.returncode != 0: sys.stderr.write("%s: child returned %d." % (caller, e.returncode)) sys.exit(1) class directory_context: def __init__(self, target): self.target = target self.source = None def __enter__(self): if verbose >= DEBUG_COMMANDS: sys.stdout.write("In %s: " % os.path.relpath(self.target)) self.source = os.getcwd() if os.path.isdir(self.target): os.chdir(self.target) def __exit__(self, extype, value_unused, traceback_unused): os.chdir(self.source) class RCSRepository: "An RCS file collection." def __init__(self, name): self.name = name self.retain = False # For convenience, emulate the module structure of a CVS repository self.directory = os.path.join(os.getcwd(), self.name, "module") self.conversions = [] def run_with_cleanup(self, cmd): if not noisy_run(cmd): if not self.retain: self.cleanup() sys.exit(1) def do(self, cmd, *args): "Execute a RCS command in context of this repo." if verbose < DEBUG_VCS: mute = '-q' else: mute = "" if not noisy_run("cd %s && %s %s %s" % (self.directory, cmd, mute, " ".join(args))) and not self.retain: self.cleanup() sys.exit(1) def init(self): "Initialize the repository." self.run_with_cleanup("rm -fr {0} && mkdir -p {0}".format(self.directory)) def write(self, fn, content): "Create file content in the repository." if verbose >= DEBUG_COMMANDS: sys.stdout.write("%s <- %s" % (fn, content)) with directory_context(self.directory): with open(fn, "w") as fp: fp.write(content) def add(self, filename): "Add a file to the version-controlled set." self.do("rcs", "-t-", "-i", filename) def tag(self, filename, name): "Create a tag on a specified file." self.do("rcs", "-n" + name + ":", filename) def checkout(self, filename): "Check out a writeable copy of the specified file." self.do("co", "-l", filename) def checkin(self, filename, message): "Check in changes to the specified file." self.do("ci", "-m'%s' %s" % (message, filename)) def stream(self, module, gitdir, outfile, more_opts=''): vopt = "-v " * (verbose - DEBUG_LIFTER + 1) # The -L is necessary to handle proxied directories. self.run_with_cleanup('find -L {0} -name "*,v" | cvs-fast-export {1} {2} >{3}'.format(self.directory, vopt, more_opts, outfile)) def convert(self, module, gitdir, more_opts=''): "Convert the repo." streamfile = "%s.git.fi" % module self.stream(module, gitdir, streamfile, more_opts) self.run_with_cleanup("rm -fr {0} && mkdir {0} && git init --quiet {0}".format(gitdir)) self.run_with_cleanup('cat {2} | (cd {1} >/dev/null; git fast-import --quiet --done && git checkout)'.format(self.directory, gitdir, streamfile)) self.conversions.append(gitdir) if not self.retain: os.remove(streamfile) def cleanup(self): "Clean up the repository conversions." if not self.retain: if self.conversions: os.system("rm -fr %s" % " ".join(self.conversions)) class CVSRepository(RCSRepository): def __init__(self, name): RCSRepository.__init__(self, name) self.directory = os.path.join(os.getcwd(), self.name) self.checkouts = [] self.conversions = [] def do(self, *cmd): "Execute a CVS command in context of this repo." if verbose < DEBUG_VCS: mute = '-Q' else: mute = "" self.run_with_cleanup("cvs %s -R -d:local:%s %s" % (mute, self.directory, " ".join(cmd))) def init(self): RCSRepository.init(self) self.do("init") def module(self, mname): "Create an empty module with a specified name." module = os.path.join(self.directory, mname) if verbose >= DEBUG_COMMANDS: sys.stdout.write("Creating module %s\n" % module) os.mkdir(module) def checkout(self, module, checkout=None): "Create a checkout of this repo." self.checkouts.append(CVSCheckout(self, module, checkout)) return self.checkouts[-1] def cleanup(self): "Clean up the repository checkout directories." if not self.retain: RCSRepository.cleanup(self) for checkout in self.checkouts: checkout.cleanup() class CVSCheckout: PROXYSUFFIX = "-proxy" def __init__(self, repo, module, checkout=None): self.repo = repo self.module = module or "module" self.checkout = checkout or module # Hack to get around repositories that don't have a CVSROOT & module self.proxy = None if not os.path.exists(self.repo.directory + os.sep + "CVSROOT"): self.proxy = self.repo.name + CVSCheckout.PROXYSUFFIX try: shutil.rmtree(self.proxy) except OSError: pass os.mkdir(self.proxy) os.symlink(self.repo.directory, self.proxy + os.sep + self.module) os.mkdir(self.proxy + os.sep + "CVSROOT") self.repo.name += CVSCheckout.PROXYSUFFIX self.repo.directory += CVSCheckout.PROXYSUFFIX self.repo.do("co", self.module) if checkout: if os.path.exists(checkout): shutil.rmtree(checkout) os.rename(self.module, checkout) self.directory = os.path.join(os.getcwd(), self.checkout) def do(self, cmd, *args): "Execute a command in the checkout directory." with directory_context(self.directory): apply(self.repo.do, [cmd] + list(args)) def outdo(self, cmd): "Execute a command in the checkout directory." with directory_context(self.directory): self.repo.run_with_cleanup(cmd) def add(self, *filenames): "Add a file to the version-controlled set." apply(self.do, ["add"] + list(filenames)) def remove(self, *files): "Remove a file from the version-controlled set." apply(self.do, ["remove", "-f"] + list(files)) def branch(self, branchname): "Create a new branch." self.do("tag", branchname + "_root") self.do("tag", "-r", branchname + "_root", "-b", branchname) self.do("up", "-r", branchname) def switch(self, branch="HEAD"): "Switch to an existing branch." self.do("up", "-A") if branch != "HEAD": self.do("up", "-r", branch) def tag(self, name): "Create a tag." self.do("tag", name) def merge(self, branchname): "Merge a branch to trunk." # See https://kb.wisc.edu/middleware/page.php?id=4087 self.do("tag", "merge_" + branchname) self.do("up", "-A") self.do("up", "-j", branchname) def commit(self, message): "Commit changes to the repository." # The CVS tools weren't designed to be called in rapid-fire # succession by scripts; they have race conditions. This # presents misbehavior. time.sleep(2) apply(self.do, ["commit", "-m '%s'" % message]) def write(self, fn, content): "Create file content in the repository." if verbose >= DEBUG_COMMANDS: sys.stdout.write("%s <- %s" % (fn, content)) with directory_context(self.directory): with open(fn, "w") as fp: fp.write(content) def append(self, fn, content): "Append to file content in the repository." if verbose >= DEBUG_COMMANDS: sys.stdout.write("%s <-| %s" % (fn, content)) with directory_context(self.directory): with open(fn, "a") as fp: fp.write(content) def update(self, rev): "Update the content to the specified revision or tag." if rev == 'master': rev = "HEAD" self.do("up", "-kb", "-A", "-r", rev) def cleanup(self): "Clean up the checkout directory." if self.proxy and os.path.exists(self.proxy): shutil.rmtree(self.proxy) if os.path.exists(self.directory): shutil.rmtree(self.directory) def expect_same(a, b): "Complain if two files aren't identical" if not os.path.exists(a): sys.stderr.write("%s does not exist in CVS.\n" % a) return if not os.path.exists(b): sys.stderr.write("%s does not exist in the git conversion.\n" % b) return if not filecmp.cmp(a, b, shallow=False): sys.stderr.write("%s and %s are not the same.\n" % (a, b)) def expect_different(a, b): "Rejoice if two files are unexpectedly identical" if not os.path.exists(a): sys.stderr.write("%s does not exist in CVS.\n" % a) return if not os.path.exists(b): sys.stderr.write("%s does not exist in the git conversion.\n" % b) return if filecmp.cmp(a, b, shallow=False): sys.stderr.write("%s and %s are unexpectedly the same.\n" % (a, b)) def junkbranch(name): "Is this a synthetic branch generated by cvs-fast-export?" return name.startswith("import-") or name.find("UNNAMED") != -1 class ConvertComparison: "Compare a CVS repository and its conversion for equality." # Needs to stay synchronized with reposurgeon's generic conversion makefile SUFFIX = "-git" def __init__(self, stem, repo=None, checkout=None, module=None, options="", showdiffs=False): self.stem = stem self.repo = CVSRepository(repo if repo else stem + ".testrepo") self.checkout = self.repo.checkout(module, checkout if checkout else stem + ".checkout") self.module = module or stem self.showdiffs = showdiffs self.repo.convert("module", stem + ConvertComparison.SUFFIX, more_opts=options) with directory_context(stem + ConvertComparison.SUFFIX): self.branches = [name for name in capture_or_die("git branch -l").split() if name != '*' and not junkbranch(name)] self.tags = [name for name in capture_or_die("git tag -l").split()] self.branches.sort() if "master" in self.branches: self.branches.remove("master") self.branches = ["master"] + self.branches def compare_tree(self, legend, ref, success_expected=True): "Test to see if a tag or branch checkout has the expected content." preamble = "%s %s %s: " % (self.stem, legend, ref) if ref not in self.tags and ref not in self.branches: if success_expected: sys.stderr.write(preamble + "%s unexpectedly missing.\n" % ref) return False def ftw(mydir, ignore): for root, dirs, files in os.walk(mydir): for file in files: path = os.path.join(root, file) if ignore not in path.split(os.sep) and not path.endswith(".cvsignore") and not path.endswith(".gitignore"): yield path self.checkout.update(ref) with directory_context(self.stem + ConvertComparison.SUFFIX): if not noisy_run("git checkout --quiet %s" % ref): self.repo.cleanup() sys.exit(1) if 0: with directory_context(self.stem + ConvertComparison.SUFFIX): if not noisy_run("git log --format=%H -1"): self.repo.cleanup() sys.exit(1) cvspaths = list(ftw(self.stem + ".checkout", ignore="CVS")) cvsfiles = [fn[len(self.stem+".checkout")+1:] for fn in cvspaths] gitpaths = list(ftw(self.stem + ConvertComparison.SUFFIX, ignore=".git")) gitfiles = [fn[len(self.stem+ConvertComparison.SUFFIX)+1:] for fn in gitpaths] cvsfiles.sort() gitfiles.sort() success = True if cvsfiles != gitfiles: if success_expected: sys.stderr.write(preamble + "file manifests don't match.\n") if self.showdiffs: sys.stderr.write(preamble + "common: %d\n" % len([f for f in gitfiles if f in cvsfiles])) gitspace_only = set([f for f in gitfiles if not f in cvsfiles]) if gitspace_only: sys.stderr.write(preamble + "gitspace only: %s\n" % gitspace_only) cvs_only = set([f for f in cvsfiles if not f in gitfiles]) if cvs_only: sys.stderr.write(preamble + "CVS only: %s\n" % cvs_only) success = False common = [(path, path.replace(".checkout/", ConvertComparison.SUFFIX + "/")) for path in cvspaths if path.replace(".checkout/", ConvertComparison.SUFFIX + "/") in gitpaths] for (a, b) in common: if not filecmp.cmp(a, b, shallow=False): success = False if success_expected: sys.stderr.write("%s %s %s: %s and %s are different.\n" % (self.stem, legend, ref, a, b)) if self.showdiffs: os.system("diff -u %s %s" % (a, b)) if success: if not success_expected: sys.stderr.write(preamble + "trees unexpectedly match\n") elif verbose >= DEBUG_STEPS: sys.stderr.write(preamble + "trees matched as expected\n") elif not success: if not success_expected and verbose >= DEBUG_STEPS: sys.stderr.write(preamble + "trees diverged as expected\n") return success def checkall(self): "Check all named references - branches and tags - expecting matches." for branch in cc.branches: if branch.endswith("UNNAMED-BRANCH"): if verbose > 0: sys.stderr.write("%s: skipping %s\n" % (os.path.basename(sys.argv[0]), branch)) else: cc.compare_tree("branch", branch) for tag in cc.tags: cc.compare_tree("tag", tag) def command_returns(self, cmd, expected): seen = capture_or_die(cmd) succeeded = (seen.strip() == expected.strip()) if not succeeded: sys.stderr.write(cmd + " return was not as expected\n") def cleanup(self): self.checkout.cleanup() shutil.rmtree(self.stem+ConvertComparison.SUFFIX) # End. # Copy of testlifter.py ends here if __name__ == '__main__': import getopt (opts, arguments) = getopt.getopt(sys.argv[1:], "k:npqv") retain = True engine_opts = "-F" kexpand = "" quiet = False for (opt, arg) in opts: if opt == '-v': verbose += 1 elif opt == '-n': retain = False elif opt == '-p': engine_opts += " -p" elif opt == '-q': engine_opts += " -q" elif opt == '-k': engine_opts += " -k " + arg if not arguments: sys.stderr.write("cvsconvert: requires a repo/module argument.\n") sys.exit(1) elif "/" in arguments[0]: (repo, module) = arguments[0].split('/') elif not os.path.isdir(arguments[0] + os.sep + "CVSROOT"): (repo, module) = (arguments[0], None) else: candidates = [sub for sub in os.listdir(arguments[0]) if sub != "CVSROOT" and os.path.isdir(os.path.join(arguments[0], sub))] if len(candidates) == 0: sys.stderr.write("cvsconvert: no modules under %s.\n" % arguments[0]) sys.exit(1) elif len(candidates) > 1: sys.stderr.write("cvsconvert: choose one of %s\n" % candidates) sys.exit(1) else: (repo, module) = (arguments[0], candidates[0]) sys.stderr.write("cvsconvert: processing %s/%s\n" % (repo, module)) if repo == module: sys.stderr.write("cvsconvert: repo directory and module name cannot be the same.\n") sys.exit(1) if not os.path.exists(repo): sys.stderr.write("cvsconvert: repo %s does not exist.\n" % repo) sys.exit(1) cc = ConvertComparison(stem=repo, repo=repo, module=module, checkout=repo+".checkout", options=engine_opts, showdiffs= True) if verbose == 0 and "-p" in engine_opts: verbose = DEBUG_STEPS cc.repo.retain = retain cc.checkall() cc.checkout.cleanup() if retain: sys.stderr.write("cvsconvert: conversion is in %s%s\n" % (repo, ConvertComparison.SUFFIX)) else: cc.cleanup() # end cvs-fast-export-1.35/cvsreduce0000775000175000017500000001351412435607267014606 0ustar esresr#!/usr/bin/env python """ cvsreduce - skeletonize CVS master files Called as a filter, skeletonizes a CVS master presented on standard input and write it to standard output. If an argument is specified, it must be the name of a directory containing CVS master files; in that case a corresponding directory of stripped files is created. Options: -o dir Set name of output directory. Defaults to the input dirname with the suffix '-reduced'. -t Suppress stripping of (non-sticky) tags. Sticky tags are always preserved. -l Suppress replacement of log content with a hash. -c Suppress replacement of revision content. -v Enable progress messages. Default behavior is to strip non-sticky tags, replace each version of content with a unique string including the revision ID, and replace log text with its MD5 hash in hex. The only identifying information left in the tree is filenames and CVS user IDs. The intent is to discard bulky content but preserve all metadata relevant to changeset merging. A collection of stripped files should imply the same changeset DAG as the unstripped originals, but be easier to pass around, faster to process, and not reveal potentially sensitive data. """ import os, sys, getopt, hashlib strip_tags = True strip_logs = True strip_content = True verbose = 0 def replace_escaped_text(inputf, replacement, outputf): "Replace text between @ delimiters with a specified string." leader = inputf.read(1) if leader != '@': sys.stderr.write("cvsreduce: fatal error, @ leader not where expected.\n") sys.exit(1) else: outputf.write('@' + replacement) while True: nxt = inputf.read(1) if nxt == '@': nxt2 = inputf.read(1) if nxt2 == '@': continue else: break if nxt2 == '\n': outputf.write("@\n") else: sys.stderr.write("cvsreduce: fatal error, @ trailer not followed by newline (%s).\n" % nxt2) sys.exit(1) def hash_escaped_text(inputf, outputf): "Replace text between @ delimiters with its MD5 hash." leader = inputf.read(1) if leader != '@': sys.stderr.write("cvsreduce: fatal error, @ leader not where expected.\n") sys.exit(1) txt = "" while True: nxt = inputf.read(1) if nxt == '@': nxt2 = inputf.read(1) if nxt2 == '@': txt += "@" continue else: break txt += nxt if nxt2 == '\n': m = hashlib.md5() m.update(txt) outputf.write("@%s\n@\n" % m.hexdigest()) else: sys.stderr.write("cvsreduce: fatal error, @ trailer not followed by newline (%s).\n" % nxt2) sys.exit(1) def skeletonize(inputf, outputf): "Skeletonize a CVS master, discarding content but leaving metadata." state = "ini" last_version = None deltacount = 0 while True: line = inputf.readline() if not line: break if verbose > 1: sys.stderr.write("%s: %s\n" % (state, line.strip())) if state == 'ini': if line.startswith("symbols"): state = "sym" elif line[0].isdigit(): last_version = line.strip() elif line.startswith("log"): if strip_logs: outputf.write(line) hash_escaped_text(inputf, outputf) continue elif line.startswith("text"): if strip_content: outputf.write(line) txt = "%s content for %s\n" % (inputf.name, last_version) if deltacount > 0: txt = "d1 1\na1 1\n" + txt deltacount += 1 replace_escaped_text(inputf, txt, outputf) continue elif state == "sym": if not line[0] in (' ', '\t'): state = "ini" elif strip_tags and '0' not in line.split(":")[1]: if line.endswith(";\n"): outputf.write("\t;\n") continue outputf.write(line) if __name__ == '__main__': (opts, arguments) = getopt.getopt(sys.argv[1:], "ctlo:v") outdir = None for (opt, arg) in opts: if opt == '-t': strip_tags = False elif opt == '-l': strip_logs = False elif opt == '-c': strip_content = False elif opt == '-o': outdir = arg elif opt == '-v': verbose += 1 if not arguments: skeletonize(sys.stdin, sys.stdout) sys.exit(0) elif not os.path.isdir(arguments[0]): sys.stderr.write("cvsreduce: argument must be a directory.\n") sys.exit(1) originals = arguments[0] if not outdir: outdir = originals + "-reduced" if os.path.exists(outdir): sys.stderr.write("cvsreduce: refusing to step on %s.\n" % outdir) sys.exit(1) # Directory traversal for dirName, subdirList, fileList in os.walk(originals): path_parts = list(dirName.split(os.sep)) path_parts.pop(0) newparts = [outdir] + path_parts for i in range(len(newparts)): newdir = os.path.join(*newparts[:i+1]) if not os.path.exists(newdir): if verbose: print("Directory creation: %s" % newdir) os.mkdir(newdir) for fname in fileList: oldname = os.path.join(dirName, fname) newpath = newparts + [fname] newname = os.path.join(*newpath) if verbose > 0: print('%s -> %s' % (oldname, newname)) old = open(oldname, "r") new = open(newname, "w") skeletonize(old, new) old.close() new.close() # end cvs-fast-export-1.35/README0000664000175000017500000000434212621377075013552 0ustar esresr= README for cvs-fast-export = This program analyzes a collection of RCS files in a CVS repository (or outside of one) and, when possible, emits an equivalent history in the form of a fast-import stream. Not all possible histories can be rendered this way; the program tries to emit useful warnings when it can't. The program can also produce a visualization of the resulting commit DAG in the DOT format handled by the graphviz suite. This program could have been called rcs-fast-export with equal appropriateness; the cvs-fast-export name was chosen to avoid colliding with a pre-existing script with that name by Giuseppe Bilotta. The analysis stage of this code originally travelled as "parsecvs" and was written by Keith Packard in early 2006. It was briefly maintained by Bart Massey before passing to Eric S. Raymond in late 2012; ESR wrote the fast-export output stage and renamed the program to reflect its new function. More historical details are in hacking.asc. The distribution includes a tool, cvssync, for fetching masters from CVS remote repositories so cvs-fast-export can see them. You will need rsync installed to use it. A wrapper script called cvsconvert runs a conversion to git and looks for content mismatches with the original CVS. Also included is a tool called cvsreduce that strips content out of trees of RCS/CVS masters, leaving only metadata structure in place. If you encounter a bug in this program, sending the maintainer a reduced version of your CVS tree greatly decreases the expected time to fix. A more detailed guide to effective bug reporting is at reporting-bugs.asc. This code has a regression-test suite; invoke it with "make check". You will need RCS and CVS installed to run the tests, but they're not required for production use of cvs-fast-export. Installed CVS is required to use the cvsconvert wrapper script. A "make check" can fail in obscure ways if you don't have all the required tools installed; you'll need CVS and Python. If you get complaints indicating that *.repo files don't exist, install these tools and try again. A "make clean" in the tests directory might be required to clear out debris. See also the NEWS and TODO files. There is an (incomplete) tour of the internals in hacking.asc. cvs-fast-export-1.35/COPYING0000664000175000017500000004337212435607267013735 0ustar esresrThe code in this distribution is copyright (C) 2006 by Keith Packard and copyright (C) 2012 by Eric S. Raymond. It is distributed under the terms of the GNU General Public License. GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. cvs-fast-export-1.35/NEWS0000644000175000017500000001317412624621517013366 0ustar esresr cvs-fast-export project news 1.35: 2015-11-23 Properly handle CVS masters with nonempty access lists. Bail out gracefully on pathological masters with no revisions. 1.34: 2015-09-25 Another Python compatibility fix. Fix inconsistent license header in revdir.c. 1.33: 2015-08-30 Deal with a really annoying build-portability glitch around -lrt. Fix cvsconvert to be Python 2.6-compatible. 1.32: 2015-06-10 Emit a source type declaration reposurgeon can use. Project now has a logo. 1.31: 2015-04-28 Improve OSX portability. 1.30: 2015-04-02 Tagged branchlets created for CVS tags not matching a gitspace commits. Many portability fixes for *BSD. 1.29: 2014-12-17 A significant improvement in the correctness of vendor-branch handling. More speed improvements. 1.28: 2014-12-08 Fix for buggy emission of lines ending in @. More speedups, and dramatic reduction in working-set size. 1.27: 2014-11-27 The bug that produced "unnumbered head" warnings has been fixed. 1.26: 2014-11-05 cvscompare changed to cvsconvert, a validating wrapper script. The rules for keyword expansion have changed yet again. 1.25: 2014-11-03 Simplify and fully document -k; it now requires an argument. In normal (non-promiscuous) mode, paths containing CVSROOT are ignored. There is a new wrapper script, 'cvscompare', for sanity-checking conversions. A HOWTO on reporting bugs has been added to the distribution. 1.24: 2014-10-30 Bugfix release: a late change to I/O buffering in 1.23 was faulty. 1.23: 2014-10-29 New -l option for redirecting logs during long conversions. More speedups and working-set reductions. Incremental dumping can now be done in fast mode. 1.22: 2014-10-21 New --embed-id and --expand options by Robert deBath. 1.21: 2014-10-19 When incremental dumping, suppress tags associated with old commits. Performance improved by x8; see also the new -F and -C options. New -a optio to dump a list of author IDs found in a repo. 1.20: 2014-10-08 Files not ending with ,v are now ignored unless the new -P option is on. New -t option for parallelizing analysis on multicore systems. 1.19: 2014-10-04 Dramatic speedups in some bottleneck functions. 1.18: 2014-10-02 A bug in the regression tests was fixed by slowing down calls to CVS. 1.17: 2014-09-11 Some changes to reduce working-set size. More internals documentation. 1.16: 2014-09-04 Added an internals tour to the documentation. Polished some comments. Prevented a possible buffer overrun. Fixed broken -R option. 1.15: 2014-09-02 Fixed a nasty order-instability bug that was confounding testing. Add a fatal error check for when revision numbers in input get too long. A significant speed improvement by tuning one of the sort algorithms. 1.14: 2014-08-12 Fixed several issues near ignore conversions. 1.13: 2014-08-11 Allow ()<> in symbol names. Fix a minor memory leak. Make cvssync a bit more liberal about SourceForge hostnames. In cvssync, leading /cvsroot can be omitted on Sourceforge paths. In cvssync, leading /sources can be omitted on Savannah paths. 1.12: 2014-06-26 Allow []! in symbol names. Python in the test suite now runs under 2.6. 1.11: 2014-06-06 Teach cvssync about sourceware.org. 1.10: 2014-03-28 Prepends CVS default ignores to converted .cvsignores. Generates a .gitignore containing default CVS ignores when necessary. 1.9: 2014-03-08 RCS/CVS usernames may now begin with a digit (patch by Jesse Weinstein). Cleaned up a mess around keyword expansion; it had been misdocumented. Fixed some minor bugs in the test suite. Fixed a signedness issue on 64-bit machines. 1.8: 2014-02-19 Processing of hardlinks field was incorrect, is now fixed. 1.7: 2014-02-18 Allow # in symbol names. Addresses a corner case in the NetBSD repository. 1.6: 2014-02-17 Fix a brown-paper-bag bug in cvssync. 1.5: 2014-02-16 Skip a hardlinks field, if present. Add a -c option to cvssync that makes mirrors with CVSROOTs. 1.4: 2014-02-04 Optimization to call sbrk() less often needs to be conditioned on GCC. 1.3: 2014-01-23 Improved performance on masters with lots of symbols; thank Jens Bethkowsky. 1.2: 2014-01-04 Smarter blob directory creation to reduce search overhead for blobs. 1.1: 2014-01-03 Cope with CVS-NT kopt strings containing garbage binary data. 1.0: 2013-12-28 Bug fix: Non-top-level .cvsignores are now converted. More speed and significant lowering of memory usage. Most error messages are now explained on the manual page. 0.8: 2013-12-16 Processing speed has approximately tripled since last release. cvs-fast-export has save progress metering again. cvssync can now take a CVS URL argument. 0.7: 2013-12-15 -i option for incremental dumping. -p option for enabling load status reports. Many documentation improvements. There is now a regression-test suite for the package. cvssync tool for mirroring remote CVS repos added. 0.6: 2013-12-10 Improvements for CVS-NT support. Improve timing of missing-commitids message 0.5: 2013-05-21 CVS-NT support. Code is Coverity-clean. 0.4: 2013-05-16 Fix buggy handling of -k option. Add --remote (-e) and --stripprefix (-s) options. Avoid recursion overflow on very large repos. The fast-import stream ops are now emitted in the same order git uses. 0.3: 2013-01-16 Fix a bonehead packaging error. 0.2: 2012-01-12 Code revamped to emit a fast-export stream. Manual page added. 0.1: 2006-03-09 Original code by Keith Packard; traveled as 'parsecvs'. cvs-fast-export-1.35/AUTHORS0000664000175000017500000000025512444120677013736 0ustar esresrKeith Packard Bart Massey Eric S. Raymond Alan Barrett Laurence Hygate cvs-fast-export-1.35/TODO0000664000175000017500000000311512447535743013363 0ustar esresr TO DO Before you try to modify this code, read hacking.asc. * Progress reporting within files for large files with many commits? * The QED repo in the tests directory raises a branch cycle error. This may reveal a bug in the second toposort function. There is a recipe for creating a close-to-minimal branch cycle testcase in tests/README. * tests/vendor.testrepo reveals an apparent bug in the new vendor-branch code. Created as follows: mkdir vend-test1.vend cd vend-test1.vend echo 1 > FILE1 cvs import -m v1 vend-test1 vend vend_1_0 cd .. cvs co vend-test1 cd vend-test1 echo 1 > FILE2 cvs add FILE2 cvs commit -m c1 cd ../vend-test1.vend/ echo 2 > FILE1 cvs import -m v2 vend-test1 vend vend_1_1 cd ../vend-test1/ cvs up echo 2 > FILE2 cvs commit -m c2 cvs tag lost-repo-state echo 3 > FILE1 cvs commit -m c3 Loz says: Subset tag will probably paper over the problem. Imagine the repo didn't have the +"lost-repo-state" tag. There wouldn't be a commit for this state in the git repo." * Issue a warning when the same tag is attached to multiple commits. At the moment it's just silently reported attached to the last. * Loz says: consider these two files from the emacs historic: lisp/progmodes/cperl-mode.el lisp/textmodes/flyspell.el These have differently named 1.1.1 branches (ILYA and FLYSPELL). Merging them into the same import-1.1.1 branch casues all sorts of weirdness with tagging. The tags (e.g. Ilya_5_23) only point to commits in one branch. I think they need to treated as separate branch heads. This didn't work with the old or new vendor branch code. cvs-fast-export-1.35/control0000664000175000017500000000177512536077255014306 0ustar esresr# This is not a real Debian control file # It's project metadata for the shipper tool Package: cvs-fast-export Description: Export an RCS or CVS history as a fast-import stream. This program analyzes a collection of RCS files in a CVS repository (or outside of one) and, when possible, emits an equivalent history in the form of a fast-import stream. Not all possible histories can be rendered this way; the program tries to emit useful warnings when it can't. The program can also produce a visualization of the resulting commit DAG in the DOT format handled by the graphviz suite. The package also includes cvssync, a tool for mirroring masters from remote CVS hosts. Homepage: http://www.catb.org/~esr/cvs-fast-export XBS-HTML-Target: index.html XBS-Repository-URL: https://gitlab.com/esr/cvs-fast-export XBS-Logo: cfe-logo.png XBS-OpenHub-URL: https://www.ohloh.net/p/cvs-fast-export XBS-VC-Tag-Template: %(version)s XBS-Validate: make check XBS-IRC-Channel: irc://chat.freenode.net/#reposurgeon cvs-fast-export-1.35/cvs-fast-export.asc0000664000175000017500000005443612623620260016425 0ustar esresr= cvs-fast-export(1) = :doctype: manpage == NAME == cvs-fast-export - fast-export history from a CVS repository or RCS collection. == SYNOPSIS == *cvs-fast-export* [-h] [-C] [-F] [-a] [-w 'fuzz'] [-g] [-l] [-v] [-q] [-V] [-T] [-p] [-P] [-i 'date'] [-k 'expansion'] [-A 'authormap'] [-t threads] [-R 'revmap'] [--reposurgeon] [-e 'remote'] [-s 'stripprefix'] == DESCRIPTION == cvs-fast-export tries to group the per-file commits and tags in a RCS file collection or CVS project repository into per-project changeset commits with common metadata, in the style of Subversion and later version-control systems. This tool is best used in conjunction with reposurgeon(1). Plain cvs-fast-export conversions contain various sorts of fossils that reposurgeon is good for cleaning up. See the http://www.catb.org/esr/dvcs-migration-guide.html[DVCS Migration HOWTO] to learn about the sanity-checking and polishing steps required for a really high-quality conversion, including reference lifting and various sorts of artifact cleanup. If arguments are supplied, the program assumes all ending with the extension ",v" are master files and reads them in. If no arguments are supplied, the program reads filenames from stdin, one per line. Directories and files not ending in ",v" are skipped. (But see the description of the -P for how to change this behavior.) Files from either Unix CVS or CVS-NT are handled. If a collection of files has commitid fields, changesets will be constructed reliably using those. In the default mode, which generates a git-style fast-export stream to standard output: * The prefix given using the -s option or, if the option is omitted, the longest common prefix of the paths is discarded from each path. * Files in CVS Attic and RCS directories are treated as though the "Attic/" or "RCS/" portion of the path were absent. This usually restores the history of files that were deleted. * Permissions on all fileops related to a particular file will be controlled by the permissions on the corresponding master. If the executable bit on the master is on, all its fileops will have 100755 permissions; otherwise 100644. * A set of file operations is coalesced into a changeset if either (a) they all share the same commitid, or (b) all have no commitid but identical change comments, authors, and modification dates within the window defined by the time-fuzz parameter. Unlike some other exporters, no attempt is made to derive changesets from shared tags. * Commits are issued in time order unless the cvs-fast-export detects that some parent is younger than its child (this is unlikely but possible in cases of severe clock skew). In that case you will see a warning on standard error and the emission order is guaranteed topologically correct, but otherwise not specified (and is subject to change in future versions of this program). * CVS tags become git lightweight tags when they can be unambiguously associated with a changeset. If the same tag is attached to file deltas that resolve to multiple changesets, it is reported as if attached to the last of them. * The HEAD branch is renamed to 'master'. * Other tag and branch names are sanitized to be legal for git; the characters ~^\*? are removed. * Since .cvsignore files have a syntax upward-compatible with that of .gitignore files, they're renamed. In order to simulate the default ignore behavior of CVS, those defaults are prepended to root .cvsignore blobs renamed to .gitignore, and a root .gitignore containing the defaults is generated if no such blobs exist. See the later section on RCS/CVS LIMITATIONS for more information on edge cases and conversion problems. This program does not depend on any of the CVS metadata held outside the individual content files (e.g. under CVSROOT). The variable TMPDIR is honored and used when generating a temporary directory in which to store file content during processing. == OPTIONS == -h:: Display usage summary. -w 'fuzz':: Set the timestamp fuzz factor for identifying patch sets in seconds. The default is 300 seconds. This option is irrelevant for changesets with commitids. -k:: Specify RCS/CVS keyword expansion. You can specify any of the CVS keyword expansion types: "kv" (keyword-value), "kvl" (keyword-value-locker), "k" (keyword only), "v" (value only), "o" (no expansion), or "b" (binary - no exansion, no line ending conversion). CVS's rules are: (1) if the master has -kb set in its internal keyword field, do that, otherwise (2) if an expansion type was set on the command line, do that, otherwise (3) if the file's internal keyword field is set, do that, otherwise use kv. cvs-fast-export behaves slightly differently; the default is kb rather than kkv, kvl is treated like kv, and ko is treated like kb (that is, no end-of-line normalization is ever performed). -g:: generate a picture of the commit graph in the DOT markup language used by the graphviz tools, rather than fast-exporting. -l:: Warnings normally go to standard error. This option, which takes a filename, allows you to redirect them to a file> Convenient with the -p option. -a:: Dump a list of author IDs found in the repository, rather than fast-exporting. -C:: Force canonical order (same as git-fast-export's) in the emitted stream. Blobs are emitted as late as possible before the commits that require them. It reduces throughput by about a factor of two. Repositories in which the time order of commits is inconsistent with their topological order will produce malformed fast-export streams in -C mode; these will crash Git's importer. -F:: Force fast order. Blobs are emitted first, then commits. -A 'authormap':: Apply an author-map file to the attribution lines. Each line must be of the form + ------------------------------------------------------ ferd = Ferd J. Foonly America/Chicago ------------------------------------------------------ + and will be applied to map the Unix username 'ferd' to the DVCS-style user identity specified after the equals sign. The timezone field (after > and whitespace) is optional and (if present) is used to set the timezone offset to be attached to the date; acceptable formats for the timezone field are anything that can be in the TZ environment variable, including a [+-]hhmm offset. Whitespace around the equals sign is stripped. Lines beginning with a # or not containing an equals sign are silently ignored. -R 'revmap':: Write a revision map to the specified argument filename. Each line of the revision map consists of three whitespace-separated fields: a filename, an RCS revision number, and the mark of the commit to which that filename-revision pair was assigned. Doesn't work with -g. -v:: Show verbose progress messages mainly of interest to developers. -q:: Run quietly, suppressing warning messages about absence of commitids and other minor problems for which the program can usually compensate but which may indicate conversion problems. Meant to be used with cvsconvert, which does its own correctness checking. -T:: Force deterministic dates for regression testing. Each patchset will have a monotonic-increasing attributed date computed from its mark in the output stream - the mark value times the commit time window times two. --reposurgeon:: Emit for each commit a list of the CVS file:revision pairs composing it as a bzr-style commit property named "cvs-revisions". From version 2.12 onward, reposurgeon(1) can interpret these and use them as hints for reference-lifting. --embed-id:: Append to each commit comment identification of the CVS commits that contributed to it. -V:: Emit the program version and exit. -e 'remote':: Exported branch names are prefixed with refs/remotes/'remote' instead of refs/heads, making the import appear to come from the named remote. -s 'stripprefix':: Strip the given prefix instead of longest common prefix -t 'threadcount':: Running multithreaded increases the program's memory footprint proportionally to the number of threads, but means the conversion may run in less total time because an I/O operation involving one master file will not block compute-intensive processing of others. By default, the program conservatively assumes it can use two threads per processor available. You can use this option to set the number of threads; the value 0 forces sequential processing with no threading. -p:: Enable progress reporting. This also dumps statistics (elapsed time and size of maximum resident set) for several points in the conversion run. -P:: Normally cvs-fast-export will skip any filename presented as an argument or on stdin that does not end with the RCS/CVS extension ",v", and will also ignore a pathnamre containing the string CVSROOT (this avoids annoyances when running from or above a top-level CVS directory). A strict reading of RCS allows masters without the ,v extension. This option sets promiscuous mode, disabling both checks. -i 'date':: Enable incremental-dump mode. Only commits with a date after that specified by the argument are emitted. Each branch root in the incremental dump is decorated with git-stream magic which, when interpreted in context of a live repository, will connect that branch to any branch of the same name. The date is expected to be RFC3339 conformant (e.g. yy-mm-ddThh:mm:ssZ) or else an integer Unix time in seconds. If neither -F nor -C is specified, cvs-fast-export will choose a mode based on the repository size - canonical order for small repositories, fast for large ones. Tools that consume git-fast-import streams should not care; this behavior is for backward compatibility. == EXAMPLE == A very typical invocation would look like this: ---------------------------------------------- find . | cvs-fast-export >stream.fi ---------------------------------------------- Your cvs-fast-export distribution should also supply cvssync(1), a tool for fetching CVS masters from a remote repository. Using them together will look something like this: -------------------------------------------------------------- cvssync anonymous@cvs.savannah.gnu.org:/sources/groff groff find groff | cvs-fast-export >groff.fi -------------------------------------------------------------- Progress reporting can be reassuring if you expect a conversion to run for some time. It will animate completion percentages as the conversion proceeds and display timings when done. The cvs-fast-export suite contains a wrapper script called 'cvsconvert' that is useful for running a conversion and automatically checking its content against the CVS original. == RCS/CVS LIMITATIONS == Translating RCS/CVS repositories to the generic DVCS model expressed by import streams is not merely difficult and messy, there are weird RCS/CVS cases that cannot be correctly translated at all. cvs-fast-export will try to warn you about these cases rather than silently producing broken or incomplete translations, but there be dragons. We recommend some precautions under SANITY CHECKING. CVS-NT and versions of GNU CVS after 1.12 (2004) added a changeset commit-id to file metadata. Older sections of CVS history without these are vulnerable to various problems caused by clock skew between clients; this used to be relatively common for multiple reasons, including less pervasive use of NTP clock synchronization. cvs-fast-export will warn you ("commits before this date lack commitids") when it sees such a section in your history. When it does, these caveats apply: * If timestamps of commits in the CVS repository were not stable enough to be used for ordering commits, changes may be reported in the wrong order. * If the timestamp order of different files crosses the revision order within the commit-matching time window, the order of commits reported may be wrong. One more property affected by commitids is the stability of old changesets under incremental dumping. Under a CVS implementation issuing commitids, new CVS commits are guaranteed not to change cvs-fast-export's changeset derivation from a previous history; thus, updating a target DVCS repository with incremental dumps from a live CVS installation will work. Even if older portions of the history do not have commitids, conversions will be stable. This stability guarantee is lost if you are using a version of CVS that does not issue commitids. Also note that a CVS repository has to be completely reanalyzed even for incremental dumps; thus, processing time and memory requirements will rise with the total repository size even when the requested reporting interval of the incremental dump is small. These problems cannot be fixed in cvs-fast-export; they are inherent to CVS. == CVS-FAST-EXPORT REQUIREMENTS AND LIMITATIONS == Because the code is designed for dealing with large data sets, it has been optimized for 64-bit machines and no particular effort has been made to keep it 32-bit clean. Various counters may overflow if you try using it to lift a large repository on a 32-bit machine. Branches occurring in only a subset of the analyzed masters are not correctly resolved; instead, an entirely disjoint history will be created containing the branch revisions and all parents back to the root. CVS vendor branches are a source of trouble. Sufficiently strange combinations of imports and local modifications will translate badly, producing incorrect content on master and elsewhere. Some other CVS exporters try, or have tried, to deduce changesets from shared tags even when comment metadata doesn't match perfectly. This one does not; the designers judge that to trip over too many pathological CVS tagging cases. The program does try to do something useful cases in which a tag occurs in a set of revisions that does not correspond to any gitspace commit. In this case a tagged branch containing only one commit is created, guaranteeing that you can check out a set of files containing the CVS content for the tag. The root of the branchlet is the gitspace commit where the latest CVS revision in in the tagged set first occurs; this is the commit the tag would point at if its incompleteness were ignored. When running multithreaded, there is an edge case in which the program's behavior is nondeterministic. If the same tag looks like it should be assigned to two different gitspace commits with the same timestamp, which tag it actually lands on will be random. cvs-fast-export is designed to do translation with all its intermediate structures in memory, in one pass. This contrasts with cvs2git(1), which uses multiple passes and journals intermediate structures to disk. The tradeoffs are that cvs-fast-export is much faster than cvs2git, but will fail with an out-of-memory error on CVS repositories large enough to overflow your physical memory. In practice, you are unlikely to push this limit on a machine with 32GB of RAM and effectively certain not to with 64GB. Attempts to do large conversions in only a 32-bit (4GB) address space are, on the other hand, unlikely to end well. The program's transient storage requirements can be quite a bit larger; it must slurp in each entire master file once in order to do delta assembly and generate the version snapshots that will become snapshots. Using the -t option multiplies the expected amount of transient storage required by the number of threads; use with care, as it is easy to push memory usage so high that swap overhead overwhelms the gains from not constantly blocking on I/O. In -C mode, the program also requires temporary disk space equivalent to the sum of the sizes of all revisions in all files. This is not so in -F mode. On stock PC hardware in 2014, cvs-fast-export achieves processing speeds upwards of 64K CVS commits per minute on real repositories. Time performance is primarily I/O bound and can be improved by running on an SSD. == SANITY CHECKING == After conversion, it is good practice to do the following verification steps: 1. If you ran the conversion directly with cvs-fast-export rather than using cvsconvert, use diff(1) with the -r option to compare a CVS head checkout with a checkout of the converted repository. The only differences you should see are those due to RCS keyword expansion, .cvsignore lifting, and manifest mismatches due to CVS not tracking file deaths quite correctly. If this is not true, you may have found a bug in cvs-fast-export; please report it with a copy of the CVS repo. 2. Examine the translated repository with reposurgeon(1) looking (in particular) for misplaced tags or branch joins. Often these can be manually repaired with little effort. These flaws do 'not' necessarily imply bugs in cvs-fast-export; they may simply indicate previously undetected malformations in the CVS history. However, reporting them may help improve cvs-fast-export. The above is an abbreviated version of part of http://www.catb.org/esr/dvcs-migration-guide.html[DVCS Migration HOWTO]; browse it for more. == RETURN VALUE == 0 if all files were found and successfully converted, 1 otherwise. == ERROR MESSAGES == Most of the messages cvs-fast-export emits are self.explanatory. Here are a few that aren't. Where it says "check head", be sure to sanity-check against the head revision. tag could not be assigned to a commit:: RCS/CVS tags are per-file, not per revision. If developers are not careful in their use of tagging, it can be impossible to associate a tag with any of the changesets that cvs-fast-export resolves. When this happens, cvs-fast-export will issue this warning and the tag named will be discarded. child commit emitted before parent:: Something went wrong diring export canonicalization. This was probably caused by CVS commit timestamps being in the wrong order for their parent-child relathonship. Try the -F option. discarding dead untagged branch:: Analysis found a CVS branch with no tag consisting entirely of dead revisions. These cannot have been visible in the archival state of the CVS at conversion time; it is possible they may have been visible as branch content at some point in the repository's past, but without an identifying tag that state is impossible to reconstruct. warning - unnamed branch:: A CVS branch with a live revision lacks a head label. A label with "-UNNAMED-BRANCH" suffixed to the name of the parent branch will be generated. warning - no master branch generated:: cvs-fast-export could not identify the default (HEAD) branch and therefore there is no "master" in the conversion; this will seriously confuse git and probably other VCSes when they try to import the output stream. You may be able to identify and rename a master branch using reposurgeon(1). warning - xxx newer than yyy:: Early in analysis of a CVS master file, time sort order of its deltas doesn't match the topological order defined by the revision numbers. The most likely cause of this is clock skew between clients in very old CVS versions. The program will attempt to correct for this by tweaking the revision date of the out-of-order commit to be that of its parent, but this may not prevent other time-skew errors later in analysis. tip commit older than imputed branch join:: A similar problem to "newer than" being reported at a later stage, when file branches are being knit into changeset branches. One CVS branch in a collection about to be merged into a gitspace branch has a tip commit older than the earliest commit that is a a parent on some (other) tip in the collection. The adventious branch is snipped off. some parent commits are younger than children:: May indicate that cvs-fast-export aggregated some changesets in the wrong order; probably harmless, but check head. warning - branch point later than branch:: Late in the analysis, when connecting branches to their parents in the changeset DAG, the commit date of the root commit of a branch is earlier than the date of the parent it gets connected to. Could be yet another clock-skew symptom, or might point to an error in the program's topological analysis. Examine commits near the join with reposurgeon(1); the branch may need to be reparented by hand. more than one delta with number X.Y.Z:: The CVS history contained duplicate file delta numbers. Should never happen, and may indice a corrupted CVS archive if it does; check head. {revision|patch} with odd depth:: Should never happen; only branch numbers are supposed to have odd depth, not file delta or patch numbers. May indicate a corrupted CVS archive; check head. duplicate tag in CVS master, ignoring:: A CVS master has multiple instances of the same tag pointing at different file deltas. Probably a CVS operator error and relatively harmless, but check that the tag's referent in the conversion makes sense. tag or branch name was empty after sanitization:: Fatal error: tag name was empty after all characters illegal for git were removed. Probably indicates a corrupted RCS file. revision number too long, increase CVS_MAX_DEPTH:: Fatal error: internal buffers are too short to handle a CVS revision in a repo. Increase this constant in cvs.h and rebuild. Warning: this will increase memory usage and slow down the tests a lot. snapshot sequence number too large, widen serial_t:: Fatal error: the number of file snapshots in the CVS repo overruns an internal counter. Rebuild cvs-fast-export from source with a wider serial_t patched into cvs.h. Warning: this will significantly increase the working-set size too many branches, widen branchcount_t:: Fatal error: the number of branches descended from some single commit overruns an nternal counter. Rebuild cvs-fast-export from source with a wider branchcount_t patched into cvs.h. Warning: this will significantly increase the working-set size internal error - branch cycle:: cvs-fast-export found a cycle while topologically sorting commits by parent link. This should never happen and probably indicates a serious internal error: please file a bug report. internal error - lost tag:: Late in analysis (after changeset coalescence) a tag lost its commit reference. This should never happen and probably indicates an internal error: please file a bug report. == REPORTING BUGS == Report bugs to Eric S. Raymond . The project page is at http://catb.org/~esr/cvs-fast-export == SEE ALSO == rcs(1), cvs(1), cvssync(1), cvsconvert(1), reposurgeon(1), cvs2git(1). cvs-fast-export-1.35/cvsconvert.asc0000664000175000017500000001214512623614142015545 0ustar esresr= cvsconvert(1) = :doctype: manpage == NAME == cvsconvert - perform a Git conversion and test against the CVS original == SYNOPSIS == *cvsconvert* [-v] [-n] [-p] [-k expandspec] [repo | repo/module] == DESCRIPTION == cvsconvert performs a conversion of a CVS repository to Git and checks the tree contents at all branch tips and tags to verify that the histories are the same. (An exception: synthetic gitspace branches enamed *-UNNAMED-BRANCH created to collect homeless CVS commits are not checked. You will see a warning when one of these is skipped.) The single argument must be a path to a directory containing a a CVS repository or module. If it is a CVS top-level directory and there is only one module beneath the module need not be specified. The Git conversion is left in a directory named after the repo argument, with a suffix of "-git". Normal behavior is for the program to report on each branch and tag, saying "trees match as expected". There are two kinds of problem report: *"file manifests don't match"*: Indicates that the CVS and Git versions of this revision in the history contain some filenames that don't pair up with each other. (Git and CVS ignore-pattern files are ignored and will not trigger this message.) When this message occurs, files in common are still checked for equality. *"%s and %s are different"*: Two corresponding CVS and Git files do not compare equal. A diff listing will follow. == Troubleshooting == There are two kinds of non-serious conversion glitches: file content mismatches due to expanded keyword fields in masters, and files deleted in CVS that occur only in the gitspace manifests associated with tags. You can spot content mismatches due to keyword expansion easily. They will produce single-line diffs of lines containing dollar signs surrounding keyword text. Because binary files can be corrupted by keyword expansion, by default cvs-fast-export behaves like cvs -kb mode and does no keyword expansion of its own. Thus, you should *never see such mismatches* unless you have passed in a -k option. However, you might want to pass in -k k if (a) you believe the CVS masters might contain expanded keyword fields but don't want to clean them up by hand, and (b) you are confident your repository contains no binary files that might false-match an RCS/CVS keyword. If you are wrong about assumption (b) you will receive warning messages about content mismatches in the binary files. Manifest mismatches on tags are most likely to occur on files which were deleted in CVS but persist under later tags in the Git conversion. You can bet this is what's going on if, when you search for the pathname in the CVS repository, you find it in an attic directory. These spurious reports happens because CVS does not always retain enough information to track deletions reliably and is somewhat flaky in its handling of "dead"-state revisions. To make your CVS and git repos match perfectly, you may need to use add delete fileops to the conversion - or, more likely, move existing ones back along their branches to commits that predate the gitspace tag - using reposurgeon(1). Manifest mismatches in the other direction (present in CVS, absent in gitspace) should never occur. If one does, submit a bug report. Any other kind of content or manifest match - but especially any on the master branch - is bad news and indicates either a severe repository malformation or a bug in cvs-fast-export (or possibly both). Any such situation should be reported as a bug. Conversion bugs are disproportionately likely to occur on older, branches or tags from before CVS had reliable commitids. Often the most efficient remedy is simply to delete junk branches and tags; reposurgeon(1) makes this easy to do. If you need to file a bug, please visit the project website to learn about the bug-reporting procedure. There are specific things you can do when preparing the report to make a rapid resolution of the problem more likely. == OPTIONS == -p:: Enable progress reports from cvs-fast-export as it runs. -k:: Pass a keyword-expansion specification to cvs-fast-export(1) and cvs(1). -n:: Test only, do not keep the Git conversion after emitting diagnostics. -v:: Verbose. Show subcommands as they are being executed, and various debugging messages. -q:: Tell cvs-fast-export to run quietly. == LIMITATIONS == This program does not cope gracefully if CVS tagnames that are not legal for Git had to be sanitized during conversion. Because of the way this program works around CVS's requirement for a CVSROOT directory, it will require directory write permission on the repository directory in that case - otherwise it will abort after a CVS message "failed to obtain dir lock in repository". The repository contents are not modified. The program needs the cvs -R option to access the repository read-only. It will therefore fail with versions of GNU CVS older than 1.12.1 (2005) that do not have this option. == REPORTING BUGS == Report bugs to Eric S. Raymond . The project page is at http://catb.org/~esr/cvs-fast-export == SEE ALSO == rsync(1), rcs(1), cvs(1), cvs-fast-export(1), reposurgeon(1). cvs-fast-export-1.35/cvssync.asc0000664000175000017500000000713512435607267015057 0ustar esresr= cvssync(1) = :doctype: manpage == NAME == cvssync - fetch CVS repository masters via rsync == SYNOPSIS == *cvssync* [-c] [-v] [-n] [-o outdir] [host-path module | cvsurl] == DESCRIPTION == cvssync attempts to fetch a copy of a remote CVS repository into a local directory. All you have to tell it is the arguments you're expected to hand CVS to perform a checkout of the remote. Alternatively, you can give it a single argument in URL format, of the form cvs:///#. If a previous cvssync has been done into the directory, cvssync will do the least amount of file copying required to resynchronize the local copy with the remote. It relies on rsync(1) to accomplish this. cvssync knows about the site-structure idiosyncracies of some major CVS hosting sites and applies that knowledge so you don't have to. Presently its rules are known good for SourceForge, Savannah, Sourceware, and Berlios. Its default method should work for many other sites. You can use the -v option to see what rsync command is actually generated in these cases. Because cvssync uses rsync, you may need to have an ssh public key installed in an account on the target system for it to work. cvssync is an auxiliary tool issued with cvs-fast-export in order to facilitate moving CVS repositories to version control systems that aren't chipped out of flint. Of course, you can also use it for backups and other purposes. == OPTIONS == -c:: Create a mirror that you can do checkouts from. Normally this tool creates a 'bare' mirror of the module masters you are interested in without creating a module subdirectory and CVSROOT. With this option, the created directory structure is changed to include an empty CVSROOT, and the masters go in a subdirectory named after the module. A cvs -d:local: co command can then be used to make a local checkout for inspection. -n:: Dry-run. Generate the commands that would be performed but do not execute them. Useful with -v. -o:: Set the name of the output directory. The default is to use the module name. -v:: Verbose. Show subcommands as they are being executed. == DISAMBIGUATION == There is another program called 'cvsync' for making live mirrors; this is not it. One important difference is that cvsync requires a dedicated service daemon, cvsyncd, to be running on the CVS host; it's not designed for ad-hoc fetches from random hosting sites. == EXAMPLES == Note that these examples may become obsolete as CVS repositories are decommissioned. They are meant to illustrate usage patterns. cvssync cvs.sourceforge.net:/cvsroot/rfk robotfindskitten:: Fetch the Robot Finds Kitten project from Sourceforge cvssync rfk.cvs.sourceforge.net:/cvsroot/rfk robotfindskitten:: Using the full Sourceforge pseudo-hostname also works. cvssync anonymous@rfk.cvs.sourceforge.net:/cvsroot/rfk robotfindskitten:: Any login credential is ignored. cvssync rfk.cvs.sourceforge.net:/rfk robotfindskitten:: The leading /cvsroot on a SourceForge path can be omitted. cvssync cvs://cvs.sourceforge.net/rfk#robotfindskitten:: Same fetch using the URL argument style. cvssync anonymous@cvs.savannah.gnu.org:/sources/groff groff:: Fetch the groff project repository from Savannah cvssync cvs.savannah.gnu.org:/groff groff:: Login credential and leading /sources can be omitted on Savannah. cvssync cvs://cvs.savannah.gnu.org/groff#groff:: Same fetch using the URL argument style. == REPORTING BUGS == Report bugs to Eric S. Raymond . The project page is at http://catb.org/~esr/cvs-fast-export == SEE ALSO == rsync(1), rcs(1), cvs(1), cvs-fast-export(1). cvs-fast-export-1.35/hacking.asc0000664000175000017500000007632512446524223014772 0ustar esresr= Hacker's guide to cvs-fast-export = cvs-fast-export is a complex program doing an intrinsically difficult job. Because analyzing CVS repositories has lots of strange edge cases, it is likely to need modification in the future. This document is a collection of notes intended to make that less intimidating. == History == This program was originally written as a one-off hack by Keith Packard in early 2006, when he was working on migrating the X repositories from CVS to git, and was not originally intended to survive that conversion. It was called "parsecvs" then. It called git tools directly to create translated repositories. The code was briefly maintained by Bart Massey before passing to Eric S. Raymond in late 2012. ESR wrote the fast-export output stage and renamed the program to reflect its new function. Most of ESR's original contributions are in export.c, which is why that code is in a somewhat different style than the rest of the codebase. ESR also split the original commit structure into cvs_commit and git_commit as a space optimization, rescued the rather decrepit code for generating graphviz visualizations, and hacked the parser code to be fully re-entrant. A few other people have contributed significant improvements since, mainly performance tweaks. Most notably: Jens Bethkowsky added a red-black-tree implementation to speed up symbol search; Aidan Hobson Sayers replaced an O(n**3) sort with an O(n log n) sort; David Leonard sped up compute_parent_links() and wrote several other significant optimizations. Laurence Hygate wrote many sort and hash optimizations. Alan Barrett wrote the improved progress meter. Tom Enterline sped up snapshot generation. Significant portions of this code remain a trackless jungle of complex algorithms with poorly documented assumptions. Only Keith ever completely understood it, and he does no longer. Others have been able to modify it mainly by isolating pieces that they could comprehend without having to grok the whole. == Description == To understand this program, you need to understand the problem it solves: lifting CVS repositories to git-compatible fast-import streams. What makes this problem difficult is that CVS records deltas (and tags) per-file, but what we want for the fast-import representation is changesets - that is, coherent groups of per-file deltas that capture multiple per-file changes made with the same intention at the same time. The fundamental thing cvs-fast-export does is identify cliques of per-file deltas that should be coalesced into changesets. To do this, it relies on the fact that the CVS command-line tools fake supporting changesets by replicating the comment that the user supplied to "cvs commit" into every individual file delta that the commit creates. Under relatively recent implementations, CVS also embeds a common (and unique) commit-ID field in each file delta of the group. These cliques can be unambiguously identified. Groups recorded by older implementations that don't generate commit-IDs must be identified by the fact that they have the same change comment, author, and change date. Actually, commit-date comparison has to be fuzzy because each file commit is actually done as a separate operation and may not complete in the same clock second as the previous one (this is why cvs-fast-export has the -w option). Timestamp matching is further complicated by clock-skew effects; for historical reasons, deltas are committed with a timestamp generated on the client side rather than the server. Thus, clock drift between different client machines can cause some odd effects, including child revisions with dates before their parents. But timestamp issues are actually the least part of the problem. A much bigger issue is per-file branch structures and tags that aren't conformable with each other. The CVS tools have few safeguards against creating such, and it is easy to end up with a situation where file-delta cliques can be resolved but the right way to build them into a DAG of parent-child links is unclear or ill-defined. Inconsistent tagging can cause interpretation problems as well. Now you should read "RCS/CVS LIMITATIONS" in the cvs-fast-export(1) manual page. == Conformable branch structure == Below is a simple example of conformable branch structure involving two files. In this diagram, down is the arrow of time. Each box on the left-hand side represents a CVS file delta, each box on the right a changeset. In each box the top line is a list of files modified and the bottom line a change comment. The branch labels at the bottom are HEAD for the main branch in each CVS file and master for the main branch in the gitspace DAG. ----------------------------------------------------------------- +--------------+ +================+ | foo.c 1.1 | +---------------+ | foo.c, bar.c | |First revision| | bar.c 1.1 | | First revision | +--------------+ |First revision | +================+ | +---------------+ | | | | | +---------------+ +=================+ | | bar.c 1.2 | | bar.c | | |Second revision| | Second revision | | +---------------+ +=================+ +--------------+ | | | foo.c 1.2 | +---------------+ +===============+ |Third revision| | bar.c 1.3 | | foo.c, bar.c | +--------------+ |Third revision | |Third revision | | +---------------+ +===============+ HEAD | | HEAD master ----------------------------------------------------------------- Here's an elaboration of that example, a conformant pair of CVS masters with branching: ------------------------------------------------------------------------- +--------------+ +===============+ | foo.c 1.1 | +--------------+ | foo.c, bar.c | |First revision| | bar.c 1.1 | |First revision | +--------------+ |First revision| +===============+ | +--------------+ | | | | | +---------------+ +===============+ | | bar.c 1.2 | | bar.c | | |Second revision| |Second revision| | +---------------+ +===============+ +--------------+ | | | foo.c 1.2 | +---------------+ +===============+ |Third revision| | bar.c 1.3 | | foo.c, bar.c | +--------------+ |Third revision | | Third revision| | \ +---------------+ +===============+ | \ | \1.3.1 | \ | \1.2.1 | \ | \ | \ | +---------------+ | +===============+ | +---------------+ | |bar.c 1.3.1.1 | | | foo.c, bar.c | | |foo.c 1.2.1.1 | | |Fourth revision| | |Fourth revision| | |Fourth revision| | +---------------+ | +===============+ | +---------------+ | | | | | | | | | | HEAD alternate HEAD alternate master alternate ------------------------------------------------------------------------- Note that the branch point and branch ID (the three-part label on the branch) for 'alternate' are different in the two CVS masters, so cvs-fast-export cannot rely on them matching to figure out the topology. It also has to deal wth this case correctly: --------------------------------------------------------------------------- +--------------+ +===============+ | foo.c 1.1 | +---------------+ | foo.c, bar.c | |First revision| | bar.c 1.1 | |First revision | +--------------+ |First revision | +===============+ | +---------------+ | | | | | +---------------+ +===============+ | | bar.c 1.2 | | bar.c | | |Second revision| |Second revision| | +---------------+ +===============+ +--------------+ | | | foo.c 1.2 | +---------------+ +===============+ |Third revision| | bar.c 1.3 | | foo.c, bar.c | +--------------+ |Third revision | |Third revision | | \ +---------------+ +===============+ | \1.2.1 | \ | \ | \ | \1.3.1 | +===============+ | +---------------+ | \ | | foo.c | | |foo.c 1.2.1.1 | | | | |Fourth revision| | |Fourth revision| | | | +===============+ | +---------------+ | | | | | | | +--------------+ | +===============+ | +--------------+ | |bar.c 1.3.1.1 | | | foo.c, bar.c | | |foo.c 1.2.1.2 | | |Fifth revision| | |Fifth revision | | |Fifth revision| | +--------------+ | +===============+ | +--------------+ | | | | | | | | | | | | | | | | HEAD alternate HEAD alternate master alternate --------------------------------------------------------------------------- That is, after any branch there may be a delta that *doesn't* make a changeset with any delta on matching branches. The previous diagrams elide some important details, which is how tags and branches are actually represented in CVS. First: there are no per-changeset tags, only per-file ones. When CVS fakes tagging a changeset, what it actually does is add the same tag symbol to every file master in the changeset. (Various kinds of operator error and/or CVS bug can cause the creation of incomplete tagged sets, which *don't* annotate every master in existence at tag creation time. These are a headache for any conversion tool. cvs-fast-export deals with them by creating tagged branchlets containing exactly one commit.) Named CVS branches are represented by adding a "sticky tag" to every file in the branch. In the above examples, the branch beginning with 1.2.1.1 would have been created with a command sequence like this done while 1.2 is checked out: ------------------------------------------------------------------------------ cvs tag alternate_0 # Create a symbolic name for 1.2 cvs tag -r alternate_0 -b alternate # Give 'alternate' a magic sticky value ------------------------------------------------------------------------------ The magic sticky value for the first (1.2.1.x) branch is 1.2.0.1. If a second, 1.2.2.x branch were created, its magic sticky tag would have the value 1.2.0.2. The sticky tag is treated as a name for its corresponding branch, whatever the tip revision happens to be. == Vendor branches == Vendor branches are a poorly-documented feature which has been a source of great confusion for programs attempting to convert or data-mine CVS repositories. This section describes the assumptions cvs-fast-export uses in dealing with them in painstaking detail, because it is not unlikely they will be a continuing source of correctness issues. In "CVS II: Parallelizing Software Development" (1990) Brian Berliner, one of the principal CVS developers, write a major section 2.2 titled "Tracking Third-Party Source Distributions". It begins: "Currently, a large amount of software is based on source distributions from a third-party distributor. It is often the case that local modifications are to be made to this distribution, and that the vendor's future releases should be tracked. Rolling your local modifications forward into the new vendor release is a time-consuming task, but cvs can ease this burden somewhat. The checkin program of cvs initially sets up a source repository by integrating the source modules directly from the vendor's release, preserving the directory hierarchy of the vendor's distribution. The branch support of RCS is used to build this vendor release as a branch of the main RCS trunk. Figure 2 shows how the "head" tracks a sample vendor branch when no local modifications have been made to the file." The following diagram reproduces the topology of Berliner's figure 2 using the same conventions as the diagrams in the previous section (these revisions have no change comments): ------------------------------------------------------------------------- +---------------+ 1.1.1 +-------------------+ | rcsfile.c 1.1 |------------| rcsfile.c 1.1.1.1 | 'SunOS_4_0' +---------------+ 'SunOS' +-------------------+ A | | +-------------------+ | | rcsfile.c 1.1.1.2 | 'SunOS_4_0_1' | +-------------------+ | | | +-------------------+ | | rcsfile.c 1.1.1.3 | 'YAPT_5_5C' | +-------------------+ | | | +-------------------+ "HEAD"-----+---->| rcsfile.c 1.1.1.4 | 'SunOS_4_0_3' +-------------------+ ------------------------------------------------------------------------- (The intended meaning of the arrow from "HEAD" to the vendor branch label 1.1.1 is not explained in the paper.) Berliner continues: Once this is done, developers can check out files and make local changes to the vendor's source distribution. These local changes form a new branch to the tree which is then used as the source for future check outs. Figure 3 shows how the "head" moves to the main RCS trunk when a local modification is made. ------------------------------------------------------------------------- +---------------+ 1.1.1 +-------------------+ | rcsfile.c 1.1 |------------| rcsfile.c 1.1.1.1 | 'SunOS_4_0' +---------------+ 'SunOS' +-------------------+ | | +---------------+ +-------------------+ | rcsfile.c 1.2 | | rcsfile.c 1.1.1.2 | 'SunOS_4_0_1' +---------------+ +-------------------+ A | | +-------------------+ | | rcsfile.c 1.1.1.3 | 'YAPT_5_5C' | +-------------------+ | | | +-------------------+ "HEAD" | rcsfile.c 1.1.1.4 | 'SunOS_4_0_3' +-------------------+ ------------------------------------------------------------------------- Berliner continues: When a new version of the vendor's source distribution arrives, the checkin program adds the new and changed vendor's files to the already existing source repository. For files that have not been changed locally, the new file from the vendor becomes the current "head" revision. For files that have been modified locally, checkin warns that the file must be merged with the new vendor release. The cvs "join" command is a useful tool that aids this process by performing the necessary RCS merge, as is done above when performing an "update." Berliner concludes: There is also limited support for "dual" derivations for source files. See Figure 4 for a sample dual-derived file. This example tracks the SunOS distribution but includes major changes from Berkeley. These BSD files are saved directly in the RCS file off a new branch. ---------------------------------------------------------------------------- +---------------+ 1.1.1 +-------------------+ | rcsfile.c 1.1 |----+--------------------------------| rcsfile.c 1.1.1.1 | +---------------+ | +-------------------+ | | 1.1.2 +-------------------+ | +---------------+ +---------| rcsfile.c 1.1.2.1 | +-------------------+ | rcsfile.c 1.2 | +-------------------+ | rcsfile.c 1.1.1.2 | +---------------+ | +-------------------+ +-------------------+ | | rcsfile.c 1.1.2.2 | +-------------------+ +-------------------+ | rcsfile.c 1.1.1.3 | +-------------------+ ---------------------------------------------------------------------------- Note that the paper does not actually describe how CVS should behave if the 1.2 revision were absent from this diagram. Historically, cvs-fast-export's behavior with respect to vendor branches (from when it was 'parsecvs') was described by the following comment due to Keith Packard: "Vendor branches" (1.1.x) are created by importing sources from an external source. In X.org, this was from XFree86 and DRI. When these trees are imported, cvs sets the 'default' branch in each ,v file to point along this branch. This means that tags made between the time the vendor branch is imported and when a new revision is committed to the head branch are placed on the vendor branch In addition, any files without such a delta appear to adopt the vendor branch as 'head'. We fix this by merging these two branches together as if they were the same." All that is consistent with the Berliner paper except, crucially, the last sentence (" merging these two branches together as if they were the same"). Consider the following revision diagram, which corresponds to Changelog,v in the "oldhead" test repository: ---------------------------------------------------------------------------- +---------------------+ +---------------------+ | Changelog 1.1 | | Changelog 1.1.1.1 | | 1994-12-03T06:09:14 |----------->| 1994.12.03.06.09.14 | +---------------------+ +---------------------+ | | +---------------------+ | | Changelog 1.2 | | | 1995-02-08T11:54:21 | | +---------------------+ | +---------------------+ | Changelog 1.1.1.2 | | 1995-07-27T20:23:14 | +---------------------+ ---------------------------------------------------------------------------- The actual oldhead repo has revisions up to 1.8 on the master branch and 1.1.1.3, but this subgraph illustrates the problem. Under the merge rule, the tip content will be that of 1.1.1.2 than 1.2. This does not match CVS's observed behavior. The behavior now implemented is to find the highest-numbered (thus, presumbably, the most recent) vendor branch, point the "master" named reference at it, and then splice the existing master branch to the end of that vendor branch. == Operation == This program operates in three stages. The first (analysis) digests a collection of RCS masters into a collection of linked lists and structures representing per-file revision trees. The second (resolution) massages the revision trees into a DAG (directed acyclic graph) of changesets. The third stage (export) emits a report on the DAG structure, either a fast-export stream expressing it or DOT code for a visualization that can be rendered by graphviz. The main sequence of the code is, unsurprisingly, in the main() portion of the file main.c === Analysis stage === The main function of this stage is cvs_master_digest(). It may be sequenced in one of two ways depending on whether you run with the -t option at a value 2 or greater. Without this, masters are processed sequentially as they are encountered. With it, they are dispatched to worker subthreads. The point of this is to avoid allowing I/O waits for one master read or snapshot export to stall compute-intensive processing of other masters (that is, mainly, delta assembly). CVS master files consist of a header section describing symbols and attributes, followed by a set of deltas (add-delete/change sequences) one per revision number. The analysis stage uses a yacc/lex grammar to parse headers in CVS files, and custom code to integrate their delta sequences into sequences of whole-file snaphots corresponding to each delta. These snapshots are stashed in a temporary directory, later to become blobs in the fast-export stream. A consequence is that the code is tied to Bison and Flex. In order for the parallelization to work, the CVS-master parser has to be fully re-entrant. Heirloom Yacc and Lex can't do that. After some study of the structures in cvs.h, most of the analysis code will be fairly straightforward to understand. If you have to modify the analysis code, it will most likely involve some small addition to the parse grammar to handle an attribute particular to somebody's variation on CVS. === Resolution stage === The main function of this stage merge_to_changesets(). All the really black magic happens inside it. Nobody understands all of this code; a few people have managed to comprehend individual pieces of it. === Export stage === Most of the export third stage is relatively easy to understand. It takes the annotated DAG produced by the second stage and emits either a fast-import stream or a DOT representation of the DAG. The exception is the actual delta resolution done by the call to generate(), which is seriously hairy. Fortunately, that part of the CVS master format has (unlike the header and attribute information) been extremely stable, and thus the delta-integration code is unlikely to require modification. You will probably find that only part of the export code proper that is seriously hairy is the use of iterators in compute_parent_links(). This hair is justified by the fact that it optimizes what used to be an O(n**3) operation (and the worst hotspot in the code at the time) into about O(n). The main challenge of this code is comprehending the data structures it consumes. That's our next topic. == Data structures == This program is rife with tricky data structures. If you want to modify it, the first thing you should do is read the definitions in cvs.h. The trickiest part is that the rev_list structure is used polymorphically in such a way that it's not easy to tell what the semantics of a rev_list * are. Early in processing it tends to point at the branch-head head list for a single CVS master. Later it can link to the digested form of an entire CVS repo (e.g. a linked list of rev_list objects each encapsulating a CVS master's content). Still later it can link to a tree of gitspace commit objects. In an attempt to nake the code more readable, cvs.h defines three typedefs, one for each of these uses. The rest of this section uses those. The first stage turns each CVS file into a cvs_repo * - a linked list of rev_ref objects, each of which represents a named CVS branch head. The rev_ref objects in turn point at chains of cvs_commit objects, each representing a CVS delta. During the resolution phase, the branch structures associated with individual files are transformed into a single git_repo * representing a repository-state DAG. At this point, the commit pointers change semantics to refer to git_commit objects; a certain amount of type punning is involved. The export code walks the resulting single git_repo linked list generating a report from it. A notable feature of the git_commit structures is that the code goes to great lengths to space-optimize (pack) the representation of file paths in the commit at the point when it is synthesized (this is required in order to hold down the program's working-set size on large repositories). After packing, paths are represented by structure trees that coalesce common path prefixes. The 'refcount' field in the commit structure counts the number of branch heads from which the commit can be reached by an ancestry chain. == Source files == === atom.c === The main entry point, atom(), interns a string, avoiding having separate storage for duplicate copies. No ties to other structures. The only complexity here is a straightforward hash implementation to speed up collision searches. === authormap.c === Manages a map from short CVS-syle names to DVCS-style name/email pairs. Added by ESR, it has few ties to the core code. === cvsnumber.c === Various small functions (mostly predicates) on the cvs_number objects that represent CVS revision numbers (1.1, 1.2, 2.1.3.1 and the like). No coupling to other structures. === cvsutil.c === Code for managing and freeing objects in a CVS file structure. No coupling to revlist handling. === dump.c === Dump functions for graphing and debug instrumentation. Much of the code in here is obsolete and unused. === export.c === Code to dump a resolved DAG as a git-fast-export stream. Replaces much more obscure code in Keith's original that built git repos directly by calling the git CLI. The only coupling to the core data structures is that it traverses the DAG created by the resolution stage. === generate.c === Convert the sequence of deltas in a CVS master to a corresponding sequence of file snapshots. This is the part of the export stage most likely to make your brain hurt. === gram.y === A fairly straightforward yacc grammar for CVS masters. Fills a cvs_file structure passed into it as a yyparse() argument. === graph.c === Like export.c, but emits DOT rather than a fast-export stream. Takes the DAG generated by the analysis stage and turns it into a description of the graph in the DOT markup language used by the graphviz tools. === import.c === Import/analysis of a collection of CVS master files. Calls the parser and builds the first-stage revlist. The complicated part is in the rev_list_cvs() call, which calls out to revcvs.c. In the first-stage revlist, each element corresponds to a CVS master and points at a list of named CVS branch heads (rev_refs) in the master, each one of which points at a list of CVS commit structures (cvs_commit). === lex.l === The lexical analyzer for the grammar in gram.y. Pretty straightforward. === main.c === The main sequence of the code. Not much else there other than some fairly simple time and date handling. === merge.c === Here there be dragons. Core code used in analysis and resolution. Nobody completely understands this either. The main function is merge_to_changesets(), which is conceptually simple - it finds cliques of CVS deltas that match by commitid or other metadata, and creates a git changeset for each clique of matching CVS deltas. First it finds all the unique branch heads in the CVS masters, creates corresponding git branch heads, and sorts the git branch heads in tree order, trunk first. Then for each git branch head, it finds all the CVS masters that have deltas for that git branch, and calls merge_branches to create the git changesets. Finally tags are assigned to the changesets. The job of merge_branches seems simple - find cliques of matching CVS deltas for one branch, and create corresponding git changesets. The technique used by merge_branches is to put the masters (revisions) in order by change date, and step along that list to find the clique, i.e. find deltas that are "close enough" (within the cvs-fast-export window). Reasons the code is hard to understand: 1. The criteria for matching, as mentioned above, are complex. In the simplest case, deltas made under recent CVS versions can be matched by unique commit-ID cookies generated by CVS. When commit IDS are absent, clique matches must be recognized by a match of all other metadata (committer ID and change comment content) except for approximate match of time. 2. The revisions array does not contain a static list of revisions, each revisions array element points to a master's latest (newest) delta. As the CVS deltas are used to create git commits, the revisions array is updated to point to an earlier (older) delta of the same master. Another way of understanding the process is as a set of "flows". Each revision array element is a window into the set of updates (flow) for the corresponding CVS master. Or using more traditional CS terminology, each revision array element is a pointer to an element of the CVS revisions linked list. === nodehash.c === Manage the node hash, an obscure bit of internals used to walk through all deltas of a CVS master at the point in the export stage where snapshot blobs corresponding to the deltas are generated. === rbtree.c === This is an optimization hack to speed up CVS symbol lookup, added well after the main body of the code was written and decoupled from the core data structures. === revcvs.c === Build the in-core revision list corresponding to a single CVS master. Just one entry point, cvs_master_digest(), which takes the structure built by the grammar parse of the master as its single argument. === revdir.c === The least incomprehensible part of the core code. These functions are used to pack file paths in rev_file objects into a more space-efficient representation. This code may use one of two packing implementations. The older one is in dirpack.c; it's the scheme Keith Packard originally wrote. The newer one, which is more complex but drastically reduces working set size, is in treepack.c; it is due to Laurence Hygate. === revlist.c === Utility functions used by both the CVS analysis code in revcvs.c and the black magic in merge.c. === tags.c === Manage objects representing CVS tags (and later, git lightweight tags). These data structures reference and are referenced by the core structures, but the coupling is relatively loose and well-defined; you can figure out what is going on by reading the function names. === utils.c === The progress meter, various private memory allocators, and error-reporting. No coupling to the core data structures. == Known problems in the code == There's a comment in merge_to_changesets() that says "Yes, this is currently very inefficient". That is a probable hotspot. The fact that nobody really understands the resolution algorithm is worrying. It means nobody has much hope of fixing it where it breaks. Various mysterious error messages need to be documented. Basically, if it's not in the list on cvs-fast-export.asc, it needs to be. == Good practice == When modifying this code, run the regression tests (make check) early and often. It is very easy to break even with apparently innocuous changes. If you find a bug and fix it, please try to create a toy repo exhibiting the problem - or, better yet, a minimal set of operations to reproduce it. Then add that to the regression tests. Likewise, when adding a feature, add a test for it as well. If you figure out something about the code that isn't documented here - or, especially, if it's documented wrongly - please include an explanation with your patch. cvs-fast-export-1.35/reporting-bugs.asc0000664000175000017500000000474512443722416016333 0ustar esresr= Reporting bugs in cvs-fast-export = CVS is a wretched hive of scum and villainy. Lifting a CVS repository into a clean revision history is difficult and has rebarbative edge cases. If you are reading this, you have probably tripped over one of them. Here is what to do about it. == Reduction == First, reduce the test case to a minimal set of CVS files that will reproduce the misbehavior. The cvsconvert wrapper script should be useful for getting a concise summary of errors visible at tagged locations and branches. There is a tool called 'cvsreduce" in the cvs-fast-export distribution. It makes a skeletonized copy of a CVS repository, dropping out all the content but leaving the metadata in place. Revision comments are replaced with their MD5 hashes, very short but still unique. The skeletonization process has the additional benefit of removing any sort of data that might be sensitive; only filenames, revision dates and committer IDs are left in place. A conversion attempt on the skeletonized repo should raise the same errors as the original did (except for ignorable ones involving CVS keyword expansion, which will all go away when the file is skeletonized). If it does not, try skeletonizing with -t instead to preserve non-sticky tags Now try to make the skeletonized repository as small as possible by removing swathes of files from it, checking each time to make sure the error continues to reproduce. It is best if you can reduce the fileset to a single file or pair of files. You should find you can simplify the directory structure by moving files from subdirectories to the root, doing file renames to avoid mame collisions. Neither moves nor renames should change the errors reported except in the obvious way of changing pathnames in the messages. Again, if the errors do change in any other way this is interesting and should be reported. At the end of this process you should have a handful of skeletonized master files. == Transmission == Make a tarball including the CVS masters. Make a session transcript showing the error relicating on them. Mail these things to the maintainer with any other information you think might be relevant. == Compensation == Wrestling with CVS repository malformations is ugly, hard work. If you are requesting help on behalf of an open-source software project, you will get help for free as the maintainer's schedule permits. The maintainer is available on a consulting basis to all others and *will* expect to be paid for his pain. // end cvs-fast-export-1.35/cfe-logo.png0000664000175000017500000001106712536076761015100 0ustar esresrPNG  IHDR@@iqbKGDn ]] pHYs  tIME   QIDATxZwxU3wTB PDDi4)b"h"m]AVdAp! "ZRFHuf$\4 es9{⦄zr:̺^XR+O81h3;g#Lo!WB9J(G ^a楯Z*]-2S|#<bY`H75 [Vj֔2߼!ZBU`j_tl~O,WEX!wi9$UFk)*iWN{6n xr[ӯ犨"-hPc}jD ( 09<:*ݯ1ᚩ!vKԖ__o}% `fy)3պI4b:`%>fESpA!OYȟ p70yw5rj贻\TbH,/K޿ߟՅccxU9sZz3rdo~N= ];bxon_N8u ]Rh*Tk&.xH; ]Lf)/#OM.^צsJS"N, D,|*^Ts&D`kLߍ۷ܽJůsow_<;<.6(4}Ϯc)57!Y}`#ԩ7,zqMö"hj^\ޠNTRLvTS,Q Щ4H'* ]ZV70HΎȏh>AYB%|j)ԮRϴo?E2Z"0䷦ ۻ;{ \9zGHG7 u״}c9Q9^FҮo5|+u㻯K͠/u>)f?f,18p0n%:#6Xbi30vs7xiR4ݸǃRHpG9[sg^MY*4gS2]]%9خg f~P‰{&|9dkǡöv}}BpIL};Q6bg]O>mT;Pc`6`俙FHwW}W&$^;iN\3aEd;l>#ӐK#1uF|![+"#V2ɾ [/g^8|Qaל6q1gL,9ڮN!BM,:\{4T&PrdcpR9 TN9lb]gka!?M^m}wfY¯* }taagnnw q#Z ɞ34uԾC vt0T@ Br*ʘPoX2+3UE{cO'B;Աr8熈[xj՜~wU NNNfL?v]t1SSsp8^4g6!^Mz.q:̖ZW’Yׄ= Oaap͒ ?~Vc5N`5WP*ZpPy\Q]N!;wY䓚s1ۣ`nl6@>7fߝ4h^H8*O RrfגiZbcCpin]۶ RX-}'?a3ߪYÈ-$yc&j͉(YJZDz|  Vk[']S+ .G" 2 sMn8W.mċ0f@S\@ٗ!IHٽ,4U=m<ӬUֱv2* S-!5 ]pI"> vGpDCmvͣ< ,D^Z ${XQ?,??h7ٲl?..PR.ȹ£_((pnM ZT1@|SUS2Hѯ۴ E)/Np:] Fg[nKmZ9M,~j(|}GU}Ie*.I|{'(֫بdg9ޝ8>Cu$C)\ybY'zL~YKm}dc6|<׿=4NY~5~3AN8"TUEaWG͖Z=[&S֝}a:AADy!ZN #IENDB`cvs-fast-export-1.35/tests/0000775000175000017500000000000012624621763014030 5ustar esresrcvs-fast-export-1.35/tests/empty.chk0000664000175000017500000000021212624620213015635 0ustar esresrcvs-fast-export: warning - no master branch generated cvs-fast-export: warning - master file empty,v has no revision number - ignore file cvs-fast-export-1.35/tests/longrev.tst0000664000175000017500000000111712446600057016233 0ustar esresr#!/usr/bin/env python ## A widely branched repo with long file revision strings. import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.CVSRepository("longrev.repo") repo.init() repo.module("module") co = repo.checkout("module", "longrev.checkout") co.write("README", "A test of multiple tags.\n") co.add("README") co.commit("Initial revision") for i in range(10): branchname = ("branch%s" % (i+1)) co.branch( branchname ) co.switch( branchname ) co.write("README", branchname) co.commit("Updated for " + branchname) repo.cleanup() cvs-fast-export-1.35/tests/neutralize.map0000664000175000017500000000002612621357646016712 0ustar esresresr = foo -0500 cvs-fast-export-1.35/tests/t9603.py0000775000175000017500000000125512446577460015203 0ustar esresr#!/usr/bin/env python ## Testing for correct patchset estimation # Structure of the test cvs repository # # Message File:Content Commit Time # Rev 1 a: 1.1 2009-02-21 19:11:43 +0100 # Rev 2 a: 1.2 b: 1.1 2009-02-21 19:11:14 +0100 # Rev 3 b: 1.2 2009-02-21 19:11:43 +0100 # # As you can see the commit of Rev 3 has the same time as # Rev 1 this leads to a broken import because of a cvsps # bug. import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") cc = testlifter.ConvertComparison(stem="t9603", module="module") cc.repo.retain = ("-k" in sys.argv[1:]) cc.compare_tree("branch", "master", True) cc.cleanup() cvs-fast-export-1.35/tests/t9601.testrepo/0000775000175000017500000000000012435607267016462 5ustar esresrcvs-fast-export-1.35/tests/t9601.testrepo/.gitattributes0000664000175000017500000000001612435607267021352 0ustar esresr* -whitespace cvs-fast-export-1.35/tests/t9601.testrepo/module/0000775000175000017500000000000012624621642017740 5ustar esresrcvs-fast-export-1.35/tests/t9601.testrepo/module/imported-anonymously.txt,v0000664000175000017500000000063012435607267025167 0ustar esresrhead 1.1; branch 1.1.1; access; symbols vtag-1:1.1.1.1; locks; strict; comment @# @; 1.1 date 2004.02.09.15.43.13; author kfogel; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2004.02.09.15.43.13; author kfogel; state Exp; branches; next ; desc @@ 1.1 log @Initial revision @ text @This is vtag-1 (on vbranchA) of imported-anonymously.txt. @ 1.1.1.1 log @Import (vbranchA, vtag-1). @ text @@ cvs-fast-export-1.35/tests/t9601.testrepo/module/imported-modified.txt,v0000664000175000017500000000120412435607267024350 0ustar esresrhead 1.2; access; symbols vtag-1:1.1.1.1 vbranchA:1.1.1; locks; strict; comment @# @; 1.2 date 2004.02.09.15.43.14; author kfogel; state Exp; branches; next 1.1; 1.1 date 2004.02.09.15.43.13; author kfogel; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2004.02.09.15.43.13; author kfogel; state Exp; branches; next ; desc @@ 1.2 log @Commit on HEAD. @ text @This is a modification of imported-modified.txt on HEAD. It should supersede the version from the vendor branch. @ 1.1 log @Initial revision @ text @d1 2 a2 1 This is vtag-1 (on vbranchA) of imported-modified.txt. @ 1.1.1.1 log @Import (vbranchA, vtag-1). @ text @@ cvs-fast-export-1.35/tests/t9601.testrepo/module/imported-twice.txt,v0000664000175000017500000000117112435607267023706 0ustar esresrhead 1.1; branch 1.1.1; access; symbols vtag-2:1.1.1.2 vtag-1:1.1.1.1 vbranchA:1.1.1; locks; strict; comment @# @; 1.1 date 2004.02.09.15.43.13; author kfogel; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2004.02.09.15.43.13; author kfogel; state Exp; branches; next 1.1.1.2; 1.1.1.2 date 2004.02.09.15.43.13; author kfogel; state Exp; branches; next ; desc @@ 1.1 log @Initial revision @ text @This is vtag-1 (on vbranchA) of imported-twice.txt. @ 1.1.1.1 log @Import (vbranchA, vtag-1). @ text @@ 1.1.1.2 log @Import (vbranchA, vtag-2). @ text @d1 1 a1 1 This is vtag-2 (on vbranchA) of imported-twice.txt. @ cvs-fast-export-1.35/tests/t9601.testrepo/module/added-imported.txt,v0000664000175000017500000000076012435607267023637 0ustar esresrhead 1.1; access; symbols vtag-4:1.1.1.1 vbranchA:1.1.1; locks; strict; comment @# @; 1.1 date 2004.02.09.15.43.15; author kfogel; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2004.02.09.15.43.16; author kfogel; state Exp; branches; next ; desc @@ 1.1 log @Add a file to the working copy. @ text @Adding this file, before importing it with different contents. @ 1.1.1.1 log @Import (vbranchA, vtag-4). @ text @d1 1 a1 1 This is vtag-4 (on vbranchA) of added-then-imported.txt. @ cvs-fast-export-1.35/tests/t9601.testrepo/module/imported-once.txt,v0000664000175000017500000000064112435607267023520 0ustar esresrhead 1.1; branch 1.1.1; access; symbols vtag-1:1.1.1.1 vbranchA:1.1.1; locks; strict; comment @# @; 1.1 date 2004.02.09.15.43.13; author kfogel; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2004.02.09.15.43.13; author kfogel; state Exp; branches; next ; desc @@ 1.1 log @Initial revision @ text @This is vtag-1 (on vbranchA) of imported-once.txt. @ 1.1.1.1 log @Import (vbranchA, vtag-1). @ text @@ cvs-fast-export-1.35/tests/t9601.testrepo/module/imported-modified-imported.txt,v0000664000175000017500000000165312435607267026201 0ustar esresrhead 1.2; access; symbols vtag-2:1.1.1.2 vtag-1:1.1.1.1 vbranchA:1.1.1; locks; strict; comment @# @; 1.2 date 2004.02.09.15.43.14; author kfogel; state Exp; branches; next 1.1; 1.1 date 2004.02.09.15.43.13; author kfogel; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2004.02.09.15.43.13; author kfogel; state Exp; branches; next 1.1.1.2; 1.1.1.2 date 2004.02.09.15.43.13; author kfogel; state Exp; branches; next ; desc @@ 1.2 log @First regular commit, to imported-modified-imported.txt, on HEAD. @ text @This is a modification of imported-modified-imported.txt on HEAD. It should supersede the version from the vendor branch. @ 1.1 log @Initial revision @ text @d1 2 a2 1 This is vtag-1 (on vbranchA) of imported-modified-imported.txt. @ 1.1.1.1 log @Import (vbranchA, vtag-1). @ text @@ 1.1.1.2 log @Import (vbranchA, vtag-2). @ text @d1 1 a1 1 This is vtag-2 (on vbranchA) of imported-modified-imported.txt. @ cvs-fast-export-1.35/tests/t9601.testrepo/CVSROOT/0000775000175000017500000000000012624621642017612 5ustar esresrcvs-fast-export-1.35/tests/t9601.testrepo/CVSROOT/val-tags0000664000175000017500000000003312444400143021236 0ustar esresrvtag-1 y vtag-2 y vtag-4 y cvs-fast-export-1.35/tests/t9601.testrepo/CVSROOT/.gitignore0000664000175000017500000000002112435607267021602 0ustar esresrhistory val-tags cvs-fast-export-1.35/tests/t9601.testrepo/CVSROOT/history0000664000175000017500000003154512624621642021246 0ustar esresrO54782957|esr|~/public_html/cvs-fast-export/tests/*0|module||module O547849c1|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54785ce2|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54785d96|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54794422|esr|~/public_html/cvs-fast-export/tests/*0|module||module O547a0123|esr|~/public_html/cvs-fast-export/tests/*0|module||module O547a1e6a|esr|~/public_html/cvs-fast-export/tests/*0|module||module O547a200a|esr|~/public_html/cvs-fast-export/tests/*0|module||module O547a216f|esr|~/public_html/cvs-fast-export/tests/*0|module||module O547a3b1f|esr|~/public_html/cvs-fast-export/tests/*0|module||module O547e198d|esr|~/public_html/cvs-fast-export/tests/*0|module||module O547e1a85|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54801463|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54801b31|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54801ce0|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54807b9f|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5480d134|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54818f73|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54831f0b|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54862cd9|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54862e17|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54863530|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54863743|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54872bc2|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5488791e|esr|~/public_html/cvs-fast-export/tests/*0|module||module O548ad68c|esr|~/public_html/cvs-fast-export/tests/*0|module||module O548e3bcc|esr|~/public_html/cvs-fast-export/tests/*0|module||module O548fa4a0|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54909ce5|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490a276|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490a917|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490ac2b|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490acf8|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490ad41|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490aeef|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490b292|esr|~/public_html/cvs-fast-export/tests/*0|module||module W5490b292|esr|~/public_html/cvs-fast-export/tests/*0|module||a O5490b38a|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490b40f|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490bc7a|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490bd46|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490bd99|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490c2d2|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490c34b|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490c37b|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490cf57|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490d649|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490dfd5|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490e019|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490e11f|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490e170|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490e1da|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490e212|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490e243|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490e272|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490e315|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490f1fd|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54918004|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5491804e|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54918315|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54918486|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5491857d|esr|~/public_html/cvs-fast-export/tests/*0|module||module O549185b1|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54918606|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54918765|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54918e49|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54918eb1|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54918fe6|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54919c18|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5491b4b7|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5491b4f4|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5491f629|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54920003|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5492005f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920060|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1|added-imported.txt U54920060|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.1|imported-anonymously.txt U54920060|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.2|imported-modified-imported.txt U54920060|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.2|imported-modified.txt U54920060|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.1|imported-once.txt U54920060|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.2|imported-twice.txt W54920061|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module||added-imported.txt U54920061|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.1|imported-modified-imported.txt U54920061|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.1|imported-modified.txt U54920061|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.1|imported-twice.txt W54920062|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module||imported-anonymously.txt U54920062|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.2|imported-modified-imported.txt W54920062|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module||imported-modified.txt W54920062|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module||imported-once.txt U54920062|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.2|imported-twice.txt U54920063|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.1|added-imported.txt W54920063|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module||imported-modified-imported.txt W54920063|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module||imported-twice.txt O54920baa|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54920dd0|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5495b868|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54961fc8|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5496203f|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5496d9e7|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5497167b|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54971a1a|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54972044|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5497237f|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54972b9f|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54974348|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54974381|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5498283c|esr|~/public_html/cvs-fast-export/tests/*0|module||module O549828db|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5498291f|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54986acb|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54986acc|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1|added-imported.txt U54986acc|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.1|imported-anonymously.txt U54986acc|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.2|imported-modified-imported.txt U54986acc|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.2|imported-modified.txt U54986acc|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.1|imported-once.txt U54986acc|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.2|imported-twice.txt W54986acd|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module||added-imported.txt U54986acd|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.1|imported-modified-imported.txt U54986acd|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.1|imported-modified.txt U54986acd|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.1|imported-twice.txt W54986ace|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module||imported-anonymously.txt U54986ace|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.2|imported-modified-imported.txt W54986ace|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module||imported-modified.txt W54986ace|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module||imported-once.txt U54986ace|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.2|imported-twice.txt U54986acf|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module|1.1.1.1|added-imported.txt W54986acf|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module||imported-modified-imported.txt W54986acf|esr|~/public_html/cvs-fast-export/tests/t9601.testrepo.checkout|module||imported-twice.txt O54987353|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54987724|esr|~/public_html/cvs-fast-export/tests/*0|module||module O549aa465|esr|~/public_html/cvs-fast-export/tests/*0|module||module O549b02ce|esr|~/public_html/cvs-fast-export/tests/*0|module||module O549b03f6|esr|~/public_html/cvs-fast-export/tests/*0|module||module O549da1f3|esr|~/public_html/cvs-fast-export/tests/*0|module||module O549da2a5|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54b7150c|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54b727c6|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54b74f3c|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54b7b2b0|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54b7b524|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54b7cb14|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54b7cbe5|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54b93537|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54b95161|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54bb41f6|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54bb464b|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54bb781e|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54bb7871|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54bb86f3|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54bb89ff|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54bbbd1c|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54d11fd9|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54d12057|esr|~/public_html/cvs-fast-export/tests/*0|module||module O54d1217c|esr|~/public_html/cvs-fast-export/tests/*0|module||module O551d3c5d|esr|~/public_html/cvs-fast-export/tests/*0|module||module O553f6fa7|esr|~/public_html/cvs-fast-export/tests/*0|module||module O553f72f0|esr|~/public_html/cvs-fast-export/tests/*0|module||module O55786a64|esr|~/public_html/cvs-fast-export/tests/*0|module||module O55786ab3|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5578918c|esr|~/public_html/cvs-fast-export/tests/*0|module||module O55789231|esr|~/public_html/cvs-fast-export/tests/*0|module||module O55e36011|esr|~/public_html/cvs-fast-export/tests/*0|module||module O55e362ab|esr|~/public_html/cvs-fast-export/tests/*0|module||module O55e47bb3|esr|~/public_html/cvs-fast-export/tests/*0|module||module O56053a4b|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5645dc46|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5645e065|esr|~/public_html/cvs-fast-export/tests/*0|module||module O564f1ca8|esr|~/public_html/cvs-fast-export/tests/*0|module||module O56508c3c|esr|~/public_html/cvs-fast-export/tests/*0|module||module O56508e0c|esr|~/public_html/cvs-fast-export/tests/*0|module||module O56531c5d|esr|~/public_html/cvs-fast-export/tests/*0|module||module O56531ee0|esr|~/public_html/cvs-fast-export/tests/*0|module||module O565323a2|esr|~/public_html/cvs-fast-export/tests/*0|module||module cvs-fast-export-1.35/tests/twobranch.tst0000664000175000017500000000200412446601401016534 0ustar esresr#!/usr/bin/env python ## Two-branch repo to test incremental dumping import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.CVSRepository("twobranch.repo") repo.init() repo.module("module") co = repo.checkout("module", "twobranch.checkout") co.write("README", "The quick brown fox jumped over the lazy dog.\n") co.add("README") co.commit("This is a sample commit") co.branch("samplebranch") co.write("README", "Now is the time for all good men to come to the aid of their country.\n") co.commit("This is another sample commit") co.switch("HEAD") co.write("README", "And now for something completely different.\n") co.commit("The obligatory Monty Python reference") co.switch("samplebranch") co.write("README", "This is random content for README.\n") co.commit(r"We will put the dump theshold before this commit.") co.switch("HEAD") co.write("README", "I'm back in the saddle again.\n") co.commit("This commit should alter the master branch.") repo.cleanup() # end cvs-fast-export-1.35/tests/twobranch.inc-chk0000664000175000017500000000142312536065263017254 0ustar esresrfrom refs/heads/samplebranch^0 blob mark :7 data 35 This is random content for README. commit refs/heads/samplebranch mark :8 committer foo 104800 +0000 data 50 We will put the dump theshold before this commit. from :4 M 100644 :7 README M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end from refs/heads/master^0 blob mark :9 data 30 I'm back in the saddle again. commit refs/heads/master mark :10 committer foo 106000 +0000 data 44 This commit should alter the master branch. from :6 M 100644 :9 README reset refs/heads/master from :10 reset refs/heads/samplebranch from :8 done cvs-fast-export-1.35/tests/gitwash0000775000175000017500000000053712445366740015433 0ustar esresr#!/bin/sh # # gitwash - accept a stream in fast order and canonicalize it. # # FIXME: stop deleting author and committer lines when we fix timezone screwage. # rm -fr /tmp/gitwash* mkdir /tmp/gitwash$$ cd /tmp/gitwash$$ git init --quiet git fast-import --quiet git fast-export --all | sed -e '/author/d' -e '/committer/d' rm -fr /tmp/gitwash$$ #end cvs-fast-export-1.35/tests/missingbranch,v0000664000175000017500000000207412455741057017050 0ustar esresrhead 1.4; access; symbols CSRG-last:1.2.2.1; locks; strict; comment @Was src/src/lib/libcurses/tty.c,v in NetBSD src@; 1.4 date 94.01.24.08.36.59; author cgd; state Exp; branches 1.4.2.1; next 1.3; 1.3 date 93.11.09.04.08.56; author cgd; state Exp; branches; next 1.2; 1.2 date 93.11.09.03.35.03; author cgd; state Exp; branches 1.2.2.1; next 1.1; 1.1 date 93.08.07.05.51.16; author mycroft; state Exp; branches; next ; 1.4.2.1 date 94.08.14.14.27.56; author mycroft; state Exp; branches; next ; 1.2.2.1 date 94.01.24.08.17.35; author cgd; state Exp; branches; next ; desc @@ 1.4 log @d3f06456d1d40470f261651166f36347 @ text @d1 1 a1 1 content for 1.4 @ 1.4.2.1 log @eac3a5a5fe408f0129d454a84fc3fdb5 @ text @d1 1 a1 1 content for 1.4.2.1 @ 1.3 log @d071e58f46e8bafc924f2e8585d485bf @ text @d1 1 a1 1 content for 1.3 @ 1.2 log @e5c4dd39ec32f6d824ebb8fbc925873d @ text @d1 1 a1 1 content for 1.2 @ 1.2.2.1 log @db82d0f8371146cbff468efa59091942 @ text @d1 1 a1 1 content for 1.2.2.1 @ 1.1 log @89a25a6875ea64d374c9fe96cf975445 @ text @d1 1 a1 1 content for 1.1 @ cvs-fast-export-1.35/tests/visualize0000775000175000017500000000026112435607267015773 0ustar esresr#!/bin/sh # # visualize - visualize a specified repository or master file # stem=`basename $1` make --quiet ${stem}.dot && dot <${stem}.dot -Tpng | display - && rm ${stem}.dot cvs-fast-export-1.35/tests/basic.repo/0000775000175000017500000000000012621357651016054 5ustar esresrcvs-fast-export-1.35/tests/basic.repo/module/0000775000175000017500000000000012621357653017343 5ustar esresrcvs-fast-export-1.35/tests/basic.repo/module/README,v0000444000175000017500000000040312621357653020456 0ustar esresrhead 1.1; access; symbols; locks; strict; comment @# @; 1.1 date 2015.11.13.13.03.39; author esr; state Exp; branches; next ; commitid 1005645DFAB0D2F22B2; desc @@ 1.1 log @This is a sample commit @ text @The quick brown fox jumped over the lazy dog. @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/0000775000175000017500000000000012624160405017203 5ustar esresrcvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#postadmin0000664000175000017500000000171212621357651021256 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/cvswrappers0000444000175000017500000000113212621357651021506 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/basic.repo/CVSROOT/loginfo,v0000444000175000017500000000415512621357651021036 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#checkoutlist0000664000175000017500000000075712621357651021771 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#cvswrappers0000664000175000017500000000113212621357651021633 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/basic.repo/CVSROOT/val-tags0000666000175000017500000000000012621357651020644 0ustar esresrcvs-fast-export-1.35/tests/basic.repo/CVSROOT/postadmin0000444000175000017500000000171212621357651021131 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#rcsinfo0000664000175000017500000000121112621357651020715 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/verifymsg,v0000444000175000017500000000334512621357651021414 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/checkoutlist0000444000175000017500000000075712621357651021644 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/basic.repo/CVSROOT/commitinfo,v0000444000175000017500000000275412621357651021550 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#postwatch0000664000175000017500000000175512621357651021303 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/posttag,v0000444000175000017500000000420612621357651021057 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#preproxy0000664000175000017500000000234312621357651021151 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/taginfo0000444000175000017500000000437712621357651020574 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#postproxy0000664000175000017500000000220112621357651021341 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/verifymsg0000444000175000017500000000277112621357651021154 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/basic.repo/CVSROOT/history0000666000175000017500000000022712621357653020644 0ustar esresrO5645dfa9|esr|~/public_html/cvs-fast-export/tests/*0|module||module A5645dfab|esr|~/public_html/cvs-fast-export/tests/basic.checkout|module|1.1|README cvs-fast-export-1.35/tests/basic.repo/CVSROOT/postwatch,v0000444000175000017500000000233112621357651021407 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/postadmin,v0000444000175000017500000000226612621357651021400 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/config0000444000175000017500000001004712621357651020401 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/basic.repo/CVSROOT/config,v0000444000175000017500000001042312621357651020641 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/rcsinfo,v0000444000175000017500000000156512621357651021046 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/loginfo0000444000175000017500000000360112621357651020567 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/basic.repo/CVSROOT/commitinfo0000444000175000017500000000240012621357651021272 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/posttag0000444000175000017500000000363212621357651020617 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/postproxy,v0000444000175000017500000000255512621357651021472 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/postproxy0000444000175000017500000000220112621357651021214 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/rcsinfo0000444000175000017500000000121112621357651020570 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/preproxy0000444000175000017500000000234312621357651021024 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/modules,v0000444000175000017500000000244512621357651021051 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#config0000664000175000017500000001004712621357651020526 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/basic.repo/CVSROOT/notify0000444000175000017500000000163412621357651020446 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/basic.repo/CVSROOT/checkoutlist,v0000444000175000017500000000133312621357651022075 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#commitinfo0000664000175000017500000000240012621357651021417 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/Emptydir/0000775000175000017500000000000012621357651021010 5ustar esresrcvs-fast-export-1.35/tests/basic.repo/CVSROOT/notify,v0000444000175000017500000000221012621357651020677 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#taginfo0000664000175000017500000000437712621357651020721 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#verifymsg0000664000175000017500000000277112621357651021301 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/basic.repo/CVSROOT/postwatch0000444000175000017500000000175512621357651021156 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/cvswrappers,v0000444000175000017500000000150612621357651021755 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/preproxy,v0000444000175000017500000000271712621357651021273 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/taginfo,v0000444000175000017500000000475312621357651021034 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.37; author esr; state Exp; branches; next ; commitid 1005645DFA90D299FA1; desc @@ 1.1 log @initial checkin@ text @# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#notify0000664000175000017500000000163412621357651020573 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/basic.repo/CVSROOT/modules0000444000175000017500000000207112621357651020602 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#posttag0000664000175000017500000000363212621357651020744 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#modules0000664000175000017500000000207112621357651020727 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/basic.repo/CVSROOT/.#loginfo0000664000175000017500000000360112621357651020714 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/t9604.testrepo/0000775000175000017500000000000012435607267016465 5ustar esresrcvs-fast-export-1.35/tests/t9604.testrepo/.gitattributes0000664000175000017500000000001612435607267021355 0ustar esresr* -whitespace cvs-fast-export-1.35/tests/t9604.testrepo/module/0000775000175000017500000000000012624621657017751 5ustar esresrcvs-fast-export-1.35/tests/t9604.testrepo/module/a,v0000664000175000017500000000372212435607267020363 0ustar esresrhead 1.16; access; symbols; locks; strict; comment @# @; 1.16 date 2006.10.29.07.00.01; author user2; state Exp; branches; next 1.15; 1.15 date 2006.10.29.06.59.59; author user2; state Exp; branches; next 1.14; 1.14 date 2006.04.02.08.00.01; author user2; state Exp; branches; next 1.13; 1.13 date 2006.04.02.07.59.59; author user2; state Exp; branches; next 1.12; 1.12 date 2005.12.01.00.00.00; author user4; state Exp; branches; next 1.11; 1.11 date 2005.11.01.00.00.00; author user3; state Exp; branches; next 1.10; 1.10 date 2005.10.01.00.00.00; author user2; state Exp; branches; next 1.9; 1.9 date 2005.09.01.00.00.00; author user1; state Exp; branches; next 1.8; 1.8 date 2005.08.01.00.00.00; author user4; state Exp; branches; next 1.7; 1.7 date 2005.07.01.00.00.00; author user3; state Exp; branches; next 1.6; 1.6 date 2005.06.01.00.00.00; author user2; state Exp; branches; next 1.5; 1.5 date 2005.05.01.00.00.00; author user1; state Exp; branches; next 1.4; 1.4 date 2005.04.01.00.00.00; author user4; state Exp; branches; next 1.3; 1.3 date 2005.03.01.00.00.00; author user3; state Exp; branches; next 1.2; 1.2 date 2005.02.01.00.00.00; author user2; state Exp; branches; next 1.1; 1.1 date 2005.01.01.00.00.00; author user1; state Exp; branches; next ; desc @@ 1.16 log @Rev 16 @ text @Rev 16 @ 1.15 log @Rev 15 @ text @d1 1 a1 1 Rev 15 @ 1.14 log @Rev 14 @ text @d1 1 a1 1 Rev 14 @ 1.13 log @Rev 13 @ text @d1 1 a1 1 Rev 13 @ 1.12 log @Rev 12 @ text @d1 1 a1 1 Rev 12 @ 1.11 log @Rev 11 @ text @d1 1 a1 1 Rev 11 @ 1.10 log @Rev 10 @ text @d1 1 a1 1 Rev 10 @ 1.9 log @Rev 9 @ text @d1 1 a1 1 Rev 9 @ 1.8 log @Rev 8 @ text @d1 1 a1 1 Rev 8 @ 1.7 log @Rev 7 @ text @d1 1 a1 1 Rev 7 @ 1.6 log @Rev 6 @ text @d1 1 a1 1 Rev 6 @ 1.5 log @Rev 5 @ text @d1 1 a1 1 Rev 5 @ 1.4 log @Rev 4 @ text @d1 1 a1 1 Rev 4 @ 1.3 log @Rev 3 @ text @d1 1 a1 1 Rev 3 @ 1.2 log @Rev 2 @ text @d1 1 a1 1 Rev 2 @ 1.1 log @Rev 1 @ text @d1 1 a1 1 Rev 1 @ cvs-fast-export-1.35/tests/t9604.testrepo/CVSROOT/0000775000175000017500000000000012624621657017623 5ustar esresrcvs-fast-export-1.35/tests/t9604.testrepo/CVSROOT/.gitignore0000664000175000017500000000002112435607267021605 0ustar esresrhistory val-tags cvs-fast-export-1.35/tests/t9604.testrepo/CVSROOT/history0000664000175000017500000011631612624621657021257 0ustar esresrO54782961|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54782962|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54782963|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54782964|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547849cb|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547849cc|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547849cd|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547849ce|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54785cec|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54785ced|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54785cee|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54785cef|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54785da0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54785da1|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54785da2|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54785da3|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5479442c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5479442d|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5479442e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5479442f|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547a012d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a012e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547a012f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a0130|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547a1e74|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a1e75|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547a1e76|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a1e77|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547a2014|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a2015|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547a2016|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a2017|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547a2179|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a217a|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547a217b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a217c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547a3b29|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a3b2a|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547a3b2b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a3b2c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547e1997|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547e1998|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547e1999|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547e199a|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547e1a8f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547e1a90|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O547e1a91|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547e1a92|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5480146d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5480146e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5480146f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54801470|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54801b3b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54801b3c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54801b3d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54801b3e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54801cea|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54801ceb|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54801cec|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54801ced|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54807ba9|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54807baa|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54807bab|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54807bac|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5480d13e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5480d13f|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5480d140|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5480d141|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54818f7d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54818f7e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54818f7f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54818f80|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54831f15|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54831f16|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54831f17|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54831f18|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54862ce3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54862ce4|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54862ce5|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54862ce6|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54862e21|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54862e22|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54862e23|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54862e24|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5486353a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5486353b|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5486353c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5486353d|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5486374d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5486374e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5486374f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54863750|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54872bcc|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54872bcd|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54872bce|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54872bcf|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54887928|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54887929|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5488792a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5488792b|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O548ad696|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548ad697|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O548ad698|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548ad699|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O548e3bd6|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548e3bd7|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O548e3bd8|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548e3bd9|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O548fa4aa|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548fa4ab|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O548fa4ac|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548fa4ad|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54909cef|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54909cf0|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54909cf1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54909cf2|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490a280|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490a281|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490a282|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490a283|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490a91b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490a91c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490a91d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490a91e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490ac35|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ac36|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490ac37|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ac38|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490ad02|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ad03|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490ad04|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ad05|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490ad4b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ad4c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490ad4d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ad4e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490aef9|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490b29c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b29d|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490b29e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b29f|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490b394|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b395|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490b396|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b397|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490b419|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b41a|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490b41b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b41c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490bc84|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bc85|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490bc86|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bc87|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490bd50|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bd51|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490bd52|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bd53|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490bda3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bda4|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490bda5|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bda6|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490c2dc|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c2dd|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490c2de|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c2df|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490c355|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c356|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490c357|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c358|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490c385|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c386|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490c387|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c388|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490cf61|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490cf62|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490cf63|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490cf64|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490d653|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490d654|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490d655|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490d656|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490dfd9|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490dfda|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490dfdb|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490dfdc|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e023|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e024|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e025|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e026|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e129|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e12a|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e12b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e12c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e17a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e17b|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e17c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e17d|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e1e4|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e1e5|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e1e6|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e1e7|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e21c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e21d|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e21e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e21f|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e24d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e24e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e24f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e250|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e27c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e27d|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e27e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e27f|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e31f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e320|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490e321|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e322|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490f207|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490f208|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5490f209|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490f20a|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5491800e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491800f|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918010|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918011|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918058|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918059|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5491805a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491805b|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5491831f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918320|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918321|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918322|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918490|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918491|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918492|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918493|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918587|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918588|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918589|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491858a|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O549185bb|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549185bc|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O549185bd|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549185be|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918610|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918611|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918612|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918613|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5491876f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918770|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918771|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918772|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918e53|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918e54|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918e55|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918e56|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918ebb|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918ebc|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918ebd|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918ebe|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918ff0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918ff1|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54918ff2|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918ff3|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54919c22|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54919c23|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54919c24|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54919c25|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5491b4c1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491b4c2|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5491b4c3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491b4c4|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5491b4fe|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491b4ff|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5491b500|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491b501|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5491f633|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491f634|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5491f635|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491f636|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5492008b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5492008c|esr|~/public_html/cvs-fast-export/tests/t9604.testrepo.checkout|module|1.16|a O54920bb4|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920bb5|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54920bb6|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920bb7|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54920dda|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920ddb|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54920ddc|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920ddd|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5495b872|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5495b873|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5495b874|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5495b875|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54961fd2|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54961fd3|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54961fd4|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54961fd5|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54962049|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5496204a|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5496204b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5496204c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5496d9f1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5496d9f2|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5496d9f3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5496d9f4|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54971685|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54971686|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54971687|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54971688|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54971a24|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54971a25|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54971a26|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54971a27|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5497204e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5497204f|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54972050|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54972051|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54972389|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5497238a|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5497238b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5497238c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54972ba9|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54972baa|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54972bab|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54972bac|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54974352|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54974353|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54974354|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54974355|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5497438b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5497438c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5497438d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5497438e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54982846|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54982847|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54982848|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54982849|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O549828e5|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549828e6|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O549828e7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549828e8|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54982929|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498292a|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5498292b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498292c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54986b66|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54986b67|esr|~/public_html/cvs-fast-export/tests/t9604.testrepo.checkout|module|1.16|a O5498717a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498717b|esr|~/public_html/cvs-fast-export/tests/t9604.testrepo.checkout|module|1.16|a O54987186|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987187|esr|~/public_html/cvs-fast-export/tests/t9604.testrepo.checkout|module|1.16|a O54987229|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498722a|esr|~/public_html/cvs-fast-export/tests/t9604.testrepo.checkout|module|1.16|a O54987235|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987236|esr|~/public_html/cvs-fast-export/tests/t9604.testrepo.checkout|module|1.16|a O5498735d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498735e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5498735f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987360|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54987399|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498739a|esr|~/public_html/cvs-fast-export/tests/t9604.testrepo.checkout|module|1.16|a O549873a5|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549873a6|esr|~/public_html/cvs-fast-export/tests/t9604.testrepo.checkout|module|1.16|a O5498772e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498772f|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54987730|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987731|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5498776a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498776b|esr|~/public_html/cvs-fast-export/tests/t9604.testrepo.checkout|module|1.16|a O54987776|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987777|esr|~/public_html/cvs-fast-export/tests/t9604.testrepo.checkout|module|1.16|a O549aa46f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549aa470|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O549aa471|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549aa472|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O549b02d8|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549b02d9|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O549b02da|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549b02db|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O549b0400|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549b0401|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O549b0402|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549b0403|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O549da1fd|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549da1fe|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O549da1ff|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549da200|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O549da2af|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549da2b0|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O549da2b1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549da2b2|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b71516|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b71517|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b71518|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b71519|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b727d0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b727d1|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b727d2|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b727d3|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b74f46|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b74f47|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b74f48|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b74f49|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b7b2ba|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7b2bb|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b7b2bc|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7b2bd|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b7b52e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7b52f|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b7b530|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7b531|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b7cb1e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7cb1f|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b7cb20|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7cb21|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b7cbef|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7cbf0|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b7cbf1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7cbf2|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b93541|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b93542|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b93543|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b93544|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b9516b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b9516c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54b9516d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b9516e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bb4200|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb4201|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bb4202|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb4203|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bb4655|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb4656|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bb4657|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb4658|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bb7828|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb7829|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bb782a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb782b|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bb787b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb787c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bb787d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb787e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bb86fd|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb86fe|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bb86ff|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb8700|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bb8a09|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb8a0a|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bb8a0b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb8a0c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bbbd26|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bbbd27|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54bbbd28|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bbbd29|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54d11fe3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d11fe4|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54d11fe5|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d11fe6|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54d12061|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d12062|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54d12063|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d12064|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54d12186|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d12187|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O54d12188|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d12189|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O551d3c67|esr|~/public_html/cvs-fast-export/tests/*0|module||module U551d3c68|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O551d3c69|esr|~/public_html/cvs-fast-export/tests/*0|module||module U551d3c6a|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O553f6fb1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U553f6fb2|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O553f6fb3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U553f6fb4|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O553f72fa|esr|~/public_html/cvs-fast-export/tests/*0|module||module U553f72fb|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O553f72fc|esr|~/public_html/cvs-fast-export/tests/*0|module||module U553f72fd|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O55786a6e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55786a6f|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O55786a70|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55786a71|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O55786abd|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55786abe|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O55786abf|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55786ac0|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O55789196|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55789197|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O55789198|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55789199|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5578923b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5578923c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5578923d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5578923e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O55e3601b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e3601c|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O55e3601d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e3601e|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O55e362b5|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e362b6|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O55e362b7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e362b8|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O55e47bbd|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e47bbe|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O55e47bbf|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e47bc0|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O56053a55|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56053a56|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O56053a57|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56053a58|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5645dc50|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5645dc51|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5645dc52|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5645dc53|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5645e06f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5645e070|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O5645e071|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5645e072|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O564f1cb2|esr|~/public_html/cvs-fast-export/tests/*0|module||module U564f1cb3|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O564f1cb4|esr|~/public_html/cvs-fast-export/tests/*0|module||module U564f1cb5|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O56508c46|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56508c47|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O56508c48|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56508c49|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O56508e16|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56508e17|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O56508e18|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56508e19|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O56531c67|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56531c68|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O56531c69|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56531c6a|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O56531eea|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56531eeb|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O56531eec|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56531eed|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O565323ac|esr|~/public_html/cvs-fast-export/tests/*0|module||module U565323ad|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a O565323ae|esr|~/public_html/cvs-fast-export/tests/*0|module||module U565323af|esr|~/public_html/cvs-fast-export/tests/t9604.checkout|module|1.16|a cvs-fast-export-1.35/tests/exec.chk0000664000175000017500000000143312536065263015443 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 79 Now is the time for all good shellscripts to come to the iid of their systems. commit refs/heads/master mark :2 committer foo 101200 +0000 data 27 Committing executable file M 100755 :1 exec M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 9 exec 1.1 blob mark :3 data 46 The quick brown fox jumped over the lazy dog. commit refs/heads/master mark :4 committer foo 102400 +0000 data 31 Committing nonexecutable file. from :2 M 100644 :3 nonexec property cvs-revision 12 nonexec 1.1 reset refs/heads/master from :4 done cvs-fast-export-1.35/tests/.gitignore0000664000175000017500000000004212435607267016017 0ustar esresr*.pyc *.repo *.git *.git.fi *.map cvs-fast-export-1.35/tests/Makefile0000664000175000017500000001255212624620647015475 0ustar esresr# Test makefile for cvs-fast-export # Set OPTS to pass options to the cvs-fast-export instances. PATH := ${CURDIR}/..:${PATH} SHELL = sh # Do not introduce bashisms! CVS = cvs DIFF = diff -u -a CVS_FAST_EXPORT = ../cvs-fast-export $(OPTS) check: test .SUFFIXES: .tst .repo .testrepo .checkout .dot .fi ,v .tst.repo: python $< .repo.checkout: $(CVS) -d :local:${CURDIR}/$*.repo -Q checkout module && mv module $*.checkout .repo.dot: find $$*.dot .repo.fi: find $$*.dot .testrepo.checkout: $(CVS) -d :local:${CURDIR}/$*.testrepo -Q checkout module && mv module $*.checkout .testrepo.dot: find $$*.dot .testrepo.fi: find $$*.fi ,v.dot: $(CVS_FAST_EXPORT) -g $< >$*.dot test: s_regress m_regress r_regress i_regress f_regress t_regress c_regress @echo "No diff output is good news." rebuild: s_rebuild m_rebuild r_rebuild i_rebuild t_rebuild testlist: @grep '^##' *.tst *.py neutralize.map: @echo "$${USER} = foo -0500" >neutralize.map TESTLOADS := $(shell ls -1 *.tst | sed '/.tst/s///') TESTOPTS = -k kv -T -A neutralize.map --reposurgeon s_rebuild: neutralize.map @-for file in $(TESTLOADS); do \ echo "Remaking $${file}.chk"; \ $(MAKE) --quiet $${file}.repo; \ find $${file}.repo/module -name '*,v' | $(CVS_FAST_EXPORT) $(TESTOPTS) >$${file}.chk 2>&1; \ done; s_regress: neutralize.map @echo "== Dump regressions ==" @-for file in $(TESTLOADS); do \ echo -n " $${file} "; grep '##' $${file}.tst || echo ' ## (no description)'; \ $(MAKE) --quiet $${file}.repo; \ find $${file}.repo/module -name '*,v' | $(CVS_FAST_EXPORT) $(TESTOPTS) 2>&1 | $(DIFF) $${file}.chk -; \ done MASTERS := $(shell ls -1 *,v | sed '/,v/s///') m_rebuild: @-for file in $(MASTERS); do \ echo "Remaking $${file}.chk"; \ $(CVS_FAST_EXPORT) $${file},v >$${file}.chk 2>&1; \ done; m_regress: @echo "== Master-parsing regressions ==" @-for file in $(MASTERS); do \ echo -n " $${file}: "; sed <$${file},v -n -e '/^comment[ ]*@# \(.*\)@;/s//\1/p'; \ $(CVS_FAST_EXPORT) $${file},v 2>&1 | $(DIFF) $${file}.chk -; \ done INCREMENTAL=twobranch THRESHOLD=104000 i_rebuild: neutralize.map @-for file in $(INCREMENTAL); do \ echo "Remaking $${file}.inc-chk"; \ $(MAKE) --quiet $${file}.repo; \ find $${file}.repo/module -name '*,v' | $(CVS_FAST_EXPORT) -T -A neutralize.map -i $(THRESHOLD) >$${file}.inc-chk 2>&1; \ done; i_regress: neutralize.map @echo "== Incremental-dump regressions ==" @-for file in $(INCREMENTAL); do \ echo -n " $${file} "; grep '##' $${file}.tst || echo ' ## (no description)'; \ $(MAKE) --quiet $${file}.repo; \ find $${file}.repo/module -name '*,v' | $(CVS_FAST_EXPORT) -T -i $(THRESHOLD) -A neutralize.map 2>&1 | $(DIFF) $${file}.inc-chk -; \ done # Alas, this produces false failures on branchy repos because of some # wacky nondeterminism in the git tools. Thus we can only test # repeatably on linear ones. There's also some wacky non-idempotency # in how git handles timezones. LINEAR = basic expand hack1 hack2 hack3 longrev twotag f_regress: neutralize.map @echo "== Fast format compatibility ==" @-for file in $(LINEAR); do \ echo -n " $${file} "; grep '##' $${file}.tst || echo ' ## (no description)'; \ $(MAKE) --quiet $${file}.repo; \ find $${file}.repo/module -name '*,v' | $(CVS_FAST_EXPORT) -C -T -A neutralize.map 2>&1 | ./gitwash >canonical$$; \ find $${file}.repo/module -name '*,v' | $(CVS_FAST_EXPORT) -F -T -A neutralize.map 2>&1 | ./gitwash >fast$$; \ $(DIFF) canonical$$ fast$$; \ rm canonical$$ fast$$; \ done REDUCED=oldhead r_rebuild: neutralize.map @-for file in $(REDUCED); do \ echo "Remaking $${file}.chk"; \ find $${file}.testrepo/module -name '*,v' | $(CVS_FAST_EXPORT) $(TESTOPTS) >$${file}.chk 2>&1; \ done; r_regress: neutralize.map @echo "== Repo regressions ==" @-for repo in $(REDUCED); do \ echo -n " $${repo} "; grep '##' $${repo}.testrepo/README || echo ' ## (no description)'; \ find $${repo}.testrepo/module -name '*,v' | $(CVS_FAST_EXPORT) $(TESTOPTS) 2>&1 | $(DIFF) $${repo}.chk -; \ done PYTESTS=t9601 t9602 t9603 t9604 t9605 PATHSTRIP = sed -e '/\/.*tests/s//tests/' t_regress: @echo "== Pathological cases ==" @for pytest in $(PYTESTS); do \ echo -n " $${pytest} "; grep '##' $${pytest}.py || echo ' ## (no description)'; \ python $${pytest}.py 2>&1 | $(PATHSTRIP) | $(DIFF) $${pytest}.err -; \ done t_rebuild: @for pytest in $(PYTESTS); do \ echo "Remaking $${pytest}.err "; \ python $${pytest}.py 2>&1 | $(PATHSTRIP) >$${pytest}.err; \ done # Omitted: # branchy.repo - because of illegal tag # twotag.repo - because of inconsistent tagging # QED.testrepo - produces a branch cycle fatal error # t9601.testrepo - content mismatch expected # t9602.testrepo - manifest mismatch expected CT = at.repo basic.repo daughterbranch.repo exec.repo expand.repo \ hack[123].repo longrev.repo postbranch.repo tagbug.repo \ twobranch.repo CD = oldhead.testrepo t9603.testrepo t9604.testrepo t9605.testrepo \ vendor.testrepo c_regress: @echo "== Conversion checks ==" @for ct in $(CT); do $(MAKE) --quiet $$ct; cvsconvert -q -n $$ct; done @for cd in $(CD); do cvsconvert -q -n $$cd; done clean: rm -fr neutralize.map *.checkout *.repo *.pyc *.dot *.git *.git.fi cvs-fast-export-1.35/tests/hack1.chk0000664000175000017500000000215312536065263015506 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 35 Not an obfuscated C contest entry. blob mark :2 data 46 The quick brown fox jumped over the lazy dog. commit refs/heads/master mark :3 committer foo 101800 +0000 data 13 First commit M 100644 :1 bar.c M 100644 :2 foo.c M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 20 bar.c 1.1 foo.c 1.1 blob mark :4 data 49 The world will little note, nor long remember... commit refs/heads/master mark :5 committer foo 103000 +0000 data 14 Second commit from :3 M 100644 :4 bar.c property cvs-revision 10 bar.c 1.2 blob mark :6 data 47 One is dead, one is mad, and I have forgotten. blob mark :7 data 44 And now for something completely different. commit refs/heads/master mark :8 committer foo 104800 +0000 data 13 Third commit from :5 M 100644 :6 bar.c M 100644 :7 foo.c property cvs-revision 20 bar.c 1.3 foo.c 1.2 reset refs/heads/master from :8 done cvs-fast-export-1.35/tests/exec.repo/0000775000175000017500000000000012621357731015716 5ustar esresrcvs-fast-export-1.35/tests/exec.repo/module/0000775000175000017500000000000012621357736017210 5ustar esresrcvs-fast-export-1.35/tests/exec.repo/module/nonexec,v0000444000175000017500000000041212621357736021025 0ustar esresrhead 1.1; access; symbols; locks; strict; comment @# @; 1.1 date 2015.11.13.13.04.30; author esr; state Exp; branches; next ; commitid 1005645DFDE0E02C6EC; desc @@ 1.1 log @Committing nonexecutable file. @ text @The quick brown fox jumped over the lazy dog. @ cvs-fast-export-1.35/tests/exec.repo/module/exec,v0000555000175000017500000000044712621357733020322 0ustar esresrhead 1.1; access; symbols; locks; strict; comment @# @; 1.1 date 2015.11.13.13.04.27; author esr; state Exp; branches; next ; commitid 1005645DFDB0DFE53F9; desc @@ 1.1 log @Committing executable file @ text @Now is the time for all good shellscripts to come to the iid of their systems. @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/0000775000175000017500000000000012624160405017046 5ustar esresrcvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#postadmin0000664000175000017500000000171212621357731021120 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/cvswrappers0000444000175000017500000000113212621357731021350 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/exec.repo/CVSROOT/loginfo,v0000444000175000017500000000415512621357731020700 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#checkoutlist0000664000175000017500000000075712621357731021633 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#cvswrappers0000664000175000017500000000113212621357731021475 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/exec.repo/CVSROOT/val-tags0000666000175000017500000000000012621357731020506 0ustar esresrcvs-fast-export-1.35/tests/exec.repo/CVSROOT/postadmin0000444000175000017500000000171212621357731020773 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#rcsinfo0000664000175000017500000000121112621357731020557 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/verifymsg,v0000444000175000017500000000334512621357731021256 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/checkoutlist0000444000175000017500000000075712621357731021506 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/exec.repo/CVSROOT/commitinfo,v0000444000175000017500000000275412621357731021412 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#postwatch0000664000175000017500000000175512621357731021145 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/posttag,v0000444000175000017500000000420612621357731020721 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#preproxy0000664000175000017500000000234312621357731021013 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/taginfo0000444000175000017500000000437712621357731020436 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#postproxy0000664000175000017500000000220112621357731021203 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/verifymsg0000444000175000017500000000277112621357731021016 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/exec.repo/CVSROOT/history0000666000175000017500000000034712621357736020514 0ustar esresrO5645dfd9|esr|~/public_html/cvs-fast-export/tests/*0|module||module A5645dfdb|esr|~/public_html/cvs-fast-export/tests/exec.checkout|module|1.1|exec A5645dfde|esr|~/public_html/cvs-fast-export/tests/exec.checkout|module|1.1|nonexec cvs-fast-export-1.35/tests/exec.repo/CVSROOT/postwatch,v0000444000175000017500000000233112621357731021251 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/postadmin,v0000444000175000017500000000226612621357731021242 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/config0000444000175000017500000001004712621357731020243 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/exec.repo/CVSROOT/config,v0000444000175000017500000001042312621357731020503 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/rcsinfo,v0000444000175000017500000000156512621357731020710 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/loginfo0000444000175000017500000000360112621357731020431 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/exec.repo/CVSROOT/commitinfo0000444000175000017500000000240012621357731021134 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/posttag0000444000175000017500000000363212621357731020461 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/postproxy,v0000444000175000017500000000255512621357731021334 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/postproxy0000444000175000017500000000220112621357731021056 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/rcsinfo0000444000175000017500000000121112621357731020432 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/preproxy0000444000175000017500000000234312621357731020666 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/modules,v0000444000175000017500000000244512621357731020713 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#config0000664000175000017500000001004712621357731020370 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/exec.repo/CVSROOT/notify0000444000175000017500000000163412621357731020310 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/exec.repo/CVSROOT/checkoutlist,v0000444000175000017500000000133312621357731021737 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#commitinfo0000664000175000017500000000240012621357731021261 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/Emptydir/0000775000175000017500000000000012621357731020652 5ustar esresrcvs-fast-export-1.35/tests/exec.repo/CVSROOT/notify,v0000444000175000017500000000221012621357731020541 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#taginfo0000664000175000017500000000437712621357731020563 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#verifymsg0000664000175000017500000000277112621357731021143 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/exec.repo/CVSROOT/postwatch0000444000175000017500000000175512621357731021020 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/cvswrappers,v0000444000175000017500000000150612621357731021617 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/preproxy,v0000444000175000017500000000271712621357731021135 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/taginfo,v0000444000175000017500000000475312621357731020676 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.25; author esr; state Exp; branches; next ; commitid 1005645DFD90DF61A5F; desc @@ 1.1 log @initial checkin@ text @# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#notify0000664000175000017500000000163412621357731020435 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/exec.repo/CVSROOT/modules0000444000175000017500000000207112621357731020444 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#posttag0000664000175000017500000000363212621357731020606 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#modules0000664000175000017500000000207112621357731020571 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/exec.repo/CVSROOT/.#loginfo0000664000175000017500000000360112621357731020556 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/testlifter.pyc0000644000175000017500000005020712621357646016737 0ustar esresr Tc@s)dZddlZddlZddlZddlZddlZddlZdZdZdZ dZ dZ ej dej dejd d d Zd d Zd ddYZdddYZdefdYZdddYZdZdZdZdddYZdS(s% Test framework for cvs-fast-export. iNiiiiitPATHs..tcCs|rd|}ntjjtjd}ttkrXtjjd|||fnyt j |dt }|dkrtj jd| ||ftj dn-|dkrtj jd|||ftSWn:ttfk r}tj jd||||ftSXt S( s4Either execute a command or raise a fatal exception.t is%s: executing '%s'%s tshells$%s: %s was terminated by signal %d. is%s: %s returned %d. s!%s: execution of %s%s failed: %s (tostpathtbasenametsystargvtverbosetDEBUG_COMMANDStstdouttwritet subprocesstcalltTruetstderrtexittFalsetOSErrortIOError(tdcmdtlegendtcallertretcodete((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyt noisy_runs"      cCs |rd|}ntjjtjd}ttkrXtjjd|||fny*t j |dt dt j j dSWnt jk r}|jdkrtjjd||j fn/|jdkrtjjd||jfntjdnXd S( s7Either execute a command and capture its output or die.Ris%s: executing '%s'%s RR s&%s: child was terminated by signal %d.s%s: child returned %d.iN(RRRRRR R R R R tPopenRtPIPEt communicatetCalledProcessErrort returncodeRR(RRRR((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytcapture_or_die#s   *! tdirectory_contextcBs#eZdZdZdZRS(cCs||_d|_dS(N(ttargettNonetsource(tselfR"((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyt__init__4s cCsmttkr2tjjdtjj|jntj |_ tjj |jritj |jndS(NsIn %s: ( R R RR R RRtrelpathR"tgetcwdR$tisdirtchdir(R%((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyt __enter__7s  &cCstj|jdS(N(RR*R$(R%textypet value_unusedttraceback_unused((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyt__exit__=s(t__name__t __module__R&R+R/(((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR!3s  t RCSRepositorycBseZdZdZdZdZdZdZdZdZ dZ d Z d d Z d d Z d ZRS(sAn RCS file collection.cCsC||_t|_tjjtj|jd|_g|_dS(Ntmodule( tnameRtretainRRtjoinR(t directoryt conversions(R%R4((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR&Bs  $cCs6t|s2|js"|jntjdndS(Ni(RR5tcleanupRR(R%tcmd((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytrun_with_cleanupHs   cGslttkrd}nd}td|j||dj|f rh|j rh|jtjdndS(s.Execute a RCS command in context of this repo.s-qRscd %s && %s %s %sRiN( R t DEBUG_VCSRR7R6R5R9RR(R%R:targstmute((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytdoMs   3 cCs|jdj|jdS(sInitialize the repository.srm -fr {0} && mkdir -p {0}N(R;tformatR7(R%((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytinitVsc Cshttkr)tjjd||fnt|j*t|d}|j|WdQXWdQXdS(s&Create file content in the repository.s%s <- %stwN(R R RR R R!R7topen(R%tfntcontenttfp((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR Ys  cCs|jddd|dS(s)Add a file to the version-controlled set.trcss-t-s-iN(R?(R%tfilename((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytadd`scCs|jdd|d|dS(s!Create a tag on a specified file.RGs-nt:N(R?(R%RHR4((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyttagcscCs|jdd|dS(s1Check out a writeable copy of the specified file.tcos-lN(R?(R%RH((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytcheckoutfscCs|jdd||fdS(s'Check in changes to the specified file.tcis -m'%s' %sN(R?(R%RHtmessage((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytcheckinisRcCs8dttd}|jdj|j|||dS(Ns-v is6find -L {0} -name "*,v" | cvs-fast-export {1} {2} >{3}(R t DEBUG_LIFTERR;R@R7(R%R3tgitdirtoutfilet more_optstvopt((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytstreamlscCsd|}|j|||||jdj||jdj|j|||jj||js~tj|ndS(sConvert the repo.s %s.git.fis/rm -fr {0} && mkdir {0} && git init --quiet {0}sMcat {2} | (cd {1} >/dev/null; git fast-import --quiet --done && git checkout)N( RVR;R@R7R8tappendR5Rtremove(R%R3RRRTt streamfile((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytconvertps  cCs9|js5|jr5tjddj|jq5ndS(s$Clean up the repository conversions.s rm -fr %sRN(R5R8RtsystemR6(R%((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR9ys  (R0R1t__doc__R&R;R?RAR RIRKRMRPRVRZR9(((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR2@s          t CVSRepositorycBsAeZdZdZdZdZddZdZRS(cCsGtj||tjjtj|j|_g|_g|_ dS(N( R2R&RRR6R(R4R7t checkoutsR8(R%R4((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR&s! cGsEttkrd}nd}|jd||jdj|fdS(s.Execute a CVS command in context of this repo.s-QRscvs %s -d:local:%s %sRN(R R<R;R7R6(R%R:R>((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR?s    cCstj||jddS(NRA(R2RAR?(R%((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyRAs cCsLtjj|j|}ttkr;tjjd|ntj |dS(s-Create an empty module with a specified name.sCreating module %s N( RRR6R7R R RR R tmkdir(R%tmnameR3((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR3s cCs'|jjt||||jdS(sCreate a checkout of this repo.i(R^RWt CVSCheckout(R%R3RM((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyRMscCs;|js7tj|x|jD]}|jq WndS(s-Clean up the repository checkout directories.N(R5R2R9R^(R%RM((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR9s  N( R0R1R&R?RAR3R#RMR9(((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR]s     RacBseZdZddZdZdZdZdZdZ ddZ d Z d Z d Z d Zd ZdZdZRS(s-proxycCs||_|pd|_|p!||_d|_tjj|jjtj ds|jj t j |_yt j|jWntk rnXtj|jtj|jj|jtj |jtj|jtj d|jj t j 7_ |jjt j 7_n|jjd|j|rdtjj|rNt j|ntj|j|ntjjtj|j|_dS(NR3tCVSROOTRL(trepoR3RMR#tproxyRRtexistsR7tsepR4Rat PROXYSUFFIXtshutiltrmtreeRR_tsymlinkR?trenameR6R((R%RcR3RM((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR&s*  # 'c Gs:t|j%t|jj|gt|WdQXdS(s,Execute a command in the checkout directory.N(R!R7tapplyRcR?tlist(R%R:R=((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR?scCs*t|j|jj|WdQXdS(s,Execute a command in the checkout directory.N(R!R7RcR;(R%R:((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytoutdoscGs!t|jdgt|dS(s)Add a file to the version-controlled set.RIN(RlR?Rm(R%t filenames((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyRIscGs$t|jddgt|dS(s.Remove a file from the version-controlled set.RXs-fN(RlR?Rm(R%tfiles((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyRXscCsH|jd|d|jdd|dd||jdd|dS(sCreate a new branch.RKt_roots-rs-btupN(R?(R%t branchname((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytbranchstHEADcCs6|jdd|dkr2|jdd|ndS(sSwitch to an existing branch.Rrs-ARus-rN(R?(R%Rt((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytswitchs cCs|jd|dS(s Create a tag.RKN(R?(R%R4((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyRKscCs;|jdd||jdd|jdd|dS(sMerge a branch to trunk.RKtmerge_Rrs-As-jN(R?(R%Rs((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytmergescCs+tjdt|jdd|gdS(s!Commit changes to the repository.itcommits-m '%s'N(ttimetsleepRlR?(R%RO((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyRys c Cshttkr)tjjd||fnt|j*t|d}|j|WdQXWdQXdS(s&Create file content in the repository.s%s <- %sRBN(R R RR R R!R7RC(R%RDRERF((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR s  c Cshttkr)tjjd||fnt|j*t|d}|j|WdQXWdQXdS(s)Append to file content in the repository.s %s <-| %staN(R R RR R R!R7RC(R%RDRERF((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyRWs  cCs2|dkrd}n|jdddd|dS(s4Update the content to the specified revision or tag.tmasterRuRrs-kbs-As-rN(R?(R%trev((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytupdates  cCs]|jr1tjj|jr1tj|jntjj|jrYtj|jndS(s Clean up the checkout directory.N(RdRRReRhRiR7(R%((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR9sN(R0R1RgR#R&R?RnRIRXRtRvRKRxRyR RWRR9(((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyRas             cCstjj|s*tjjd|dStjj|sTtjjd|dStj||dtstjjd||fndS(s&Complain if two files aren't identicals%s does not exist in CVS. Ns)%s does not exist in the git conversion. tshallows%s and %s are not the same. ( RRReRRR tfilecmptcmpR(R|tb((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyt expect_samescCstjj|s*tjjd|dStjj|sTtjjd|dStj||dtrtjjd||fndS(s/Rejoice if two files are unexpectedly identicals%s does not exist in CVS. Ns)%s does not exist in the git conversion. Rs%%s and %s are unexpectedly the same. ( RRReRRR RRR(R|R((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytexpect_differentscCs"|jdp!|jddkS(s8Is this a synthetic branch generated by cvs-fast-export?simport-tUNNAMEDi(t startswithtfind(R4((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyt junkbranchstConvertComparisoncBsSeZdZdZddddedZedZdZ dZ dZ RS( s9Compare a CVS repository and its conversion for equality.s-gitRcCsQ||_t|r|n|d|_|jj||r@|n|d|_|pY||_||_|jjd|tjd|t |tjngt dj D]%}|dkrt | r|^q|_ gt dj D] }|^q|_WdQX|j jd|j krM|j jddg|j |_ ndS( Ns .testrepos .checkoutR3RTs git branch -lt*s git tag -lR}(tstemR]RcRMR3t showdiffsRZRtSUFFIXR!R tsplitRtbranchesttagstsortRX(R%RRcRMR3toptionsRR4((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR&s    A. c sd|j||f}||jkrY||jkrY|rUtjj|d|ntSd}|jj|t |jt j 2t d|s|j jtjdnWdQXt||jddd }g|D]!}|t|jdd^qt||jt j dd }g|D]$}|t|jt j d^q2jjt} kr_|rVtjj|d |jrVtjj|d tgD]} | kr| ^qfd D} | rtjj|d| nfdD} | rStjj|d| qSqVnt} ng|D]D} | jdt j d|krf| | jdt j df^qf}x|D]\}}tj||dtst} |r6tjjd|j||||f|jr3tjd||fq3q6qqW| r|s]tjj|dqttkrtjj|dqn3| s| rttkrtjj|dqn| S(sATest to see if a tag or branch checkout has the expected content.s %s %s %s: s%s unexpectedly missing. cssxtj|D]u\}}}xc|D][}tjj||}||jtjkr&|jd r&|jd r&|Vq&q&WqWdS(Ns .cvsignores .gitignore(RtwalkRR6RRftendswith(tmydirtignoretroottdirsRptfileR((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytftw1s  8sgit checkout --quiet %siNs .checkoutRtCVSs.gitsfile manifests don't match. s common: %d cs"h|]}|kr|qS(((t.0tf(tcvsfiles(s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pys Ns sgitspace only: %s cs"h|]}|kr|qS(((RR(tgitfiles(s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pys Rs s CVS only: %s s .checkout/t/Rs#%s %s %s: %s and %s are different. s diff -u %s %sstrees unexpectedly match strees matched as expected strees diverged as expected (RRRRRR RRMRR!RRRRcR9RRmtlenRRRtreplaceRRRR[R t DEBUG_STEPS(R%Rtreftsuccess_expectedtpreambleRtcvspathsRDtgitpathstsuccessRt gitspace_onlytcvs_onlyRtcommonR|R((RRs9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyt compare_tree*sf  ."1    .  N& $ cCsxotjD]d}|jdr^tdkrntjjdtjj tj d|fqnq tj d|q Wx!tj D]}tj d|q|WdS(sCCheck all named references - branches and tags - expecting matches.sUNNAMED-BRANCHis%s: skipping %s RtRKN( tccRRR RRR RRRRRR(R%RtRK((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytcheckallis 3cCsEt|}|j|jk}|sAtjj|dndS(Ns return was not as expected (R tstripRRR (R%R:texpectedtseent succeeded((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pytcommand_returnsss cCs(|jjtj|jtjdS(N(RMR9RhRiRRR(R%((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyR9xs N( R0R1R\RR#RR&RRRRR9(((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyRs ? (((((R\RRRhR RzRRR R<RQR tputenvtgetenvtpathsepRR R!R2R]RaRRRR(((s9/home/esr/public_html/cvs-fast-export/tests/testlifter.pyts"H$   ?#[ cvs-fast-export-1.35/tests/testlifter.py0000755000175000017500000004017012446601276016571 0ustar esresr""" Test framework for cvs-fast-export. """ import sys, os, shutil, subprocess, time, filecmp DEBUG_STEPS = 1 DEBUG_COMMANDS = 2 DEBUG_VCS = 3 DEBUG_LIFTER = 4 verbose = 0 os.putenv("PATH", os.getenv("PATH") + os.pathsep + "..") def noisy_run(dcmd, legend=""): "Either execute a command or raise a fatal exception." if legend: legend = " " + legend caller = os.path.basename(sys.argv[0]) if verbose >= DEBUG_COMMANDS: sys.stdout.write("%s: executing '%s'%s\n" % (caller, dcmd, legend)) try: retcode = subprocess.call(dcmd, shell=True) if retcode < 0: sys.stderr.write("%s: %s was terminated by signal %d.\n" % (-caller, dcmd, retcode)) sys.exit(1) elif retcode != 0: sys.stderr.write("%s: %s returned %d.\n" % (caller, dcmd, retcode)) return False except (OSError, IOError) as e: sys.stderr.write("%s: execution of %s%s failed: %s\n" % (caller, dcmd, legend, e)) return False return True def capture_or_die(dcmd, legend=""): "Either execute a command and capture its output or die." if legend: legend = " " + legend caller = os.path.basename(sys.argv[0]) if verbose >= DEBUG_COMMANDS: sys.stdout.write("%s: executing '%s'%s\n" % (caller, dcmd, legend)) try: return subprocess.Popen(dcmd, shell=True, stdout=subprocess.PIPE).communicate()[0] except subprocess.CalledProcessError as e: if e.returncode < 0: sys.stderr.write("%s: child was terminated by signal %d." % (caller, -e.returncode)) elif e.returncode != 0: sys.stderr.write("%s: child returned %d." % (caller, e.returncode)) sys.exit(1) class directory_context: def __init__(self, target): self.target = target self.source = None def __enter__(self): if verbose >= DEBUG_COMMANDS: sys.stdout.write("In %s: " % os.path.relpath(self.target)) self.source = os.getcwd() if os.path.isdir(self.target): os.chdir(self.target) def __exit__(self, extype, value_unused, traceback_unused): os.chdir(self.source) class RCSRepository: "An RCS file collection." def __init__(self, name): self.name = name self.retain = False # For convenience, emulate the module structure of a CVS repository self.directory = os.path.join(os.getcwd(), self.name, "module") self.conversions = [] def run_with_cleanup(self, cmd): if not noisy_run(cmd): if not self.retain: self.cleanup() sys.exit(1) def do(self, cmd, *args): "Execute a RCS command in context of this repo." if verbose < DEBUG_VCS: mute = '-q' else: mute = "" if not noisy_run("cd %s && %s %s %s" % (self.directory, cmd, mute, " ".join(args))) and not self.retain: self.cleanup() sys.exit(1) def init(self): "Initialize the repository." self.run_with_cleanup("rm -fr {0} && mkdir -p {0}".format(self.directory)) def write(self, fn, content): "Create file content in the repository." if verbose >= DEBUG_COMMANDS: sys.stdout.write("%s <- %s" % (fn, content)) with directory_context(self.directory): with open(fn, "w") as fp: fp.write(content) def add(self, filename): "Add a file to the version-controlled set." self.do("rcs", "-t-", "-i", filename) def tag(self, filename, name): "Create a tag on a specified file." self.do("rcs", "-n" + name + ":", filename) def checkout(self, filename): "Check out a writeable copy of the specified file." self.do("co", "-l", filename) def checkin(self, filename, message): "Check in changes to the specified file." self.do("ci", "-m'%s' %s" % (message, filename)) def stream(self, module, gitdir, outfile, more_opts=''): vopt = "-v " * (verbose - DEBUG_LIFTER + 1) # The -L is necessary to handle proxied directories. self.run_with_cleanup('find -L {0} -name "*,v" | cvs-fast-export {1} {2} >{3}'.format(self.directory, vopt, more_opts, outfile)) def convert(self, module, gitdir, more_opts=''): "Convert the repo." streamfile = "%s.git.fi" % module self.stream(module, gitdir, streamfile, more_opts) self.run_with_cleanup("rm -fr {0} && mkdir {0} && git init --quiet {0}".format(gitdir)) self.run_with_cleanup('cat {2} | (cd {1} >/dev/null; git fast-import --quiet --done && git checkout)'.format(self.directory, gitdir, streamfile)) self.conversions.append(gitdir) if not self.retain: os.remove(streamfile) def cleanup(self): "Clean up the repository conversions." if not self.retain: if self.conversions: os.system("rm -fr %s" % " ".join(self.conversions)) class CVSRepository(RCSRepository): def __init__(self, name): RCSRepository.__init__(self, name) self.directory = os.path.join(os.getcwd(), self.name) self.checkouts = [] self.conversions = [] def do(self, *cmd): "Execute a CVS command in context of this repo." if verbose < DEBUG_VCS: mute = '-Q' else: mute = "" self.run_with_cleanup("cvs %s -d:local:%s %s" % (mute, self.directory, " ".join(cmd))) def init(self): RCSRepository.init(self) self.do("init") def module(self, mname): "Create an empty module with a specified name." module = os.path.join(self.directory, mname) if verbose >= DEBUG_COMMANDS: sys.stdout.write("Creating module %s\n" % module) os.mkdir(module) def checkout(self, module, checkout=None): "Create a checkout of this repo." self.checkouts.append(CVSCheckout(self, module, checkout)) return self.checkouts[-1] def cleanup(self): "Clean up the repository checkout directories." if not self.retain: RCSRepository.cleanup(self) for checkout in self.checkouts: checkout.cleanup() class CVSCheckout: PROXYSUFFIX = "-proxy" def __init__(self, repo, module, checkout=None): self.repo = repo self.module = module or "module" self.checkout = checkout or module # Hack to get around repositories that don't have a CVSROOT & module self.proxy = None if not os.path.exists(self.repo.directory + os.sep + "CVSROOT"): self.proxy = self.repo.name + CVSCheckout.PROXYSUFFIX try: shutil.rmtree(self.proxy) except OSError: pass os.mkdir(self.proxy) os.symlink(self.repo.directory, self.proxy + os.sep + self.module) os.mkdir(self.proxy + os.sep + "CVSROOT") self.repo.name += CVSCheckout.PROXYSUFFIX self.repo.directory += CVSCheckout.PROXYSUFFIX self.repo.do("co", self.module) if checkout: if os.path.exists(checkout): shutil.rmtree(checkout) os.rename(self.module, checkout) self.directory = os.path.join(os.getcwd(), self.checkout) def do(self, cmd, *args): "Execute a command in the checkout directory." with directory_context(self.directory): apply(self.repo.do, [cmd] + list(args)) def outdo(self, cmd): "Execute a command in the checkout directory." with directory_context(self.directory): self.repo.run_with_cleanup(cmd) def add(self, *filenames): "Add a file to the version-controlled set." apply(self.do, ["add"] + list(filenames)) def remove(self, *files): "Remove a file from the version-controlled set." apply(self.do, ["remove", "-f"] + list(files)) def branch(self, branchname): "Create a new branch." self.do("tag", branchname + "_root") self.do("tag", "-r", branchname + "_root", "-b", branchname) self.do("up", "-r", branchname) def switch(self, branch="HEAD"): "Switch to an existing branch." self.do("up", "-A") if branch != "HEAD": self.do("up", "-r", branch) def tag(self, name): "Create a tag." self.do("tag", name) def merge(self, branchname): "Merge a branch to trunk." # See https://kb.wisc.edu/middleware/page.php?id=4087 self.do("tag", "merge_" + branchname) self.do("up", "-A") self.do("up", "-j", branchname) def commit(self, message): "Commit changes to the repository." # The CVS tools weren't designed to be called in rapid-fire # succession by scripts; they have race conditions. This # presents misbehavior. time.sleep(2) apply(self.do, ["commit", "-m '%s'" % message]) def write(self, fn, content): "Create file content in the repository." if verbose >= DEBUG_COMMANDS: sys.stdout.write("%s <- %s" % (fn, content)) with directory_context(self.directory): with open(fn, "w") as fp: fp.write(content) def append(self, fn, content): "Append to file content in the repository." if verbose >= DEBUG_COMMANDS: sys.stdout.write("%s <-| %s" % (fn, content)) with directory_context(self.directory): with open(fn, "a") as fp: fp.write(content) def update(self, rev): "Update the content to the specified revision or tag." if rev == 'master': rev = "HEAD" self.do("up", "-kb", "-A", "-r", rev) def cleanup(self): "Clean up the checkout directory." if self.proxy and os.path.exists(self.proxy): shutil.rmtree(self.proxy) if os.path.exists(self.directory): shutil.rmtree(self.directory) def expect_same(a, b): "Complain if two files aren't identical" if not os.path.exists(a): sys.stderr.write("%s does not exist in CVS.\n" % a) return if not os.path.exists(b): sys.stderr.write("%s does not exist in the git conversion.\n" % b) return if not filecmp.cmp(a, b, shallow=False): sys.stderr.write("%s and %s are not the same.\n" % (a, b)) def expect_different(a, b): "Rejoice if two files are unexpectedly identical" if not os.path.exists(a): sys.stderr.write("%s does not exist in CVS.\n" % a) return if not os.path.exists(b): sys.stderr.write("%s does not exist in the git conversion.\n" % b) return if filecmp.cmp(a, b, shallow=False): sys.stderr.write("%s and %s are unexpectedly the same.\n" % (a, b)) def junkbranch(name): "Is this a synthetic branch generated by cvs-fast-export?" return name.startswith("import-") or name.find("UNNAMED") != -1 class ConvertComparison: "Compare a CVS repository and its conversion for equality." # Needs to stay synchronized with reposurgeon's generic conversion makefile SUFFIX = "-git" def __init__(self, stem, repo=None, checkout=None, module=None, options="", showdiffs=False): self.stem = stem self.repo = CVSRepository(repo if repo else stem + ".testrepo") self.checkout = self.repo.checkout(module, checkout if checkout else stem + ".checkout") self.module = module or stem self.showdiffs = showdiffs self.repo.convert("module", stem + ConvertComparison.SUFFIX, more_opts=options) with directory_context(stem + ConvertComparison.SUFFIX): self.branches = [name for name in capture_or_die("git branch -l").split() if name != '*' and not junkbranch(name)] self.tags = [name for name in capture_or_die("git tag -l").split()] self.branches.sort() if "master" in self.branches: self.branches.remove("master") self.branches = ["master"] + self.branches def compare_tree(self, legend, ref, success_expected=True): "Test to see if a tag or branch checkout has the expected content." preamble = "%s %s %s: " % (self.stem, legend, ref) if ref not in self.tags and ref not in self.branches: if success_expected: sys.stderr.write(preamble + "%s unexpectedly missing.\n" % ref) return False def ftw(mydir, ignore): for root, dirs, files in os.walk(mydir): for file in files: path = os.path.join(root, file) if ignore not in path.split(os.sep) and not path.endswith(".cvsignore") and not path.endswith(".gitignore"): yield path self.checkout.update(ref) with directory_context(self.stem + ConvertComparison.SUFFIX): if not noisy_run("git checkout --quiet %s" % ref): self.repo.cleanup() sys.exit(1) if 0: with directory_context(self.stem + ConvertComparison.SUFFIX): if not noisy_run("git log --format=%H -1"): self.repo.cleanup() sys.exit(1) cvspaths = list(ftw(self.stem + ".checkout", ignore="CVS")) cvsfiles = [fn[len(self.stem+".checkout")+1:] for fn in cvspaths] gitpaths = list(ftw(self.stem + ConvertComparison.SUFFIX, ignore=".git")) gitfiles = [fn[len(self.stem+ConvertComparison.SUFFIX)+1:] for fn in gitpaths] cvsfiles.sort() gitfiles.sort() success = True if cvsfiles != gitfiles: if success_expected: sys.stderr.write(preamble + "file manifests don't match.\n") if self.showdiffs: sys.stderr.write(preamble + "common: %d\n" % len([f for f in gitfiles if f in cvsfiles])) gitspace_only = {f for f in gitfiles if not f in cvsfiles} if gitspace_only: sys.stderr.write(preamble + "gitspace only: %s\n" % gitspace_only) cvs_only = {f for f in cvsfiles if not f in gitfiles} if cvs_only: sys.stderr.write(preamble + "CVS only: %s\n" % cvs_only) success = False common = [(path, path.replace(".checkout/", ConvertComparison.SUFFIX + "/")) for path in cvspaths if path.replace(".checkout/", ConvertComparison.SUFFIX + "/") in gitpaths] for (a, b) in common: if not filecmp.cmp(a, b, shallow=False): success = False if success_expected: sys.stderr.write("%s %s %s: %s and %s are different.\n" % (self.stem, legend, ref, a, b)) if self.showdiffs: os.system("diff -u %s %s" % (a, b)) if success: if not success_expected: sys.stderr.write(preamble + "trees unexpectedly match\n") elif verbose >= DEBUG_STEPS: sys.stderr.write(preamble + "trees matched as expected\n") elif not success: if not success_expected and verbose >= DEBUG_STEPS: sys.stderr.write(preamble + "trees diverged as expected\n") return success def checkall(self): "Check all named references - branches and tags - expecting matches." for branch in cc.branches: if branch.endswith("UNNAMED-BRANCH"): if verbose > 0: sys.stderr.write("%s: skipping %s\n" % (os.path.basename(sys.argv[0]), branch)) else: cc.compare_tree("branch", branch) for tag in cc.tags: cc.compare_tree("tag", tag) def command_returns(self, cmd, expected): seen = capture_or_die(cmd) succeeded = (seen.strip() == expected.strip()) if not succeeded: sys.stderr.write(cmd + " return was not as expected\n") def cleanup(self): self.checkout.cleanup() shutil.rmtree(self.stem+ConvertComparison.SUFFIX) # End. cvs-fast-export-1.35/tests/missingbranch.chk0000664000175000017500000000322212624620213017332 0ustar esresrcvs-fast-export: warning - putting missingbranch,v rev 1.4.0.2 on unnamed branch master-UNNAMED-BRANCH off master cvs-fast-export: warning - putting missingbranch,v rev 1.2.0.2 on unnamed branch master-UNNAMED-BRANCH off master cvs-fast-export: missingbranch 1.2.2.1: CSRG-last points at commit with no gitspace link. blob mark :1 data 37 content for 1.1 a1 1 content for 1.4 commit refs/heads/master mark :2 committer mycroft 744702676 +0000 data 33 89a25a6875ea64d374c9fe96cf975445 M 100644 :1 missingbranch M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end blob mark :3 data 37 content for 1.2 a1 1 content for 1.4 commit refs/heads/master mark :4 committer cgd 752816103 +0000 data 33 e5c4dd39ec32f6d824ebb8fbc925873d from :2 M 100644 :3 missingbranch blob mark :5 data 37 content for 1.3 a1 1 content for 1.4 commit refs/heads/master mark :6 committer cgd 752818136 +0000 data 33 d071e58f46e8bafc924f2e8585d485bf from :4 M 100644 :5 missingbranch blob mark :7 data 26 d1 1 a1 1 content for 1.4 commit refs/heads/master mark :8 committer cgd 759400619 +0000 data 33 d3f06456d1d40470f261651166f36347 from :6 M 100644 :7 missingbranch blob mark :9 data 41 content for 1.4.2.1 a1 1 content for 1.4 commit refs/heads/master-UNNAMED-BRANCH mark :10 committer mycroft 776874476 +0000 data 33 eac3a5a5fe408f0129d454a84fc3fdb5 from :8 M 100644 :9 missingbranch reset refs/heads/master from :8 reset refs/heads/master-UNNAMED-BRANCH from :10 done cvs-fast-export-1.35/tests/longrev.chk0000664000175000017500000000645012536065263016177 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 25 A test of multiple tags. commit refs/heads/master mark :2 committer foo 101200 +0000 data 26 *** empty log message *** M 100644 :1 README M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 11 README 1.1 reset refs/tags/branch1_root from :2 blob mark :3 data 7 branch1 commit refs/heads/branch1 mark :4 committer foo 102400 +0000 data 20 Updated for branch1 from :2 M 100644 :3 README property cvs-revision 15 README 1.1.2.1 reset refs/tags/branch2_root from :4 blob mark :5 data 7 branch2 commit refs/heads/branch2 mark :6 committer foo 103600 +0000 data 20 Updated for branch2 from :4 M 100644 :5 README property cvs-revision 19 README 1.1.2.1.2.1 reset refs/tags/branch3_root from :6 blob mark :7 data 7 branch3 commit refs/heads/branch3 mark :8 committer foo 104800 +0000 data 20 Updated for branch3 from :6 M 100644 :7 README property cvs-revision 23 README 1.1.2.1.2.1.2.1 reset refs/tags/branch4_root from :8 blob mark :9 data 7 branch4 commit refs/heads/branch4 mark :10 committer foo 106000 +0000 data 20 Updated for branch4 from :8 M 100644 :9 README property cvs-revision 27 README 1.1.2.1.2.1.2.1.2.1 reset refs/tags/branch5_root from :10 blob mark :11 data 7 branch5 commit refs/heads/branch5 mark :12 committer foo 107200 +0000 data 20 Updated for branch5 from :10 M 100644 :11 README property cvs-revision 31 README 1.1.2.1.2.1.2.1.2.1.2.1 reset refs/tags/branch6_root from :12 blob mark :13 data 7 branch6 commit refs/heads/branch6 mark :14 committer foo 108400 +0000 data 20 Updated for branch6 from :12 M 100644 :13 README property cvs-revision 35 README 1.1.2.1.2.1.2.1.2.1.2.1.2.1 reset refs/tags/branch7_root from :14 blob mark :15 data 7 branch7 commit refs/heads/branch7 mark :16 committer foo 109600 +0000 data 20 Updated for branch7 from :14 M 100644 :15 README property cvs-revision 39 README 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 reset refs/tags/branch8_root from :16 blob mark :17 data 7 branch8 commit refs/heads/branch8 mark :18 committer foo 110800 +0000 data 20 Updated for branch8 from :16 M 100644 :17 README property cvs-revision 43 README 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 reset refs/tags/branch9_root from :18 blob mark :19 data 7 branch9 commit refs/heads/branch9 mark :20 committer foo 112000 +0000 data 20 Updated for branch9 from :18 M 100644 :19 README property cvs-revision 47 README 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 reset refs/tags/branch10_root from :20 blob mark :21 data 8 branch10 commit refs/heads/branch10 mark :22 committer foo 113200 +0000 data 21 Updated for branch10 from :20 M 100644 :21 README property cvs-revision 51 README 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 reset refs/heads/master from :2 reset refs/heads/branch1 from :4 reset refs/heads/branch2 from :6 reset refs/heads/branch3 from :8 reset refs/heads/branch4 from :10 reset refs/heads/branch5 from :12 reset refs/heads/branch6 from :14 reset refs/heads/branch7 from :16 reset refs/heads/branch8 from :18 reset refs/heads/branch9 from :20 reset refs/heads/branch10 from :22 done cvs-fast-export-1.35/tests/hack3.tst0000664000175000017500000000173212446600037015551 0ustar esresr#!/usr/bin/env python ## Third example from the Hacking Guide import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.CVSRepository("hack3.repo") repo.init() repo.module("module") co = repo.checkout("module", "hack3.checkout") co.write("foo.c", "The quick brown fox jumped over the lazy dog.\n") co.add("foo.c") co.write("bar.c", "Not an obfuscated C contest entry.\n") co.add("bar.c") co.commit("First commit") co.write("bar.c", "The world will little note, nor long remember...\n") co.commit("Second commit") co.write("foo.c", "And now for something completely different.\n") co.write("bar.c", "One is dead, one is mad, and I have forgotten.\n") co.commit("Third commit") co.branch("alternate") co.write("foo.c", "Ceci n'est pas un sourcefile.\n") co.commit("Fourth commit") co.write("foo.c", "Twas brillig, and the slithy toves...\n") co.write("bar.c", "...did gyre and gimble in the wabe.\n") co.commit("Fifth commit") repo.cleanup() # end cvs-fast-export-1.35/tests/t9603.testrepo/0000775000175000017500000000000012435607267016464 5ustar esresrcvs-fast-export-1.35/tests/t9603.testrepo/.gitattributes0000664000175000017500000000001612435607267021354 0ustar esresr* -whitespace cvs-fast-export-1.35/tests/t9603.testrepo/module/0000775000175000017500000000000012624621653017744 5ustar esresrcvs-fast-export-1.35/tests/t9603.testrepo/module/b,v0000664000175000017500000000127712435607267020366 0ustar esresrhead 1.3; access; symbols A:1.2.0.2; locks; strict; comment @# @; 1.3 date 2009.03.11.19.05.08; author tester; state Exp; branches; next 1.2; 1.2 date 2009.02.21.18.11.43; author tester; state Exp; branches 1.2.2.1; next 1.1; 1.1 date 2009.02.21.18.11.14; author tester; state Exp; branches; next ; 1.2.2.1 date 2009.03.11.19.03.52; author tester; state Exp; branches; next 1.2.2.2; 1.2.2.2 date 2009.03.11.19.09.10; author tester; state Exp; branches; next ; desc @@ 1.3 log @Rev 4 @ text @1.3 @ 1.2 log @Rev 3 @ text @d1 1 a1 1 1.2 @ 1.2.2.1 log @Rev 4 Branch A @ text @d1 1 a1 1 1.2.2.1 @ 1.2.2.2 log @Rev 5 Branch A @ text @d1 1 a1 1 1.2 @ 1.1 log @Rev 2 @ text @d1 1 a1 1 1.1 @ cvs-fast-export-1.35/tests/t9603.testrepo/module/a,v0000664000175000017500000000111512435607267020354 0ustar esresrhead 1.2; access; symbols A:1.2.0.2; locks; strict; comment @# @; 1.2 date 2009.02.21.18.11.14; author tester; state Exp; branches 1.2.2.1; next 1.1; 1.1 date 2009.02.21.18.11.43; author tester; state Exp; branches; next ; 1.2.2.1 date 2009.03.11.19.03.52; author tester; state Exp; branches; next 1.2.2.2; 1.2.2.2 date 2009.03.11.19.09.10; author tester; state Exp; branches; next ; desc @@ 1.2 log @Rev 2 @ text @1.2 @ 1.2.2.1 log @Rev 4 Branch A @ text @d1 1 a1 1 1.2.2.1 @ 1.2.2.2 log @Rev 5 Branch A @ text @d1 1 a1 1 1.2.2.2 @ 1.1 log @Rev 1 @ text @d1 1 a1 1 1.1 @ cvs-fast-export-1.35/tests/t9603.testrepo/CVSROOT/0000775000175000017500000000000012624621653017616 5ustar esresrcvs-fast-export-1.35/tests/t9603.testrepo/CVSROOT/val-tags0000664000175000017500000000000412444400204021234 0ustar esresrA y cvs-fast-export-1.35/tests/t9603.testrepo/CVSROOT/.gitignore0000664000175000017500000000002112435607267021604 0ustar esresrhistory val-tags cvs-fast-export-1.35/tests/t9603.testrepo/CVSROOT/history0000664000175000017500000010202012624621653021235 0ustar esresrO5478295f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54782960|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54782960|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O547849c9|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547849ca|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U547849ca|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54785cea|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54785ceb|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54785ceb|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54785d9e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54785d9f|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54785d9f|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5479442a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5479442b|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5479442b|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O547a012b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a012c|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U547a012c|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O547a1e72|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a1e73|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U547a1e73|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O547a2012|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a2013|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U547a2013|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O547a2177|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a2178|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U547a2178|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O547a3b27|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a3b28|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U547a3b28|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O547e1995|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547e1996|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U547e1996|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O547e1a8d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547e1a8e|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U547e1a8e|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5480146b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5480146c|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5480146c|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54801b39|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54801b3a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54801b3a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54801ce8|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54801ce9|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54801ce9|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54807ba7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54807ba8|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54807ba8|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5480d13c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5480d13d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5480d13d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54818f7b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54818f7c|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54818f7c|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54831f13|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54831f14|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54831f14|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54862ce1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54862ce2|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54862ce2|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54862e1f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54862e20|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54862e20|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54863538|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54863539|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54863539|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5486374b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5486374c|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5486374c|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54872bca|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54872bcb|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54872bcb|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54887926|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54887927|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54887927|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O548ad694|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548ad695|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U548ad695|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O548e3bd4|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548e3bd5|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U548e3bd5|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O548fa4a8|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548fa4a9|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U548fa4a9|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54909ced|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54909cee|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54909cee|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490a27e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490a27f|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490a27f|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490a919|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490a91a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490a91a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490ac33|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ac34|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490ac34|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490ad00|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ad01|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490ad01|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490ad49|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ad4a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490ad4a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490aef7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490aef8|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490aef8|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490b29a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b29b|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490b29b|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490b392|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b393|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490b393|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490b417|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b418|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490b418|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490bc82|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bc83|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490bc83|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490bd4e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bd4f|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490bd4f|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490bda1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bda2|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490bda2|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490c2da|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c2db|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490c2db|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490c353|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c354|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490c354|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490c383|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c384|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490c384|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490cf5f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490cf60|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490cf60|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490d651|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490d652|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490d652|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490dfd7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490dfd8|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490dfd8|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490e021|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e022|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490e022|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490e127|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e128|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490e128|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490e178|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e179|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490e179|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490e1e2|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e1e3|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490e1e3|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490e21a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e21b|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490e21b|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490e24b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e24c|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490e24c|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490e27a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e27b|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490e27b|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490e31d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e31e|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490e31e|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5490f205|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490f206|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5490f206|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5491800c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491800d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5491800d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54918056|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918057|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54918057|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5491831d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491831e|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5491831e|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5491848e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491848f|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5491848f|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54918585|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918586|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54918586|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O549185b9|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549185ba|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U549185ba|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5491860e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491860f|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5491860f|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5491876d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491876e|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5491876e|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54918e51|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918e52|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54918e52|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54918eb9|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918eba|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54918eba|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54918fee|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918fef|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54918fef|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54919c20|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54919c21|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54919c21|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5491b4bf|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491b4c0|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5491b4c0|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5491b4fc|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491b4fd|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5491b4fd|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5491f631|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491f632|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5491f632|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54920082|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920083|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2|a U54920083|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.3|b U54920084|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|a U54920084|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|b O54920bb2|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920bb3|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54920bb3|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54920dd8|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920dd9|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54920dd9|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5495b870|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5495b871|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5495b871|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54961fd0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54961fd1|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54961fd1|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54962047|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54962048|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54962048|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5496d9ef|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5496d9f0|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5496d9f0|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54971683|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54971684|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54971684|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54971a22|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54971a23|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54971a23|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5497204c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5497204d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5497204d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54972387|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54972388|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54972388|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54972ba7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54972ba8|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54972ba8|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54974350|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54974351|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54974351|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54974389|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5497438a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5497438a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54982844|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54982845|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54982845|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O549828e3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549828e4|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U549828e4|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54982927|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54982928|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54982928|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54986b2a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54986b2b|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2|a U54986b2b|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.3|b U54986b2c|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|a U54986b2c|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|b O54987177|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987178|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2|a U54987178|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.3|b U54987179|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|a U54987179|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|b O54987183|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987184|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2|a U54987184|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.3|b U54987185|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|a U54987185|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|b O54987226|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987227|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2|a U54987227|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.3|b U54987228|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|a U54987228|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|b O54987232|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987233|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2|a U54987233|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.3|b U54987234|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|a U54987234|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|b O5498735b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498735c|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5498735c|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54987396|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987397|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2|a U54987397|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.3|b U54987398|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|a U54987398|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|b O549873a2|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549873a3|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2|a U549873a3|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.3|b U549873a4|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|a U549873a4|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|b O5498772c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498772d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5498772d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54987767|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987768|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2|a U54987768|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.3|b U54987769|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|a U54987769|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|b O54987773|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987774|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2|a U54987774|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.3|b U54987775|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|a U54987775|esr|~/public_html/cvs-fast-export/tests/t9603.testrepo.checkout|module|1.2.2.2|b O549aa46d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549aa46e|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U549aa46e|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O549b02d6|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549b02d7|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U549b02d7|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O549b03fe|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549b03ff|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U549b03ff|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O549da1fb|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549da1fc|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U549da1fc|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O549da2ad|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549da2ae|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U549da2ae|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54b71514|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b71515|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54b71515|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54b727ce|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b727cf|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54b727cf|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54b74f44|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b74f45|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54b74f45|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54b7b2b8|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7b2b9|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54b7b2b9|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54b7b52c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7b52d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54b7b52d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54b7cb1c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7cb1d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54b7cb1d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54b7cbed|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7cbee|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54b7cbee|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54b9353f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b93540|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54b93540|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54b95169|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b9516a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54b9516a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54bb41fe|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb41ff|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54bb41ff|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54bb4653|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb4654|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54bb4654|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54bb7826|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb7827|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54bb7827|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54bb7879|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb787a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54bb787a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54bb86fb|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb86fc|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54bb86fc|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54bb8a07|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb8a08|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54bb8a08|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54bbbd24|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bbbd25|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54bbbd25|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54d11fe1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d11fe2|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54d11fe2|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54d1205f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d12060|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54d12060|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O54d12184|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d12185|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U54d12185|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O551d3c65|esr|~/public_html/cvs-fast-export/tests/*0|module||module U551d3c66|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U551d3c66|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O553f6faf|esr|~/public_html/cvs-fast-export/tests/*0|module||module U553f6fb0|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U553f6fb0|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O553f72f8|esr|~/public_html/cvs-fast-export/tests/*0|module||module U553f72f9|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U553f72f9|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O55786a6c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55786a6d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U55786a6d|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O55786abb|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55786abc|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U55786abc|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O55789194|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55789195|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U55789195|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O55789239|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5578923a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5578923a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O55e36019|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e3601a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U55e3601a|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O55e362b3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e362b4|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U55e362b4|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O55e47bbb|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e47bbc|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U55e47bbc|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O56053a53|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56053a54|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U56053a54|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5645dc4e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5645dc4f|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5645dc4f|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O5645e06d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5645e06e|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U5645e06e|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O564f1cb0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U564f1cb1|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U564f1cb1|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O56508c44|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56508c45|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U56508c45|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O56508e14|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56508e15|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U56508e15|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O56531c65|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56531c66|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U56531c66|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O56531ee8|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56531ee9|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U56531ee9|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b O565323aa|esr|~/public_html/cvs-fast-export/tests/*0|module||module U565323ab|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.2|a U565323ab|esr|~/public_html/cvs-fast-export/tests/t9603.checkout|module|1.3|b cvs-fast-export-1.35/tests/deadbranch.chk0000664000175000017500000000146012624620213016560 0ustar esresrcvs-fast-export: discarding dead untagged branch 1.4.2.2 in deadbranch commit refs/heads/master mark :1 committer cgd 847321753 +0000 data 33 02c3c00d1b01b59dc1df89a22fd85ed7 M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end commit refs/heads/master mark :2 committer cgd 853377624 +0000 data 33 d10b914da055c3e88c3f2d497211d6f0 from :1 commit refs/heads/master mark :3 committer cgd 854070780 +0000 data 33 67e343d3c0df8fd8230b555776ef6aa5 from :2 commit refs/heads/master mark :4 committer cgd 860316071 +0000 data 33 4a486f01d33c531a71545e0fa34fc4e3 from :3 reset refs/heads/master from :4 done cvs-fast-export-1.35/tests/twotag.chk0000664000175000017500000000227012536065263016024 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 43 Alve bazige froulju wachtsje op dyn komst. blob mark :2 data 46 The quick brown fox jumped over the lazy dog. commit refs/heads/master mark :3 committer foo 101800 +0000 data 25 An example first checkin M 100644 :1 tweedledee M 100644 :2 tweedledum M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 30 tweedledee 1.1 tweedledum 1.1 blob mark :4 data 38 Lynx c.q. vos prikt bh: dag zwemjuf!. blob mark :5 data 47 Portez ce vieux whisky au juge blond qui fume. commit refs/heads/master mark :6 committer foo 103600 +0000 data 26 An example second checkin from :3 M 100644 :4 tweedledee M 100644 :5 tweedledum property cvs-revision 30 tweedledee 1.2 tweedledum 1.2 commit refs/heads/FUBAR mark :7 committer cvs-fast-export 104200 +0000 data 30 Synthetic commit for tag FUBAR from :6 M 100644 :2 tweedledum property cvs-revision 15 tweedledum 1.1 reset refs/heads/master from :6 reset refs/heads/FUBAR from :7 done cvs-fast-export-1.35/tests/twotag.repo/0000775000175000017500000000000012621360144016267 5ustar esresrcvs-fast-export-1.35/tests/twotag.repo/module/0000775000175000017500000000000012621360145017555 5ustar esresrcvs-fast-export-1.35/tests/twotag.repo/module/tweedledee,v0000444000175000017500000000062712621360145022052 0ustar esresrhead 1.2; access; symbols FUBAR:1.2; locks; strict; comment @# @; 1.2 date 2015.11.13.13.06.45; author esr; state Exp; branches; next 1.1; 1.1 date 2015.11.13.13.06.44; author esr; state Exp; branches; next ; desc @@ 1.2 log @An example second checkin @ text @Lynx c.q. vos prikt bh: dag zwemjuf!. @ 1.1 log @An example first checkin @ text @d1 1 a1 1 Alve bazige froulju wachtsje op dyn komst. @ cvs-fast-export-1.35/tests/twotag.repo/module/tweedledum,v0000444000175000017500000000064312621360145022100 0ustar esresrhead 1.2; access; symbols FUBAR:1.1; locks; strict; comment @# @; 1.2 date 2015.11.13.13.06.45; author esr; state Exp; branches; next 1.1; 1.1 date 2015.11.13.13.06.44; author esr; state Exp; branches; next ; desc @@ 1.2 log @An example second checkin @ text @Portez ce vieux whisky au juge blond qui fume. @ 1.1 log @An example first checkin @ text @d1 1 a1 1 The quick brown fox jumped over the lazy dog. @ cvs-fast-export-1.35/tests/access,v0000444000175000017500000000251512623617046015453 0ustar esresrhead 1.1; access archiv john wulff; symbols; locks; strict; comment @# Master with a nonempty access list.@; 1.1 date 2013.09.10.08.31.47; author jw; state Exp; branches; next ; desc @pplc @ 1.1 log @use cexe_t.c as a template for cexe.c to bootstrap icr and ict @ text @static const char cexe_t_c[] = "@@(#)$Id$"; /******************************************************************** * * Copyright (C) 1985-2013 John E. Wulff * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * For more information about this program, or for information on how * to contact the author, see the README file * * cexe_t.c * template for cexe.c to bootstrap icr and ict * if cexe.c does not exist * *******************************************************************/ #include #include #include "icc.h" #include "comp.h" #if INT_MAX == 32767 && defined (LONG16) long #else int #endif iC_exec(int iC_indx, iC_Gt * iC_gf) { fflush(iC_outFP); fprintf(iC_errFP, "\n*** Error: cexe.c: does not support arithmetic expressions yet.\n" "*** Rebuild compilers using '%s -c -%sO%o %s; m -rt'\n" , iC_progname, iC_gflag ? "g" : "", iC_optimise, inpNM); iC_quit(SIGUSR1); return 0; /* never gets here */ } /* iC_exec */ @ cvs-fast-export-1.35/tests/postbranch.tst0000664000175000017500000000650612446600106016724 0ustar esresr#!/usr/bin/env python ## Ilya Basin's test, failed by cvsps-3.x """ Date: Sat, 20 Apr 2013 14:38:55 +0400 From: Ilya Basin Message-ID: <1769337906.20130420143855@gmail.com> Subject: cvsps --fast-export: a branch has no common ancestor with trunk Hi Eric. I think I found a bug: with option '--fast-export' cvsps produces a stream in which the branch has no common ancestor with trunk. When importing this with 'git fast-import', 2 branches are unrelated. Please see the CVS repo here: https://github.com/basinilya/testcvsps (cvs repo is inside the git repo) Here I did: 1) create file "f" 2) commit 3) create branch "br": # name the branch's point of attachment cvs tag br_0 # actually create the branch cvs tag -r br_0 -b br 4) modify f, commit in trunk 5) # switch to new branch cvs update -r br -kk 6) modify f, commit in br 7) # switch back to trunk cvs -q up -CAd -kk 8) modify f, commit in trunk (To have both cvsps versions, I created: /usr/local/bin/cvsps -> /usr/bin/cvsps2) The correct graph, imported with: git cvsimport -C proj2 -r cvs -k proj * commit 6351661c6711ebb6295c473cb1110fbb9d0513ab | Author: il | Date: Sat Apr 20 09:23:01 2013 +0000 | | second commit in trunk | | * commit d047058d60d57f90d404129321c809e7c91253d5 |/ Author: il | Date: Sat Apr 20 09:16:37 2013 +0000 | | commit in br | * commit e56d41b400a1a8cd50d7880d0278b42e960fb451 | Author: il | Date: Sat Apr 20 09:15:21 2013 +0000 | | commit in trunk | * commit 4374f4dcb6125dae25cc630a7b81149595621d6d Author: il Date: Sat Apr 20 09:11:34 2013 +0000 root Wrong graph, imported with: /usr/bin/cvsps --fast-export proj | git fast-import * commit 6351661c6711ebb6295c473cb1110fbb9d0513ab | Author: il | Date: Sat Apr 20 09:23:01 2013 +0000 | | second commit in trunk | * commit e56d41b400a1a8cd50d7880d0278b42e960fb451 | Author: il | Date: Sat Apr 20 09:15:21 2013 +0000 | | commit in trunk | * commit 4374f4dcb6125dae25cc630a7b81149595621d6d Author: il Date: Sat Apr 20 09:11:34 2013 +0000 root * commit edb5d8ac84296d376aada841f4c45e05ba8db1d8 Author: il Date: Sat Apr 20 09:16:37 2013 +0000 commit in br """ import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.CVSRepository("postbranch.repo") repo.init() repo.module("module") co = repo.checkout("module", "postbranch.checkout") # 1) create file "f" co.write("f", "random content") co.add("f") # 2) commit co.commit("root") # 3) create branch "br": # name the branch's point of attachment co.outdo("cvs -Q tag br_0") # actually create the branch co.outdo("cvs -Q tag -r br_0 -b br") # 4) modify f, commit in trunk co.write("f", "different random content") co.commit("commit in trunk") # 5) switch to new branch co.outdo("cvs -Q update -r br -kk") # 6) modify f, commit in br co.write("f", "even more random content") co.commit("commit in br") # 7) switch back to trunk co.outdo("cvs -Q -q up -CAd -kk") # 8) modify f, commit in trunk co.write("f", "even more different random content") co.commit("second commit in trunk") repo.cleanup() # end cvs-fast-export-1.35/tests/hack1.repo/0000775000175000017500000000000012621357750015762 5ustar esresrcvs-fast-export-1.35/tests/hack1.repo/module/0000775000175000017500000000000012621357760017250 5ustar esresrcvs-fast-export-1.35/tests/hack1.repo/module/foo.c,v0000444000175000017500000000067212621357760020442 0ustar esresrhead 1.2; access; symbols; locks; strict; comment @ * @; 1.2 date 2015.11.13.13.04.48; author esr; state Exp; branches; next 1.1; commitid 1005645DFF00E6EE8B7; 1.1 date 2015.11.13.13.04.42; author esr; state Exp; branches; next ; commitid 1005645DFEA0E6AA89C; desc @@ 1.2 log @Third commit @ text @And now for something completely different. @ 1.1 log @First commit @ text @d1 1 a1 1 The quick brown fox jumped over the lazy dog. @ cvs-fast-export-1.35/tests/hack1.repo/module/bar.c,v0000444000175000017500000000117012621357760020415 0ustar esresrhead 1.3; access; symbols; locks; strict; comment @ * @; 1.3 date 2015.11.13.13.04.48; author esr; state Exp; branches; next 1.2; commitid 1005645DFF00E6EE8B7; 1.2 date 2015.11.13.13.04.45; author esr; state Exp; branches; next 1.1; commitid 1005645DFED0E6C5A75; 1.1 date 2015.11.13.13.04.42; author esr; state Exp; branches; next ; commitid 1005645DFEA0E6AA89C; desc @@ 1.3 log @Third commit @ text @One is dead, one is mad, and I have forgotten. @ 1.2 log @Second commit @ text @d1 1 a1 1 The world will little note, nor long remember... @ 1.1 log @First commit @ text @d1 1 a1 1 Not an obfuscated C contest entry. @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/0000775000175000017500000000000012624160405017111 5ustar esresrcvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#postadmin0000664000175000017500000000171212621357750021164 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/cvswrappers0000444000175000017500000000113212621357750021414 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/loginfo,v0000444000175000017500000000415512621357750020744 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#checkoutlist0000664000175000017500000000075712621357750021677 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#cvswrappers0000664000175000017500000000113212621357750021541 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/val-tags0000666000175000017500000000000012621357750020552 0ustar esresrcvs-fast-export-1.35/tests/hack1.repo/CVSROOT/postadmin0000444000175000017500000000171212621357750021037 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#rcsinfo0000664000175000017500000000121112621357750020623 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/verifymsg,v0000444000175000017500000000334512621357750021322 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/checkoutlist0000444000175000017500000000075712621357750021552 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/commitinfo,v0000444000175000017500000000275412621357750021456 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#postwatch0000664000175000017500000000175512621357750021211 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/posttag,v0000444000175000017500000000420612621357750020765 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#preproxy0000664000175000017500000000234312621357750021057 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/taginfo0000444000175000017500000000437712621357750020502 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#postproxy0000664000175000017500000000220112621357750021247 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/verifymsg0000444000175000017500000000277112621357750021062 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/history0000666000175000017500000000073612621357760020556 0ustar esresrO5645dfe8|esr|~/public_html/cvs-fast-export/tests/*0|module||module A5645dfea|esr|~/public_html/cvs-fast-export/tests/hack1.checkout|module|1.1|bar.c A5645dfea|esr|~/public_html/cvs-fast-export/tests/hack1.checkout|module|1.1|foo.c M5645dfed|esr|~/public_html/cvs-fast-export/tests/hack1.checkout|module|1.2|bar.c M5645dff0|esr|~/public_html/cvs-fast-export/tests/hack1.checkout|module|1.3|bar.c M5645dff0|esr|~/public_html/cvs-fast-export/tests/hack1.checkout|module|1.2|foo.c cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/postwatch,v0000444000175000017500000000233112621357750021315 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/postadmin,v0000444000175000017500000000226612621357750021306 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/config0000444000175000017500000001004712621357750020307 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/config,v0000444000175000017500000001042312621357750020547 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/rcsinfo,v0000444000175000017500000000156512621357750020754 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/loginfo0000444000175000017500000000360112621357750020475 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/commitinfo0000444000175000017500000000240012621357750021200 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/posttag0000444000175000017500000000363212621357750020525 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/postproxy,v0000444000175000017500000000255512621357750021400 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/postproxy0000444000175000017500000000220112621357750021122 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/rcsinfo0000444000175000017500000000121112621357750020476 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/preproxy0000444000175000017500000000234312621357750020732 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/modules,v0000444000175000017500000000244512621357750020757 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#config0000664000175000017500000001004712621357750020434 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/notify0000444000175000017500000000163412621357750020354 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/checkoutlist,v0000444000175000017500000000133312621357750022003 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#commitinfo0000664000175000017500000000240012621357750021325 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/Emptydir/0000775000175000017500000000000012621357750020716 5ustar esresrcvs-fast-export-1.35/tests/hack1.repo/CVSROOT/notify,v0000444000175000017500000000221012621357750020605 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#taginfo0000664000175000017500000000437712621357750020627 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#verifymsg0000664000175000017500000000277112621357750021207 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/postwatch0000444000175000017500000000175512621357750021064 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/cvswrappers,v0000444000175000017500000000150612621357750021663 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/preproxy,v0000444000175000017500000000271712621357750021201 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/taginfo,v0000444000175000017500000000475312621357750020742 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.40; author esr; state Exp; branches; next ; commitid 1005645DFE80E620732; desc @@ 1.1 log @initial checkin@ text @# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#notify0000664000175000017500000000163412621357750020501 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/modules0000444000175000017500000000207112621357750020510 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#posttag0000664000175000017500000000363212621357750020652 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#modules0000664000175000017500000000207112621357750020635 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/hack1.repo/CVSROOT/.#loginfo0000664000175000017500000000360112621357750020622 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/hack2.chk0000664000175000017500000000276712536065263015522 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 35 Not an obfuscated C contest entry. blob mark :2 data 46 The quick brown fox jumped over the lazy dog. commit refs/heads/master mark :3 committer foo 101800 +0000 data 13 First commit M 100644 :1 bar.c M 100644 :2 foo.c M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 20 bar.c 1.1 foo.c 1.1 blob mark :4 data 49 The world will little note, nor long remember... commit refs/heads/master mark :5 committer foo 103000 +0000 data 14 Second commit from :3 M 100644 :4 bar.c property cvs-revision 10 bar.c 1.2 blob mark :6 data 47 One is dead, one is mad, and I have forgotten. blob mark :7 data 44 And now for something completely different. commit refs/heads/master mark :8 committer foo 104800 +0000 data 13 Third commit from :5 M 100644 :6 bar.c M 100644 :7 foo.c property cvs-revision 20 bar.c 1.3 foo.c 1.2 reset refs/tags/alternate_root from :8 blob mark :9 data 52 C'est magnifique, mais ce n'est pas la source code. blob mark :10 data 30 Ceci n'est pas un sourcefile. commit refs/heads/alternate mark :11 committer foo 106600 +0000 data 14 Fourth commit from :8 M 100644 :9 bar.c M 100644 :10 foo.c property cvs-revision 28 bar.c 1.3.2.1 foo.c 1.2.2.1 reset refs/heads/master from :8 reset refs/heads/alternate from :11 done cvs-fast-export-1.35/tests/t9605.testrepo/0000775000175000017500000000000012435607267016466 5ustar esresrcvs-fast-export-1.35/tests/t9605.testrepo/.gitattributes0000664000175000017500000000001612435607267021356 0ustar esresr* -whitespace cvs-fast-export-1.35/tests/t9605.testrepo/module/0000775000175000017500000000000012624621661017745 5ustar esresrcvs-fast-export-1.35/tests/t9605.testrepo/module/b,v0000664000175000017500000000027212435607267020362 0ustar esresrhead 1.1; access; symbols; locks; strict; comment @# @; 1.1 date 2012.12.12.21.09.50; author tester; state Exp; branches; next ; desc @@ 1.1 log @changes are done @ text @file b @ cvs-fast-export-1.35/tests/t9605.testrepo/module/c,v0000664000175000017500000000074112435607267020364 0ustar esresrhead 1.3; access; symbols; locks; strict; comment @# @; 1.3 date 2012.12.12.21.09.50; author tester; state Exp; branches; next 1.2; 1.2 date 2012.12.12.21.09.46; author tester; state Exp; branches; next 1.1; 1.1 date 2012.12.12.21.09.44; author tester; state Exp; branches; next ; desc @@ 1.3 log @changes are done @ text @file c line two line three line four line five @ 1.2 log @changes @ text @d2 4 a5 4 line 2 line 3 line 4 line 5 @ 1.1 log @changes @ text @d2 4 @ cvs-fast-export-1.35/tests/t9605.testrepo/module/a,v0000664000175000017500000000027212435607267020361 0ustar esresrhead 1.1; access; symbols; locks; strict; comment @# @; 1.1 date 2012.12.12.21.09.39; author tester; state Exp; branches; next ; desc @@ 1.1 log @changes are done @ text @file a @ cvs-fast-export-1.35/tests/t9605.testrepo/CVSROOT/0000775000175000017500000000000012624621661017617 5ustar esresrcvs-fast-export-1.35/tests/t9605.testrepo/CVSROOT/.gitignore0000664000175000017500000000002112435607267021606 0ustar esresrhistory val-tags cvs-fast-export-1.35/tests/t9605.testrepo/CVSROOT/history0000664000175000017500000012317212624621661021251 0ustar esresrO54782965|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54782966|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54782966|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54782966|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O547849cf|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547849d0|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U547849d0|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U547849d0|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54785cf0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54785cf1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54785cf1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54785cf1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54785da4|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54785da5|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54785da5|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54785da5|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54794430|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54794431|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54794431|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54794431|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O547a0131|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a0132|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U547a0132|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U547a0132|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O547a1e78|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a1e79|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U547a1e79|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U547a1e79|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O547a2018|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a2019|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U547a2019|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U547a2019|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O547a217d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a217e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U547a217e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U547a217e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O547a3b2d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a3b2e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U547a3b2e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U547a3b2e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O547e199b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547e199c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U547e199c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U547e199c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O547e1a93|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547e1a94|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U547e1a94|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U547e1a94|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54801471|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54801472|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54801472|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54801472|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54801b3f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54801b40|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54801b40|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54801b40|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54801cee|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54801cef|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54801cef|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54801cef|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54807bad|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54807bae|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54807bae|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54807bae|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5480d142|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5480d143|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5480d143|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5480d143|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54818f81|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54818f82|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54818f82|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54818f82|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54831f19|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54831f1a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54831f1a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54831f1a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54862ce7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54862ce8|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54862ce8|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54862ce8|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54862e25|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54862e26|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54862e26|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54862e26|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5486353e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5486353f|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5486353f|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5486353f|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54863751|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54863752|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54863752|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54863752|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54872bd0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54872bd1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54872bd1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54872bd1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5488792c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5488792d|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5488792d|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5488792d|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O548ad69a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548ad69b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U548ad69b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U548ad69b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O548e3bda|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548e3bdb|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U548e3bdb|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U548e3bdb|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O548fa4ae|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548fa4af|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U548fa4af|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U548fa4af|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54909cf3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54909cf4|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54909cf4|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54909cf4|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490a284|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490a285|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490a285|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490a285|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490a91f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490a920|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490a920|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490a920|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490ac39|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ac3a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490ac3a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490ac3a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490ad06|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ad07|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490ad07|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490ad07|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490ad4f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ad50|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490ad50|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490ad50|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490b2a0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b2a1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490b2a1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490b2a1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490b398|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b399|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490b399|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490b399|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490b41d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b41e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490b41e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490b41e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490bc88|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bc89|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490bc89|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490bc89|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490bd54|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bd55|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490bd55|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490bd55|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490bda7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bda8|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490bda8|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490bda8|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490c2e0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c2e1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490c2e1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490c2e1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490c359|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c35a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490c35a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490c35a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490c389|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c38a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490c38a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490c38a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490cf65|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490cf66|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490cf66|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490cf66|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490d657|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490d658|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490d658|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490d658|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490dfdd|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490e027|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e028|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490e028|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490e028|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490e12d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e12e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490e12e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490e12e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490e17e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e17f|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490e17f|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490e17f|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490e1e8|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e1e9|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490e1e9|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490e1e9|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490e220|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e221|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490e221|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490e221|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490e251|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e252|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490e252|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490e252|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490e280|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e281|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490e281|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490e281|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490e323|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e324|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490e324|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490e324|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5490f20b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490f20c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5490f20c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5490f20c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54918012|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918013|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54918013|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54918013|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5491805c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491805d|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5491805d|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5491805d|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54918323|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918324|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54918324|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54918324|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54918494|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918495|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54918495|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54918495|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5491858b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491858c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5491858c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5491858c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O549185bf|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549185c0|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U549185c0|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U549185c0|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54918614|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918615|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54918615|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54918615|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54918773|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918774|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54918774|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54918774|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54918e57|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918e58|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54918e58|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54918e58|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54918ebf|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918ec0|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54918ec0|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54918ec0|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54918ff4|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918ff5|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54918ff5|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54918ff5|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54919c26|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54919c27|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54919c27|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54919c27|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5491b4c5|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491b4c6|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5491b4c6|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5491b4c6|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5491b502|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491b503|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5491b503|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5491b503|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5491f637|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491f638|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5491f638|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5491f638|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54920091|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920092|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|a U54920092|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|b U54920092|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.3|c O54920bb8|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920bb9|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54920bb9|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54920bb9|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54920dde|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920ddf|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54920ddf|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54920ddf|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5495b876|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5495b877|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5495b877|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5495b877|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54961fd6|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54961fd7|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54961fd7|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54961fd7|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5496204d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5496204e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5496204e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5496204e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5496d9f5|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5496d9f6|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5496d9f6|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5496d9f6|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54971689|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5497168a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5497168a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5497168a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54971a28|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54971a29|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54971a29|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54971a29|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54972052|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54972053|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54972053|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54972053|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5497238d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5497238e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5497238e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5497238e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54972bad|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54972bae|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54972bae|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54972bae|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54974356|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54974357|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54974357|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54974357|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5497438f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54974390|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54974390|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54974390|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5498284a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498284b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5498284b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5498284b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O549828e9|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549828ea|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U549828ea|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U549828ea|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5498292d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498292e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5498292e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5498292e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54986b6d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54986b6e|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|a U54986b6e|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|b U54986b6e|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.3|c O5498717c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498717d|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|a U5498717d|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|b U5498717d|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.3|c O54987188|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987189|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|a U54987189|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|b U54987189|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.3|c O5498722b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498722c|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|a U5498722c|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|b U5498722c|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.3|c O54987237|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987238|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|a U54987238|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|b U54987238|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.3|c O54987361|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987362|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54987362|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54987362|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5498739b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498739c|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|a U5498739c|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|b U5498739c|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.3|c O549873a7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549873a8|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|a U549873a8|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|b U549873a8|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.3|c O54987732|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987733|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54987733|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54987733|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5498776c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498776d|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|a U5498776d|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|b U5498776d|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.3|c O54987778|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987779|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|a U54987779|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.1|b U54987779|esr|~/public_html/cvs-fast-export/tests/t9605.testrepo.checkout|module|1.3|c O549aa473|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549aa474|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U549aa474|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U549aa474|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O549b02dc|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549b02dd|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U549b02dd|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U549b02dd|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O549b0404|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549b0405|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U549b0405|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U549b0405|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O549da201|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549da202|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U549da202|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U549da202|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O549da2b3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549da2b4|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U549da2b4|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U549da2b4|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54b7151a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7151b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54b7151b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54b7151b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54b727d4|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b727d5|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54b727d5|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54b727d5|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54b74f4a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b74f4b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54b74f4b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54b74f4b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54b7b2be|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7b2bf|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54b7b2bf|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54b7b2bf|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54b7b532|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7b533|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54b7b533|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54b7b533|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54b7cb22|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7cb23|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54b7cb23|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54b7cb23|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54b7cbf3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7cbf4|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54b7cbf4|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54b7cbf4|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54b93545|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b93546|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54b93546|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54b93546|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54b9516f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b95170|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54b95170|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54b95170|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54bb4204|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb4205|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54bb4205|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54bb4205|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54bb4659|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb465a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54bb465a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54bb465a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54bb782c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb782d|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54bb782d|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54bb782d|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54bb787f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb7880|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54bb7880|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54bb7880|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54bb8701|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb8702|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54bb8702|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54bb8702|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54bb8a0d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb8a0e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54bb8a0e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54bb8a0e|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54bbbd2a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bbbd2b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54bbbd2b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54bbbd2b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54d11fe7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d11fe8|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54d11fe8|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54d11fe8|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54d12065|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d12066|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54d12066|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54d12066|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O54d1218a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d1218b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U54d1218b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U54d1218b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O551d3c6b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U551d3c6c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U551d3c6c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U551d3c6c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O553f6fb5|esr|~/public_html/cvs-fast-export/tests/*0|module||module U553f6fb6|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U553f6fb6|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U553f6fb6|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O553f72fe|esr|~/public_html/cvs-fast-export/tests/*0|module||module U553f72ff|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U553f72ff|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U553f72ff|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O55786a72|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55786a73|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U55786a73|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U55786a73|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O55786ac1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55786ac2|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U55786ac2|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U55786ac2|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5578919a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5578919b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5578919b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5578919b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5578923f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55789240|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U55789240|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U55789240|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O55e3601f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e36020|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U55e36020|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U55e36020|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O55e362b9|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e362ba|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U55e362ba|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U55e362ba|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O55e47bc1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e47bc2|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U55e47bc2|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U55e47bc2|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O56053a59|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56053a5a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U56053a5a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U56053a5a|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5645dc54|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5645dc55|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5645dc55|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5645dc55|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O5645e073|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5645e074|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U5645e074|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U5645e074|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O564f1cb6|esr|~/public_html/cvs-fast-export/tests/*0|module||module U564f1cb7|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U564f1cb7|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U564f1cb7|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O56508c4a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56508c4b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U56508c4b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U56508c4b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O56508e1a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56508e1b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U56508e1b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U56508e1b|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O56531c6b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56531c6c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U56531c6c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U56531c6c|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O56531eee|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56531eef|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U56531eef|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U56531eef|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c O565323b0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U565323b1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|a U565323b1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.1|b U565323b1|esr|~/public_html/cvs-fast-export/tests/t9605.checkout|module|1.3|c cvs-fast-export-1.35/tests/vendor.testrepo/0000775000175000017500000000000012446073601017163 5ustar esresrcvs-fast-export-1.35/tests/vendor.testrepo/FILE1,v0000664000175000017500000000112412445345371020153 0ustar esresrhead 1.2; access; symbols lost-repo-state:1.1.1.2 vend_1_1:1.1.1.2 vend_1_0:1.1.1.1 vend:1.1.1; locks; strict; comment @# @; 1.2 date 2014.12.20.18.31.31; author loz; state Exp; branches; next 1.1; 1.1 date 2014.12.20.18.31.25; author loz; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2014.12.20.18.31.25; author loz; state Exp; branches; next 1.1.1.2; 1.1.1.2 date 2014.12.20.18.31.27; author loz; state Exp; branches; next ; desc @@ 1.2 log @c3 @ text @3 @ 1.1 log @Initial revision @ text @d1 1 a1 1 1 @ 1.1.1.1 log @v1 @ text @@ 1.1.1.2 log @v2 @ text @d1 1 a1 1 2 @ cvs-fast-export-1.35/tests/vendor.testrepo/FILE2,v0000664000175000017500000000045012445345371020155 0ustar esresrhead 1.2; access; symbols lost-repo-state:1.2; locks; strict; comment @# @; 1.2 date 2014.12.20.18.31.28; author loz; state Exp; branches; next 1.1; 1.1 date 2014.12.20.18.31.26; author loz; state Exp; branches; next ; desc @@ 1.2 log @c2 @ text @2 @ 1.1 log @c1 @ text @d1 1 a1 1 1 @ cvs-fast-export-1.35/tests/oldhead.testrepo/0000775000175000017500000000000012624160405017263 5ustar esresrcvs-fast-export-1.35/tests/oldhead.testrepo/module/0000775000175000017500000000000012446073562020561 5ustar esresrcvs-fast-export-1.35/tests/oldhead.testrepo/module/ChangeLog,v0000664000175000017500000000362012435607267022601 0ustar esresrhead 1.8; access; symbols; locks; strict; comment @# @; 1.8 date 95.05.02.14.22.24; author kingdon; state Exp; branches; next 1.7; 1.7 date 95.05.01.19.04.01; author jimb; state Exp; branches; next 1.6; 1.6 date 95.04.29.03.53.50; author jimb; state Exp; branches; next 1.5; 1.5 date 95.04.24.06.09.12; author noel; state Exp; branches; next 1.4; 1.4 date 95.04.08.23.04.48; author roland; state Exp; branches; next 1.3; 1.3 date 95.04.08.19.53.16; author jimb; state Exp; branches; next 1.2; 1.2 date 95.02.08.11.54.21; author roland; state Exp; branches; next 1.1; 1.1 date 94.12.03.06.09.14; author jimb; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 94.12.03.06.09.14; author jimb; state Exp; branches; next 1.1.1.2; 1.1.1.2 date 95.07.27.20.23.14; author jimb; state Exp; branches; next 1.1.1.3; 1.1.1.3 date 95.08.28.16.14.07; author jimb; state Exp; branches; next ; desc @@ 1.8 log @efd85ec997fe32634876c4d0172436fe @ text @d1 1 a1 1 ChangeLog,v content for 1.8 @ 1.7 log @585e3addfd28851ce8284bca18e152df @ text @d1 1 a1 1 ChangeLog,v content for 1.7 @ 1.6 log @585e3addfd28851ce8284bca18e152df @ text @d1 1 a1 1 ChangeLog,v content for 1.6 @ 1.5 log @460616d6dc880cf30442b521ce20e040 @ text @d1 1 a1 1 ChangeLog,v content for 1.5 @ 1.4 log @8cf8463b34caa8ac871a52d5dd7ad1ef @ text @d1 1 a1 1 ChangeLog,v content for 1.4 @ 1.3 log @585e3addfd28851ce8284bca18e152df @ text @d1 1 a1 1 ChangeLog,v content for 1.3 @ 1.2 log @b72e5e615d7c042281459b7c17245684 @ text @d1 1 a1 1 ChangeLog,v content for 1.2 @ 1.1 log @da28248b4ec75efbe0ba7461142ed60d @ text @d1 1 a1 1 ChangeLog,v content for 1.1 @ 1.1.1.1 log @fa95f7afd9fe5cfc4158bb1628bddeee @ text @d1 1 a1 1 ChangeLog,v content for 1.1.1.1 @ 1.1.1.2 log @0eacecf79eb28594ee63e3907e762b40 @ text @d1 1 a1 1 ChangeLog,v content for 1.1.1.2 @ 1.1.1.3 log @f5048cdd5b80e1f85ec0582695a20db6 @ text @d1 1 a1 1 ChangeLog,v content for 1.1.1.3 @ cvs-fast-export-1.35/tests/oldhead.testrepo/module/Makefile.am,v0000664000175000017500000000111112435607267023054 0ustar esresrhead 1.2; access; symbols; locks; strict; comment @# @; 1.2 date 2004.03.26.02.37.04; author dprice; state Exp; branches; next 1.1; 1.1 date 2001.03.14.11.27.37; author dprice; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2006.06.30.13.21.39; author dprice; state Exp; branches; next ; desc @@ 1.2 log @72b08886805045542b2653782b7f52f0 @ text @Makefile.am,v content for 1.2 @ 1.1 log @da091809da59e576ff757e9779ed1821 @ text @d1 1 a1 1 Makefile.am,v content for 1.1 @ 1.1.1.1 log @adec3217e3975f36407dbf470ddaf5e9 @ text @d1 1 a1 1 Makefile.am,v content for 1.1.1.1 @ cvs-fast-export-1.35/tests/oldhead.testrepo/CVSROOT/0000775000175000017500000000000012624160405020422 5ustar esresrcvs-fast-export-1.35/tests/oldhead.testrepo/CVSROOT/.gitignore0000664000175000017500000000002112435607267022417 0ustar esresrhistory val-tags cvs-fast-export-1.35/tests/oldhead.testrepo/CVSROOT/history0000664000175000017500000000461412446073562022064 0ustar esresrO5490c26e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c26f|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.8|ChangeLog U5490c26f|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.2|Makefile.am O5491862e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491862f|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.8|ChangeLog U5491862f|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.2|Makefile.am O5491ffb0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491ffb1|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.8|ChangeLog U5491ffb1|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.2|Makefile.am O54986a94|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54986a95|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.8|ChangeLog U54986a95|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.2|Makefile.am O54987092|esr|~/public_html/cvs-fast-export/tests/*0|module||module O549870b5|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549870b6|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.8|ChangeLog U549870b6|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.2|Makefile.am O54987181|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987182|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.8|ChangeLog U54987182|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.2|Makefile.am O54987230|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987231|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.8|ChangeLog U54987231|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.2|Makefile.am O549873a0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549873a1|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.8|ChangeLog U549873a1|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.2|Makefile.am O54987771|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987772|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.8|ChangeLog U54987772|esr|~/public_html/cvs-fast-export/tests/oldhead.testrepo.checkout|module|1.2|Makefile.am cvs-fast-export-1.35/tests/oldhead.testrepo/README0000664000175000017500000000142512444306743020154 0ustar esresr## trunk tip older than vendor branch tip At version 1.26, produced a content mismatch: esr@snark:~/WWW/cvs-fast-export/tests$ cvsconvert -n oldhead.testrepo cvsconvert: processing oldhead.testrepo/module cvs-fast-export: Unnumbered head import-1.1.1 in ChangeLog cvs-fast-export: no commitids before 2006-06-30T13:21:39Z. oldhead.testrepo branch master: oldhead.testrepo.checkout/Makefile.am and oldhead.testrepo-git/Makefile.am are different. --- oldhead.testrepo.checkout/Makefile.am 2014-11-24 14:27:37.227257132 -0500 +++ oldhead.testrepo-git/Makefile.am 2014-11-24 14:27:37.215256857 -0500 @@ -1 +1 @@ -Makefile.am,v content for 1.2 +Makefile.am,v content for 1.1.1.1 This problem was solved by the commit labeled 'Major simplification and improvement of vendor branch handling.' cvs-fast-export-1.35/tests/longrev.repo/0000775000175000017500000000000012621360014016432 5ustar esresrcvs-fast-export-1.35/tests/longrev.repo/module/0000775000175000017500000000000012621360076017727 5ustar esresrcvs-fast-export-1.35/tests/longrev.repo/module/README,v0000444000175000017500000000625712621360076021057 0ustar esresrhead 1.1; access; symbols branch10:1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.0.2 branch10_root:1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 branch9:1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.0.2 branch9_root:1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 branch8:1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.0.2 branch8_root:1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 branch7:1.1.2.1.2.1.2.1.2.1.2.1.2.1.0.2 branch7_root:1.1.2.1.2.1.2.1.2.1.2.1.2.1 branch6:1.1.2.1.2.1.2.1.2.1.2.1.0.2 branch6_root:1.1.2.1.2.1.2.1.2.1.2.1 branch5:1.1.2.1.2.1.2.1.2.1.0.2 branch5_root:1.1.2.1.2.1.2.1.2.1 branch4:1.1.2.1.2.1.2.1.0.2 branch4_root:1.1.2.1.2.1.2.1 branch3:1.1.2.1.2.1.0.2 branch3_root:1.1.2.1.2.1 branch2:1.1.2.1.0.2 branch2_root:1.1.2.1 branch1:1.1.0.2 branch1_root:1.1; locks; strict; comment @# @; 1.1 date 2015.11.13.13.05.18; author esr; state Exp; branches 1.1.2.1; next ; commitid 1005645E00E0F39685D; 1.1.2.1 date 2015.11.13.13.05.21; author esr; state Exp; branches 1.1.2.1.2.1; next ; commitid 1005645E0110F4631E1; 1.1.2.1.2.1 date 2015.11.13.13.05.26; author esr; state Exp; branches 1.1.2.1.2.1.2.1; next ; commitid 1005645E0160F524208; 1.1.2.1.2.1.2.1 date 2015.11.13.13.05.31; author esr; state Exp; branches 1.1.2.1.2.1.2.1.2.1; next ; commitid 1005645E01B0F5FBD31; 1.1.2.1.2.1.2.1.2.1 date 2015.11.13.13.05.36; author esr; state Exp; branches 1.1.2.1.2.1.2.1.2.1.2.1; next ; commitid 1005645E0200F6DD04A; 1.1.2.1.2.1.2.1.2.1.2.1 date 2015.11.13.13.05.41; author esr; state Exp; branches 1.1.2.1.2.1.2.1.2.1.2.1.2.1; next ; commitid 1005645E0250F795125; 1.1.2.1.2.1.2.1.2.1.2.1.2.1 date 2015.11.13.13.05.46; author esr; state Exp; branches 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1; next ; commitid 1005645E02A0F85CDB5; 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 date 2015.11.13.13.05.51; author esr; state Exp; branches 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1; next ; commitid 1005645E02F0F95D3B5; 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 date 2015.11.13.13.05.56; author esr; state Exp; branches 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1; next ; commitid 1005645E0340FA1CD3A; 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 date 2015.11.13.13.06.01; author esr; state Exp; branches 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1; next ; commitid 1005645E0390FAD1FD0; 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 date 2015.11.13.13.06.06; author esr; state Exp; branches; next ; commitid 1005645E03E0FBA8EA9; desc @@ 1.1 log @Initial revision @ text @A test of multiple tags. @ 1.1.2.1 log @Updated for branch1 @ text @d1 1 a1 1 branch1@ 1.1.2.1.2.1 log @Updated for branch2 @ text @d1 1 a1 1 branch2@ 1.1.2.1.2.1.2.1 log @Updated for branch3 @ text @d1 1 a1 1 branch3@ 1.1.2.1.2.1.2.1.2.1 log @Updated for branch4 @ text @d1 1 a1 1 branch4@ 1.1.2.1.2.1.2.1.2.1.2.1 log @Updated for branch5 @ text @d1 1 a1 1 branch5@ 1.1.2.1.2.1.2.1.2.1.2.1.2.1 log @Updated for branch6 @ text @d1 1 a1 1 branch6@ 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 log @Updated for branch7 @ text @d1 1 a1 1 branch7@ 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 log @Updated for branch8 @ text @d1 1 a1 1 branch8@ 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 log @Updated for branch9 @ text @d1 1 a1 1 branch9@ 1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1 log @Updated for branch10 @ text @d1 1 a1 1 branch10@ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/0000775000175000017500000000000012624160405017576 5ustar esresrcvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#postadmin0000664000175000017500000000171212621360014021634 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/cvswrappers0000444000175000017500000000113212621360014022064 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/loginfo,v0000444000175000017500000000415512621360014021414 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#checkoutlist0000664000175000017500000000075712621360014022347 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#cvswrappers0000664000175000017500000000113212621360014022211 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/val-tags0000666000175000017500000000037412621360072021244 0ustar esresrbranch1_root y branch1 y branch2_root y branch2 y branch3_root y branch3 y branch4_root y branch4 y branch5_root y branch5 y branch6_root y branch6 y branch7_root y branch7 y branch8_root y branch8 y branch9_root y branch9 y branch10_root y branch10 y cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/postadmin0000444000175000017500000000171212621360014021507 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#rcsinfo0000664000175000017500000000121112621360014021273 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/verifymsg,v0000444000175000017500000000334512621360014021772 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/checkoutlist0000444000175000017500000000075712621360014022222 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/commitinfo,v0000444000175000017500000000275412621360014022126 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#postwatch0000664000175000017500000000175512621360014021661 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/posttag,v0000444000175000017500000000420612621360014021435 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#preproxy0000664000175000017500000000234312621360014021527 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/taginfo0000444000175000017500000000437712621360014021152 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#postproxy0000664000175000017500000000220112621360014021717 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/verifymsg0000444000175000017500000000277112621360014021532 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/history0000666000175000017500000000556512621360076021242 0ustar esresrO5645e00c|esr|~/public_html/cvs-fast-export/tests/*0|module||module A5645e00e|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1|README M5645e011|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1|README U5645e012|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1|README U5645e013|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1|README M5645e016|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1|README U5645e017|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1|README U5645e018|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1|README M5645e01b|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1|README U5645e01c|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1|README U5645e01d|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1|README M5645e020|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1.2.1|README U5645e021|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1|README U5645e022|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1.2.1|README M5645e025|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1.2.1.2.1|README U5645e026|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1|README U5645e027|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1.2.1.2.1|README M5645e02a|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1.2.1.2.1.2.1|README U5645e02b|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1|README U5645e02c|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1.2.1.2.1.2.1|README M5645e02f|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1|README U5645e030|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1|README U5645e031|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1|README M5645e034|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1|README U5645e035|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1|README U5645e036|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1|README M5645e039|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1|README U5645e03a|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1|README U5645e03b|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1|README M5645e03e|esr|~/public_html/cvs-fast-export/tests/longrev.checkout|module|1.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1.2.1|README cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/postwatch,v0000444000175000017500000000233112621360014021765 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/postadmin,v0000444000175000017500000000226612621360014021756 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/config0000444000175000017500000001004712621360014020757 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/config,v0000444000175000017500000001042312621360014021217 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/rcsinfo,v0000444000175000017500000000156512621360014021424 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/loginfo0000444000175000017500000000360112621360014021145 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/commitinfo0000444000175000017500000000240012621360014021650 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/posttag0000444000175000017500000000363212621360014021175 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/postproxy,v0000444000175000017500000000255512621360014022050 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/postproxy0000444000175000017500000000220112621360014021572 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/rcsinfo0000444000175000017500000000121112621360014021146 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/preproxy0000444000175000017500000000234312621360014021402 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/modules,v0000444000175000017500000000244512621360014021427 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#config0000664000175000017500000001004712621360014021104 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/notify0000444000175000017500000000163412621360014021024 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/checkoutlist,v0000444000175000017500000000133312621360014022453 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#commitinfo0000664000175000017500000000240012621360014021775 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/Emptydir/0000775000175000017500000000000012621360014021366 5ustar esresrcvs-fast-export-1.35/tests/longrev.repo/CVSROOT/notify,v0000444000175000017500000000221012621360014021255 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#taginfo0000664000175000017500000000437712621360014021277 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#verifymsg0000664000175000017500000000277112621360014021657 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/postwatch0000444000175000017500000000175512621360014021534 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/cvswrappers,v0000444000175000017500000000150612621360014022333 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/preproxy,v0000444000175000017500000000271712621360014021651 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/taginfo,v0000444000175000017500000000475312621360014021412 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.16; author esr; state Exp; branches; next ; commitid 1005645E00C0F33A927; desc @@ 1.1 log @initial checkin@ text @# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#notify0000664000175000017500000000163412621360014021151 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/modules0000444000175000017500000000207112621360014021160 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#posttag0000664000175000017500000000363212621360014021322 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#modules0000664000175000017500000000207112621360014021305 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/longrev.repo/CVSROOT/.#loginfo0000664000175000017500000000360112621360014021272 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/t9603.err0000664000175000017500000000023512536065275015331 0ustar esresrcvs-fast-export: warning - tests/t9603.testrepo/module/a,v: 1.1 is newer than 1.2, adjusting 1.2 cvs-fast-export: no commitids before 2009-03-11T19:09:10Z. cvs-fast-export-1.35/tests/expand.tst0000664000175000017500000000127612446577740016060 0ustar esresr#!/usr/bin/env python ## Test keyword expansion import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.CVSRepository("expand.repo") repo.init() repo.module("module") co = repo.checkout("module", "expand.checkout") co.write("README", "$Revision$ should expand to something with 1.1 in it.\n") co.add("README") co.commit("This is a sample commit") co.do("admin", "-kkv", "README") co.write("README", "$Revision$ should expand to something with 1.2 in it.\n") co.commit("This is another sample commit") co.write("README", "$Revision: (this should go away) $ should expand to someting with 1.3 in it.\n") co.commit("Yet another sample commit") repo.cleanup() # end cvs-fast-export-1.35/tests/at.repo/0000775000175000017500000000000012621357646015403 5ustar esresrcvs-fast-export-1.35/tests/at.repo/module/0000775000175000017500000000000012621357650016663 5ustar esresrcvs-fast-export-1.35/tests/at.repo/module/README,v0000444000175000017500000000040112621357650017774 0ustar esresrhead 1.1; access; symbols; locks; strict; comment @# @; 1.1 date 2015.11.13.13.03.36; author esr; state Exp; branches; next ; commitid 1005645DFA80CFF18BC; desc @@ 1.1 log @This is a sample commit @ text @The quick brown fox jumped @@t the lazy dog.@ cvs-fast-export-1.35/tests/at.repo/CVSROOT/0000775000175000017500000000000012624160405016526 5ustar esresrcvs-fast-export-1.35/tests/at.repo/CVSROOT/.#postadmin0000664000175000017500000000171212621357646020605 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/cvswrappers0000444000175000017500000000113212621357646021035 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/at.repo/CVSROOT/loginfo,v0000444000175000017500000000415512621357646020365 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#checkoutlist0000664000175000017500000000075712621357646021320 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#cvswrappers0000664000175000017500000000113212621357646021162 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/at.repo/CVSROOT/val-tags0000666000175000017500000000000012621357646020173 0ustar esresrcvs-fast-export-1.35/tests/at.repo/CVSROOT/postadmin0000444000175000017500000000171212621357646020460 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#rcsinfo0000664000175000017500000000121112621357646020244 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/verifymsg,v0000444000175000017500000000334512621357646020743 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/checkoutlist0000444000175000017500000000075712621357646021173 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/at.repo/CVSROOT/commitinfo,v0000444000175000017500000000275412621357646021077 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#postwatch0000664000175000017500000000175512621357646020632 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/posttag,v0000444000175000017500000000420612621357646020406 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#preproxy0000664000175000017500000000234312621357646020500 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/taginfo0000444000175000017500000000437712621357646020123 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#postproxy0000664000175000017500000000220112621357646020670 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/verifymsg0000444000175000017500000000277112621357646020503 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/at.repo/CVSROOT/history0000666000175000017500000000022412621357650020161 0ustar esresrO5645dfa6|esr|~/public_html/cvs-fast-export/tests/*0|module||module A5645dfa8|esr|~/public_html/cvs-fast-export/tests/at.checkout|module|1.1|README cvs-fast-export-1.35/tests/at.repo/CVSROOT/postwatch,v0000444000175000017500000000233112621357646020736 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/postadmin,v0000444000175000017500000000226612621357646020727 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/config0000444000175000017500000001004712621357646017730 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/at.repo/CVSROOT/config,v0000444000175000017500000001042312621357646020170 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/rcsinfo,v0000444000175000017500000000156512621357646020375 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/loginfo0000444000175000017500000000360112621357646020116 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/at.repo/CVSROOT/commitinfo0000444000175000017500000000240012621357646020621 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/posttag0000444000175000017500000000363212621357646020146 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/postproxy,v0000444000175000017500000000255512621357646021021 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/postproxy0000444000175000017500000000220112621357646020543 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/rcsinfo0000444000175000017500000000121112621357646020117 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/preproxy0000444000175000017500000000234312621357646020353 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/modules,v0000444000175000017500000000244512621357646020400 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#config0000664000175000017500000001004712621357646020055 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/at.repo/CVSROOT/notify0000444000175000017500000000163412621357646017775 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/at.repo/CVSROOT/checkoutlist,v0000444000175000017500000000133312621357646021424 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#commitinfo0000664000175000017500000000240012621357646020746 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/Emptydir/0000775000175000017500000000000012621357646020337 5ustar esresrcvs-fast-export-1.35/tests/at.repo/CVSROOT/notify,v0000444000175000017500000000221012621357646020226 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#taginfo0000664000175000017500000000437712621357646020250 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#verifymsg0000664000175000017500000000277112621357646020630 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/at.repo/CVSROOT/postwatch0000444000175000017500000000175512621357646020505 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/cvswrappers,v0000444000175000017500000000150612621357646021304 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/preproxy,v0000444000175000017500000000271712621357646020622 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/taginfo,v0000444000175000017500000000475312621357646020363 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.34; author esr; state Exp; branches; next ; commitid 1005645DFA60CF9303B; desc @@ 1.1 log @initial checkin@ text @# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#notify0000664000175000017500000000163412621357646020122 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/at.repo/CVSROOT/modules0000444000175000017500000000207112621357646020131 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#posttag0000664000175000017500000000363212621357646020273 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#modules0000664000175000017500000000207112621357646020256 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/at.repo/CVSROOT/.#loginfo0000664000175000017500000000360112621357646020243 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/t9604.err0000664000175000017500000000000012536065275015320 0ustar esresrcvs-fast-export-1.35/tests/postbranch.repo/0000775000175000017500000000000012621360077017132 5ustar esresrcvs-fast-export-1.35/tests/postbranch.repo/module/0000775000175000017500000000000012621360114020407 5ustar esresrcvs-fast-export-1.35/tests/postbranch.repo/module/f,v0000444000175000017500000000142112621360114021013 0ustar esresrhead 1.3; access; symbols br:1.1.0.2 br_0:1.1; locks; strict; comment @# @; 1.3 date 2015.11.13.13.06.20; author esr; state Exp; branches; next 1.2; commitid 1005645E04C0FFB6FB6; 1.2 date 2015.11.13.13.06.12; author esr; state Exp; branches; next 1.1; commitid 1005645E0440FF14028; 1.1 date 2015.11.13.13.06.09; author esr; state Exp; branches 1.1.2.1; next ; commitid 1005645E0410FEBE73D; 1.1.2.1 date 2015.11.13.13.06.16; author esr; state Exp; branches; next ; commitid 1005645E0480FF529E4; desc @@ 1.3 log @second commit in trunk @ text @even more different random content@ 1.2 log @commit in trunk @ text @d1 1 a1 1 different random content@ 1.1 log @root @ text @d1 1 a1 1 random content@ 1.1.2.1 log @commit in br @ text @d1 1 a1 1 even more random content@ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/0000775000175000017500000000000012624160405020265 5ustar esresrcvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#postadmin0000664000175000017500000000171212621360077022334 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/cvswrappers0000444000175000017500000000113212621360077022564 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/loginfo,v0000444000175000017500000000415512621360077022114 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#checkoutlist0000664000175000017500000000075712621360077023047 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#cvswrappers0000664000175000017500000000113212621360077022711 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/val-tags0000666000175000017500000000001412621360102021714 0ustar esresrbr_0 y br y cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/postadmin0000444000175000017500000000171212621360077022207 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#rcsinfo0000664000175000017500000000121112621360077021773 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/verifymsg,v0000444000175000017500000000334512621360077022472 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/checkoutlist0000444000175000017500000000075712621360077022722 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/commitinfo,v0000444000175000017500000000275412621360077022626 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#postwatch0000664000175000017500000000175512621360077022361 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/posttag,v0000444000175000017500000000420612621360077022135 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#preproxy0000664000175000017500000000234312621360077022227 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/taginfo0000444000175000017500000000437712621360077021652 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#postproxy0000664000175000017500000000220112621360077022417 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/verifymsg0000444000175000017500000000277112621360077022232 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/history0000666000175000017500000000107212621360114021707 0ustar esresrO5645e03f|esr|~/public_html/cvs-fast-export/tests/*0|module||module A5645e041|esr|~/public_html/cvs-fast-export/tests/postbranch.checkout|module|1.1|f M5645e044|esr|~/public_html/cvs-fast-export/tests/postbranch.checkout|module|1.2|f U5645e045|esr|~/public_html/cvs-fast-export/tests/postbranch.checkout|module|1.1|f M5645e048|esr|~/public_html/cvs-fast-export/tests/postbranch.checkout|module|1.1.2.1|f U5645e049|esr|~/public_html/cvs-fast-export/tests/postbranch.checkout|module|1.2|f M5645e04c|esr|~/public_html/cvs-fast-export/tests/postbranch.checkout|module|1.3|f cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/postwatch,v0000444000175000017500000000233112621360077022465 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/postadmin,v0000444000175000017500000000226612621360077022456 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/config0000444000175000017500000001004712621360077021457 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/config,v0000444000175000017500000001042312621360077021717 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/rcsinfo,v0000444000175000017500000000156512621360077022124 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/loginfo0000444000175000017500000000360112621360077021645 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/commitinfo0000444000175000017500000000240012621360077022350 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/posttag0000444000175000017500000000363212621360077021675 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/postproxy,v0000444000175000017500000000255512621360077022550 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/postproxy0000444000175000017500000000220112621360077022272 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/rcsinfo0000444000175000017500000000121112621360077021646 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/preproxy0000444000175000017500000000234312621360077022102 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/modules,v0000444000175000017500000000244512621360077022127 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#config0000664000175000017500000001004712621360077021604 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/notify0000444000175000017500000000163412621360077021524 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/checkoutlist,v0000444000175000017500000000133312621360077023153 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#commitinfo0000664000175000017500000000240012621360077022475 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/Emptydir/0000775000175000017500000000000012621360077022066 5ustar esresrcvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/notify,v0000444000175000017500000000221012621360077021755 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#taginfo0000664000175000017500000000437712621360077021777 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#verifymsg0000664000175000017500000000277112621360077022357 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/postwatch0000444000175000017500000000175512621360077022234 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/cvswrappers,v0000444000175000017500000000150612621360077023033 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/preproxy,v0000444000175000017500000000271712621360077022351 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/taginfo,v0000444000175000017500000000475312621360077022112 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.07; author esr; state Exp; branches; next ; commitid 1005645E03F0FE57A52; desc @@ 1.1 log @initial checkin@ text @# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#notify0000664000175000017500000000163412621360077021651 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/modules0000444000175000017500000000207112621360077021660 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#posttag0000664000175000017500000000363212621360077022022 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#modules0000664000175000017500000000207112621360077022005 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/postbranch.repo/CVSROOT/.#loginfo0000664000175000017500000000360112621360077021772 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/branchy.chk0000664000175000017500000000723412536065263016152 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 46 The quick brown fox jumped over the lazy dog. commit refs/heads/master mark :2 committer foo 101200 +0000 data 24 This is a sample commit M 100644 :1 README M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 11 README 1.1 blob mark :3 data 70 Now is the time for all good men to come to the aid of their country. commit refs/heads/master mark :4 committer foo 102400 +0000 data 30 This is another sample commit from :2 M 100644 :3 README property cvs-revision 11 README 1.2 blob mark :5 data 54 This is a doomed file. Its destiny is to be deleted. commit refs/heads/master mark :6 committer foo 103600 +0000 data 21 Create a doomed file from :4 M 100644 :5 doomed property cvs-revision 11 doomed 1.1 blob mark :7 data 63 The world will little note, nor long remember what we say here commit refs/heads/master mark :8 committer foo 104800 +0000 data 20 Add a spacer commit from :6 M 100644 :7 doomed property cvs-revision 11 doomed 1.2 reset refs/tags/foo from :8 blob mark :9 data 204 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end *.pyc commit refs/heads/master mark :10 committer foo 106000 +0000 data 60 Check that .cvsignore -> .gitignore name translation works. from :8 M 100644 :9 .gitignore property cvs-revision 15 .cvsignore 1.1 blob mark :11 data 208 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end *.pyc *.o commit refs/heads/master mark :12 committer foo 107200 +0000 data 79 Check that .cvsignore -> .gitignore name translation works on updates as well. from :10 M 100644 :11 .gitignore property cvs-revision 15 .cvsignore 1.2 blob mark :13 data 44 And now for something completely different. commit refs/heads/master mark :14 committer foo 108400 +0000 data 38 The obligatory Monty Python reference from :12 M 100644 :13 README property cvs-revision 11 README 1.3 commit refs/heads/master mark :15 committer foo 109000 +0000 data 21 Testing file removal from :14 D doomed blob mark :16 data 58 The file 'doomed' should not be visible at this revision. commit refs/heads/master mark :17 committer foo 110200 +0000 data 36 Only README should be visible here. from :15 M 100644 :16 README property cvs-revision 11 README 1.4 blob mark :18 data 63 This is a superflous file, a sanity check for branch creation. commit refs/heads/master mark :19 committer foo 111400 +0000 data 52 Should not generate an extra fileop after branching from :17 M 100644 :18 superfluous property cvs-revision 16 superfluous 1.1 reset refs/tags/random from :19 reset refs/tags/samplebranch_root from :19 blob mark :20 data 38 This is alternate content for README. commit refs/heads/samplebranch mark :21 committer foo 112600 +0000 data 34 Do we get branch detection right? from :19 M 100644 :20 README property cvs-revision 15 README 1.4.2.1 blob mark :22 data 30 I'm back in the saddle again. commit refs/heads/master mark :23 committer foo 113800 +0000 data 44 This commit should alter the master branch. from :19 M 100644 :22 README property cvs-revision 11 README 1.5 reset refs/tags/illegal from :23 reset refs/heads/master from :23 reset refs/heads/samplebranch from :21 done cvs-fast-export-1.35/tests/QED.testrepo/0000775000175000017500000000000012435607267016310 5ustar esresrcvs-fast-export-1.35/tests/QED.testrepo/module/0000775000175000017500000000000012446065274017573 5ustar esresrcvs-fast-export-1.35/tests/QED.testrepo/module/QEXCHMAP.xml,v0000664000175000017500000003202212435607267021766 0ustar esresrhead 1.3; access; symbols RELEASE-V2013-01-14288:1.1.2.1.4.2.70.2 RELEASE-V2014-09-14268:1.1.2.1.4.4 RELEASE-V2014-09:1.1.2.1.4.4.0.12 RELEASE-V2014-04:1.1.2.1.4.4.0.8 RELEASE-V2013-01-14090:1.1.2.1.4.2.70.2 RELEASE-V2014-01:1.1.2.1.4.4.0.10 RELEASE-V2013-11:1.1.2.1.4.4.0.6 RELEASE-V2013-01-13318:1.1.2.1.4.2.70.2 RELEASE-V2013-10:1.1.2.1.4.4.0.4 RELEASE-V2013-01-13220:1.1.2.1.4.2.70.2 RELEASE-V2012-06:1.1.2.1.4.2.0.72 RELEASE-V2013-01-13183:1.1.2.1.4.2.70.2 RELEASE-V2013-07:1.1.2.1.4.4.0.2 RELEASE-V2013-01-13144:1.1.2.1.4.2.70.2 RELEASE-V2013-01-13064:1.1.2.1.4.2.70.1 RELEASE-V2013-01-13061:1.1.2.1.4.2 RELEASE-V2013-01:1.1.2.1.4.2.0.70 RELEASE-V2012-08:1.1.2.1.4.2.0.68 RELEASE-V2012-01:1.1.2.1.4.2.0.66 RELEASE-V2011-11:1.1.2.1.4.2.0.64 V2011-10-11308-QT3toQT4:1.1.2.1.4.2.0.62 RELEASE-V2011-10:1.1.2.1.4.2.0.60 RELEASE-V2011-07:1.1.2.1.4.2.0.58 TRAQS-BLOCKING:1.1.2.1.4.2.0.56 RELEASE-V2011-03-11093:1.1.2.1.4.2.0.54 RELEASE-V2011-03:1.1.2.1.4.2.0.52 RELEASE-V2-R14-11090:1.1.2.1.4.2.0.50 RELEASE-V2-R14-11083:1.1.2.1.4.2.0.48 RELEASE-V2-R14-11080:1.1.2.1.4.2.0.46 RELEASE-V2-R14-11076:1.1.2.1.4.2.0.44 RELEASE-V2-R14-11073:1.1.2.1.4.2.0.42 qedform-dev-branch:1.3.0.2 qedpoi-dev:1.1.2.1.4.2.0.40 RELEASE-V2-R14-11066:1.1.2.1.4.2.0.38 RELEASE-V2-R14-11049:1.1.2.1.4.2.0.36 RELEASE-V2-R14-11045:1.1.2.1.4.2.0.34 RELEASE-V2-R14-11031:1.1.2.1.4.2.0.32 QCONFIG-DB-TEST:1.1.2.1.4.2.0.30 RELEASE-V2-R14-11025:1.1.2.1.4.2.0.28 RELEASE-V2-R14-11021:1.1.2.1.4.2.0.26 RELEASE-V2-R14-11017:1.1.2.1.4.2.0.24 RELEASE-V2-R14-11014:1.1.2.1.4.2.0.22 RELEASE-V2-R14-11007:1.1.2.1.4.2.0.20 QCOMBO_MNEMONIC_TEST:1.1.2.1.4.2.0.18 RELEASE-V2-R14-10354:1.1.2.1.4.2.0.16 RELEASE-V2-R14-10343:1.1.2.1.4.2.0.14 RELEASE-V2-R14-10342:1.1.2.1.4.2.0.12 RELEASE-V2-R14-50C:1.1.2.1.4.1 RELEASE-V2-R14-10340:1.1.2.1.4.2.0.10 RELEASE-V2-R14-10335:1.1.2.1.4.2.0.8 RELEASE-V2-R14-10326:1.1.2.1.4.2.0.6 RELEASE-V2-R14-10315:1.1.2.1.4.2.0.4 RELEASE-V2-R14-10313:1.1.2.1.4.2.0.2 RELEASE-V2-R14-10299:1.1.2.1.4.1.0.70 RELEASE-V2-R14-10298:1.1.2.1.4.1.0.68 RELEASE-V2-R14-10296:1.1.2.1.4.1.0.66 RELEASE-V2-R14-10295:1.1.2.1.4.1.0.64 RELEASE-V2-R14-10291:1.1.2.1.4.1.0.62 RELEASE-V2-R14-10286:1.1.2.1.4.1.0.60 RELEASE-V2-R14-10285:1.1.2.1.4.1.0.58 RELEASE-V2-R14-10279:1.1.2.1.4.1.0.52 RELEASE-V2-R14-10273:1.1.2.1.4.1.0.56 RELEASE-V2-R14-51-10271:1.1.2.1.4.1.0.54 RELEASE-V2-R14-51-branch:1.1.2.1.4.1.0.50 RELEASE-V2-R14-10269:1.1.2.1.4.1.0.48 RELEASE-V2-R14-10267:1.1.2.1.4.1.0.46 RELEASE-V2-R14-10263:1.1.2.1.4.1.0.44 RELEASE-V2-R14-10253:1.1.2.1.4.1.0.42 RELEASE-V2-R14-10242:1.1.2.1.4.1.0.40 RELEASE-V2-R14-10238:1.1.2.1.4.1.0.38 RELEASE-V2-R14-10237:1.1.2.1.4.1.0.36 RELEASE-V2-R14-10236:1.1.2.1.4.1.0.34 RELEASE-V2-R14-10232:1.1.2.1.4.1.0.32 RELEASE-V2-R14-10231:1.1.2.1.4.1.0.30 RELEASE-V2-R14-10225:1.1.2.1.4.1.0.28 RELEASE-V2-R14-50-branch:1.1.2.1.4.1.0.26 RELEASE-V2-R14-10219:1.1.2.1.4.1.0.24 RELEASE-V2-R14-10218:1.1.2.1.4.1.0.22 RELEASE-V2-R14-10217:1.1.2.1.4.1.0.20 RELEASE-V2-R14-10216:1.1.2.1.4.1.0.18 RELEASE-V2-R14-10211:1.1.2.1.4.1.0.16 RELEASE-V2-R14-10210:1.1.2.1.4.1.0.14 RELEASE-V2-R14-10208:1.1.2.1.4.1.0.12 RELEASE-V2-R14-10203:1.1.2.1.4.1.0.10 RELEASE-V2-R14-10202:1.1.2.1.4.1.0.8 RELEASE-V2-R14-10197:1.1.2.1.4.1.0.6 RELEASE-V2-R14-10196:1.1.2.1.4.1.0.4 RELEASE-V2-R14-10169:1.1.2.1.4.1.0.2 RELEASE-V2-R14-48:1.1.2.1 ICS-PRE-MERGE-9:1.2 HBIT-QT4_5:1.2.0.6 RELEASE-V2-R14-45:1.1.2.1.0.16 ICS-PRE-MERGE-8:1.2 RELEASE-V2-R14-44:1.1.2.1.0.14 HBIT-CUSTOM-WIDGETS:1.2.0.4 HBIT-QT4:1.2.0.2 HBIT:1.1.2.1.0.12 RELEASE-V2-R14-43:1.1.2.1.0.10 RELEASE-V2-R14-42-branch:1.1.2.1.0.8 RELEASE-V2-R14-43-pre1:1.1.2.1.0.6 export2clientdv:1.1.2.1 RELEASE-V2-R14:1.1.2.1.0.4 RELEASE-V2-R12:1.1.2.1.0.2 RELEASE-V2-R11:1.1.0.2; locks; strict; comment @# @; 1.3 date 2010.04.05.16.47.10; author potesta; state Exp; branches; next 1.2; 1.2 date 2007.07.12.16.56.34; author qedcma; state Exp; branches; next 1.1; 1.1 date 2007.07.02.15.08.53; author campanel; state dead; branches 1.1.2.1; next ; 1.1.2.1 date 2007.07.02.15.08.53; author campanel; state Exp; branches 1.1.2.1.4.1; next ; 1.1.2.1.4.1 date 2010.02.01.19.20.29; author potesta; state Exp; branches 1.1.2.1.4.1.50.1 1.1.2.1.4.1.54.1; next 1.1.2.1.4.2; 1.1.2.1.4.2 date 2010.10.28.18.32.58; author caputo; state Exp; branches 1.1.2.1.4.2.70.1; next 1.1.2.1.4.3; commitid kVY79EOCzPZETeUu; 1.1.2.1.4.3 date 2013.03.04.23.05.38; author potesta; state Exp; branches; next 1.1.2.1.4.4; commitid t09I3LNikX7iPwGw; 1.1.2.1.4.4 date 2013.03.05.22.05.16; author potesta; state Exp; branches; next ; commitid HfXQoP1JbNQzsEGw; 1.1.2.1.4.1.50.1 date 2010.12.01.21.08.52; author caputo; state Exp; branches; next ; commitid HLknmbctG8knFCYu; 1.1.2.1.4.1.54.1 date 2010.12.01.21.10.06; author caputo; state Exp; branches; next ; commitid ZeBlwshZ8yfOFCYu; 1.1.2.1.4.2.70.1 date 2013.03.05.21.54.03; author caputo; state Exp; branches; next 1.1.2.1.4.2.70.2; commitid SWlB5OkWlGdFoEGw; 1.1.2.1.4.2.70.2 date 2013.03.07.21.09.31; author caputo; state Exp; branches; next ; commitid wPuUv9skTuHi5UGw; desc @@ 1.3 log @Ticket #2977. @ text @ yes yes yes yes no yes yes yes no yes yes yes yes yes yes yes yes yes -monotype-arial-medium-r-normal-*-15-*-*-*-*-*-iso8859-1 QblGrid::GRID_MODE Q2XMapExchForm yes 600 none /usr2/qedsys/qedExchangeXmap 0 Exchange Cross Reference Map QEXCHMAP-99 RESIZE_DYNAMIC QEXCHMAP 13 890 qbl QEXCHMAP 0 none none GhostWhite black #EFEBDE black #99CCFF black @ 1.2 log @Ticket #931 - Weekly merge No. 3 @ text @d25 1 d77 1 a77 1 gridHeaderFont="-adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1 log @file QEXCHMAP.xml was initially added on branch RELEASE-V2-R11. @ text @d1 81 @ 1.1.2.1 log @New config, view, form for Exchange crossmap. Ticket #940 @ text @a0 81 yes yes yes yes no yes yes yes no yes yes yes yes yes yes yes yes yes QblGrid::GRID_MODE Q2XMapExchForm yes 600 none /usr2/qedsys/qedExchangeXmap 0 Exchange Cross Reference Map QEXCHMAP-99 RESIZE_DYNAMIC QEXCHMAP 13 890 qbl QEXCHMAP 0 none none GhostWhite black #EFEBDE black #99CCFF black @ 1.1.2.1.4.1 log @Ticket #2895. Change grid column label fonts to bold and body to arial medium normal 15 using new fontName attribute. ~ @ text @a24 1 -monotype-arial-medium-r-normal-*-15-*-*-*-*-*-iso8859-1 d76 1 a76 1 gridHeaderFont="-monotype-arial-bold-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.1.4.1.54.1 log @Ticket #1945 - reverse grid config font changes, pending further review @ text @d25 1 d77 1 a77 1 gridHeaderFont="-adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.1.4.1.50.1 log @Ticket #1945 - reverse grid config font changes, pending further review @ text @d25 1 d77 1 a77 1 gridHeaderFont="-adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.1.4.2 log @Ticket #1945 - reverse grid config font changes, pending further review @ text @d25 1 d77 1 a77 1 gridHeaderFont="-adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.1.4.2.70.1 log @Ticket #5071 - merge grid config font changes to release @ text @d76 1 a76 1 gridHeaderFont="-adobe-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.1.4.2.70.2 log @Ticket #5071, #4852 - merge into release @ text @d79 1 a79 1 gridViewTabFont="-adobe-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.1.4.3 log @Ticket #5071: Change all grid column-label font weights to bold from medium leaving all other font attributes unchanged. @ text @d76 1 a76 1 gridHeaderFont="-adobe-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.1.4.4 log @Ticket #5071: Change all grid tab font weights to bold from medium leaving all other font attributes unchanged. Also various changes to the hard-close performance evaluation engine. @ text @d79 1 a79 1 gridViewTabFont="-adobe-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso8859-1" @ cvs-fast-export-1.35/tests/QED.testrepo/module/QGLMAPMORE.xml,v0000664000175000017500000003167612435607267022242 0ustar esresrhead 1.3; access; symbols RELEASE-V2013-01-14288:1.1.2.3.70.2 RELEASE-V2014-09-14268:1.1.2.5 RELEASE-V2014-09:1.1.2.5.0.12 RELEASE-V2014-04:1.1.2.5.0.8 RELEASE-V2013-01-14090:1.1.2.3.70.2 RELEASE-V2014-01:1.1.2.5.0.10 RELEASE-V2013-11:1.1.2.5.0.6 RELEASE-V2013-01-13318:1.1.2.3.70.2 RELEASE-V2013-10:1.1.2.5.0.4 RELEASE-V2013-01-13220:1.1.2.3.70.2 RELEASE-V2012-06:1.1.2.3.0.72 RELEASE-V2013-01-13183:1.1.2.3.70.2 RELEASE-V2013-07:1.1.2.5.0.2 RELEASE-V2013-01-13144:1.1.2.3.70.2 RELEASE-V2013-01-13064:1.1.2.3.70.1 RELEASE-V2013-01-13061:1.1.2.3 RELEASE-V2013-01:1.1.2.3.0.70 RELEASE-V2012-08:1.1.2.3.0.68 RELEASE-V2012-01:1.1.2.3.0.66 RELEASE-V2011-11:1.1.2.3.0.64 V2011-10-11308-QT3toQT4:1.1.2.3.0.62 RELEASE-V2011-10:1.1.2.3.0.60 RELEASE-V2011-07:1.1.2.3.0.58 TRAQS-BLOCKING:1.1.2.3.0.56 RELEASE-V2011-03-11093:1.1.2.3.0.54 RELEASE-V2011-03:1.1.2.3.0.52 RELEASE-V2-R14-11090:1.1.2.3.0.50 RELEASE-V2-R14-11083:1.1.2.3.0.48 RELEASE-V2-R14-11080:1.1.2.3.0.46 RELEASE-V2-R14-11076:1.1.2.3.0.44 RELEASE-V2-R14-11073:1.1.2.3.0.42 qedform-dev-branch:1.3.0.2 qedpoi-dev:1.1.2.3.0.40 RELEASE-V2-R14-11066:1.1.2.3.0.38 RELEASE-V2-R14-11049:1.1.2.3.0.36 RELEASE-V2-R14-11045:1.1.2.3.0.34 RELEASE-V2-R14-11031:1.1.2.3.0.32 QCONFIG-DB-TEST:1.1.2.3.0.30 RELEASE-V2-R14-11025:1.1.2.3.0.28 RELEASE-V2-R14-11021:1.1.2.3.0.26 RELEASE-V2-R14-11017:1.1.2.3.0.24 RELEASE-V2-R14-11014:1.1.2.3.0.22 RELEASE-V2-R14-11007:1.1.2.3.0.20 QCOMBO_MNEMONIC_TEST:1.1.2.3.0.18 RELEASE-V2-R14-10354:1.1.2.3.0.16 RELEASE-V2-R14-10343:1.1.2.3.0.14 RELEASE-V2-R14-10342:1.1.2.3.0.12 RELEASE-V2-R14-50C:1.1.2.2 RELEASE-V2-R14-10340:1.1.2.3.0.10 RELEASE-V2-R14-10335:1.1.2.3.0.8 RELEASE-V2-R14-10326:1.1.2.3.0.6 RELEASE-V2-R14-10315:1.1.2.3.0.4 RELEASE-V2-R14-10313:1.1.2.3.0.2 RELEASE-V2-R14-10299:1.1.2.2.0.70 RELEASE-V2-R14-10298:1.1.2.2.0.68 RELEASE-V2-R14-10296:1.1.2.2.0.66 RELEASE-V2-R14-10295:1.1.2.2.0.64 RELEASE-V2-R14-10291:1.1.2.2.0.62 RELEASE-V2-R14-10286:1.1.2.2.0.60 RELEASE-V2-R14-10285:1.1.2.2.0.58 RELEASE-V2-R14-10279:1.1.2.2.0.52 RELEASE-V2-R14-10273:1.1.2.2.0.56 RELEASE-V2-R14-51-10271:1.1.2.2.0.54 RELEASE-V2-R14-51-branch:1.1.2.2.0.50 RELEASE-V2-R14-10269:1.1.2.2.0.48 RELEASE-V2-R14-10267:1.1.2.2.0.46 RELEASE-V2-R14-10263:1.1.2.2.0.44 RELEASE-V2-R14-10253:1.1.2.2.0.42 RELEASE-V2-R14-10242:1.1.2.2.0.40 RELEASE-V2-R14-10238:1.1.2.2.0.38 RELEASE-V2-R14-10237:1.1.2.2.0.36 RELEASE-V2-R14-10236:1.1.2.2.0.34 RELEASE-V2-R14-10232:1.1.2.2.0.32 RELEASE-V2-R14-10231:1.1.2.2.0.30 RELEASE-V2-R14-50B:1.1.2.2 RELEASE-V2-R14-10225:1.1.2.2.0.28 RELEASE-V2-R14-50-branch:1.1.2.2.0.26 RELEASE-V2-R14-10219:1.1.2.2.0.24 RELEASE-V2-R14-10218:1.1.2.2.0.22 RELEASE-V2-R14-10217:1.1.2.2.0.20 RELEASE-V2-R14-10216:1.1.2.2.0.18 RELEASE-V2-R14-10211:1.1.2.2.0.16 RELEASE-V2-R14-10210:1.1.2.2.0.14 RELEASE-V2-R14-10208:1.1.2.2.0.12 RELEASE-V2-R14-10203:1.1.2.2.0.10 RELEASE-V2-R14-10202:1.1.2.2.0.8 RELEASE-V2-R14-10197:1.1.2.2.0.6 RELEASE-V2-R14-10196:1.1.2.2.0.4 RELEASE-V2-R14-10169:1.1.2.2.0.2 RELEASE-V2-R14-50-bad:1.1.2.2 RELEASE-V2-R14-48:1.1.2.1 ICS-PRE-MERGE-9:1.2 HBIT-QT4_5:1.2.0.4 RELEASE-V2-R14-45:1.1.2.1.0.14 ICS-PRE-MERGE-8:1.2 RELEASE-V2-R14-44:1.1.2.1.0.12 RELEASE-V2-R14-42E:1.1.2.1 HBIT-CUSTOM-WIDGETS:1.2.0.2 HBIT:1.1.2.1.0.10 RELEASE-V2-R14-43:1.1.2.1.0.8 RELEASE-V2-R14-42-branch:1.1.2.1.0.6 RELEASE-V2-R14-43-pre1:1.1.2.1.0.4 RELEASE-V2-R11:1.1.2.1.0.2 RELEASE-V2-R14:1.1.0.2; locks; strict; comment @# @; 1.3 date 2010.04.05.16.47.10; author potesta; state Exp; branches; next 1.2; 1.2 date 2008.09.10.19.57.22; author caputo; state Exp; branches; next 1.1; 1.1 date 2008.08.14.19.41.42; author potesta; state dead; branches 1.1.2.1; next ; 1.1.2.1 date 2008.08.14.19.41.42; author potesta; state Exp; branches; next 1.1.2.2; 1.1.2.2 date 2010.02.01.19.20.30; author potesta; state Exp; branches 1.1.2.2.50.1 1.1.2.2.54.1; next 1.1.2.3; 1.1.2.3 date 2010.10.28.18.32.58; author caputo; state Exp; branches 1.1.2.3.70.1; next 1.1.2.4; commitid kVY79EOCzPZETeUu; 1.1.2.4 date 2013.03.04.23.05.38; author potesta; state Exp; branches; next 1.1.2.5; commitid t09I3LNikX7iPwGw; 1.1.2.5 date 2013.03.05.22.05.16; author potesta; state Exp; branches; next ; commitid HfXQoP1JbNQzsEGw; 1.1.2.2.50.1 date 2010.12.01.21.08.52; author caputo; state Exp; branches; next ; commitid HLknmbctG8knFCYu; 1.1.2.2.54.1 date 2010.12.01.21.10.06; author caputo; state Exp; branches; next ; commitid ZeBlwshZ8yfOFCYu; 1.1.2.3.70.1 date 2013.03.05.21.54.03; author caputo; state Exp; branches; next 1.1.2.3.70.2; commitid SWlB5OkWlGdFoEGw; 1.1.2.3.70.2 date 2013.03.07.21.09.31; author caputo; state Exp; branches; next ; commitid wPuUv9skTuHi5UGw; desc @@ 1.3 log @Ticket #2977. @ text @ yes yes yes no yes yes yes no yes no yes yes yes no yes yes yes yes yes -monotype-arial-medium-r-normal-*-15-*-*-*-*-*-iso8859-1 QblGrid::TREE_MODE QGLMAPMOREForm no 500 none /usr2/qedsys/qgl/qgl_accts.* 0 Custom G/L-Mapping for Pools QGLMAP++-99 STRING RESIZE_DYNAMIC QGLMAPMOREVIEW yes 18 740 qbl Q2GLMAPMORE 0 none none GhostWhite black #EFEBDE black #99CCFF black @ 1.2 log @Ticket #931 - merge from RELEASE-V2-R14 branch (PREPARE-ICS-MERGE-7 tag) @ text @d26 1 d80 1 a80 1 gridHeaderFont="-adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1 log @file QGLMAPMORE.xml was initially added on branch RELEASE-V2-R14. @ text @d1 84 @ 1.1.2.1 log @Ticket #1621 - New table edit grid for Michigan's custom G/L tag-on accounts (see qgl_accts.mi.s and q_client.jrnls.mi(.new). @ text @a0 84 yes yes yes no yes yes yes no yes no yes yes yes no yes yes yes yes yes QblGrid::TREE_MODE QGLMAPMOREForm no 500 none /usr2/qedsys/qgl/qgl_accts.* 0 Custom G/L-Mapping for Pools QGLMAP++-99 STRING RESIZE_DYNAMIC QGLMAPMOREVIEW yes 18 740 qbl Q2GLMAPMORE 0 none none GhostWhite black #EFEBDE black #99CCFF black @ 1.1.2.2 log @Ticket #2895. Change grid column label fonts to bold and body to arial medium normal 15 using new fontName attribute. ~ @ text @a25 1 -monotype-arial-medium-r-normal-*-15-*-*-*-*-*-iso8859-1 d79 1 a79 1 gridHeaderFont="-monotype-arial-bold-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.2.54.1 log @Ticket #1945 - reverse grid config font changes, pending further review @ text @d26 1 d80 1 a80 1 gridHeaderFont="-adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.2.50.1 log @Ticket #1945 - reverse grid config font changes, pending further review @ text @d26 1 d80 1 a80 1 gridHeaderFont="-adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.3 log @Ticket #1945 - reverse grid config font changes, pending further review @ text @d26 1 d80 1 a80 1 gridHeaderFont="-adobe-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.3.70.1 log @Ticket #5071 - merge grid config font changes to release @ text @d79 1 a79 1 gridHeaderFont="-adobe-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.3.70.2 log @Ticket #5071, #4852 - merge into release @ text @d82 1 a82 1 gridViewTabFont="-adobe-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.4 log @Ticket #5071: Change all grid column-label font weights to bold from medium leaving all other font attributes unchanged. @ text @d79 1 a79 1 gridHeaderFont="-adobe-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso8859-1" @ 1.1.2.5 log @Ticket #5071: Change all grid tab font weights to bold from medium leaving all other font attributes unchanged. Also various changes to the hard-close performance evaluation engine. @ text @d82 1 a82 1 gridViewTabFont="-adobe-helvetica-bold-r-normal-*-12-*-*-*-*-*-iso8859-1" @ cvs-fast-export-1.35/tests/QED.testrepo/CVSROOT/0000775000175000017500000000000012624160405017433 5ustar esresrcvs-fast-export-1.35/tests/QED.testrepo/CVSROOT/.gitignore0000664000175000017500000000002112435607267021430 0ustar esresrhistory val-tags cvs-fast-export-1.35/tests/QED.testrepo/CVSROOT/history0000664000175000017500000000010412446065274021064 0ustar esresrO54986abc|esr|~/public_html/cvs-fast-export/tests/*0|module||module cvs-fast-export-1.35/tests/oldhead.chk0000664000175000017500000000767612536065263016136 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 61 ChangeLog,v content for 1.1 a1 1 ChangeLog,v content for 1.8 commit refs/heads/master mark :2 committer jimb 101200 +0000 data 33 da28248b4ec75efbe0ba7461142ed60d M 100644 :1 ChangeLog M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 14 ChangeLog 1.1 blob mark :3 data 65 ChangeLog,v content for 1.1.1.1 a1 1 ChangeLog,v content for 1.8 commit refs/heads/import-1.1.1 mark :4 committer jimb 102400 +0000 data 33 fa95f7afd9fe5cfc4158bb1628bddeee from :2 M 100644 :3 ChangeLog property cvs-revision 18 ChangeLog 1.1.1.1 blob mark :5 data 61 ChangeLog,v content for 1.2 a1 1 ChangeLog,v content for 1.8 commit refs/heads/master mark :6 committer roland 103600 +0000 data 33 b72e5e615d7c042281459b7c17245684 from :2 M 100644 :5 ChangeLog property cvs-revision 14 ChangeLog 1.2 blob mark :7 data 61 ChangeLog,v content for 1.3 a1 1 ChangeLog,v content for 1.8 commit refs/heads/master mark :8 committer jimb 104800 +0000 data 33 585e3addfd28851ce8284bca18e152df from :6 M 100644 :7 ChangeLog property cvs-revision 14 ChangeLog 1.3 blob mark :9 data 61 ChangeLog,v content for 1.4 a1 1 ChangeLog,v content for 1.8 commit refs/heads/master mark :10 committer roland 106000 +0000 data 33 8cf8463b34caa8ac871a52d5dd7ad1ef from :8 M 100644 :9 ChangeLog property cvs-revision 14 ChangeLog 1.4 blob mark :11 data 61 ChangeLog,v content for 1.5 a1 1 ChangeLog,v content for 1.8 commit refs/heads/master mark :12 committer noel 107200 +0000 data 33 460616d6dc880cf30442b521ce20e040 from :10 M 100644 :11 ChangeLog property cvs-revision 14 ChangeLog 1.5 blob mark :13 data 61 ChangeLog,v content for 1.6 a1 1 ChangeLog,v content for 1.8 commit refs/heads/master mark :14 committer jimb 108400 +0000 data 33 585e3addfd28851ce8284bca18e152df from :12 M 100644 :13 ChangeLog property cvs-revision 14 ChangeLog 1.6 blob mark :15 data 61 ChangeLog,v content for 1.7 a1 1 ChangeLog,v content for 1.8 commit refs/heads/master mark :16 committer jimb 109600 +0000 data 33 585e3addfd28851ce8284bca18e152df from :14 M 100644 :15 ChangeLog property cvs-revision 14 ChangeLog 1.7 blob mark :17 data 38 d1 1 a1 1 ChangeLog,v content for 1.8 commit refs/heads/master mark :18 committer kingdon 110800 +0000 data 33 efd85ec997fe32634876c4d0172436fe from :16 M 100644 :17 ChangeLog property cvs-revision 14 ChangeLog 1.8 blob mark :19 data 65 ChangeLog,v content for 1.1.1.2 a1 1 ChangeLog,v content for 1.8 commit refs/heads/import-1.1.1 mark :20 committer jimb 112000 +0000 data 33 0eacecf79eb28594ee63e3907e762b40 from :4 M 100644 :19 ChangeLog property cvs-revision 18 ChangeLog 1.1.1.2 blob mark :21 data 65 ChangeLog,v content for 1.1.1.3 a1 1 ChangeLog,v content for 1.8 commit refs/heads/import-1.1.1 mark :22 committer jimb 113200 +0000 data 33 f5048cdd5b80e1f85ec0582695a20db6 from :20 M 100644 :21 ChangeLog property cvs-revision 18 ChangeLog 1.1.1.3 blob mark :23 data 30 Makefile.am,v content for 1.1 commit refs/heads/master mark :24 committer dprice 114400 +0000 data 33 da091809da59e576ff757e9779ed1821 from :18 M 100644 :23 Makefile.am property cvs-revision 16 Makefile.am 1.1 blob mark :25 data 30 Makefile.am,v content for 1.2 commit refs/heads/master mark :26 committer dprice 115600 +0000 data 33 72b08886805045542b2653782b7f52f0 from :24 M 100644 :25 Makefile.am property cvs-revision 16 Makefile.am 1.2 blob mark :27 data 34 Makefile.am,v content for 1.1.1.1 commit refs/heads/import-1.1.1 mark :28 committer dprice 116800 +0000 data 33 adec3217e3975f36407dbf470ddaf5e9 from :22 M 100644 :27 Makefile.am property cvs-revision 20 Makefile.am 1.1.1.1 reset refs/heads/master from :26 reset refs/heads/import-1.1.1 from :28 done cvs-fast-export-1.35/tests/hashsymbol,v0000664000175000017500000000166612444307732016374 0ustar esresrhead 1.1; branch 1.1.1; access; symbols amiga-version#621:1.1.1.1 amiga-release:1.1.1 netbsd-0-9-patch-001:1.1.1.1 netbsd-0-9-RELEASE:1.1.1.1 netbsd-0-9-BETA:1.1.1.1 netbsd-0-9-ALPHA2:1.1.1.1 netbsd-0-9-ALPHA:1.1.1.1 netbsd-0-9:1.1.1.1.0.2 netbsd-0-9-base:1.1.1.1 amiga_version_390:1.1.1.1 mw_amiga_machdep_merge:1.1.1; locks; strict; comment @# Reduced master from NetBSD containing pound-sign in a symbol name@; 1.1 date 93.07.05.19.19.40; author mw; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 93.07.05.19.19.41; author mw; state Exp; branches; next 1.1.1.2; 1.1.1.2 date 94.02.02.00.24.26; author mycroft; state dead; branches; next ; desc @@ 1.1 log @da28248b4ec75efbe0ba7461142ed60d @ text @hashsymbol content for 1.1 @ 1.1.1.1 log @f8a1b63b883ce97d3c94a35c52e5f57a @ text @d1 1 a1 1 hashsymbol content for 1.1.1.1 @ 1.1.1.2 log @de54d576de51109167df624abae26024 @ text @d1 1 a1 1 hashsymbol content for 1.1.1.2 @ cvs-fast-export-1.35/tests/twobranch.chk0000664000175000017500000000311512536065263016505 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 46 The quick brown fox jumped over the lazy dog. commit refs/heads/master mark :2 committer foo 101200 +0000 data 24 This is a sample commit M 100644 :1 README M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 11 README 1.1 reset refs/tags/samplebranch_root from :2 blob mark :3 data 70 Now is the time for all good men to come to the aid of their country. commit refs/heads/samplebranch mark :4 committer foo 102400 +0000 data 30 This is another sample commit from :2 M 100644 :3 README property cvs-revision 15 README 1.1.2.1 blob mark :5 data 44 And now for something completely different. commit refs/heads/master mark :6 committer foo 103600 +0000 data 38 The obligatory Monty Python reference from :2 M 100644 :5 README property cvs-revision 11 README 1.2 blob mark :7 data 35 This is random content for README. commit refs/heads/samplebranch mark :8 committer foo 104800 +0000 data 50 We will put the dump theshold before this commit. from :4 M 100644 :7 README property cvs-revision 15 README 1.1.2.2 blob mark :9 data 30 I'm back in the saddle again. commit refs/heads/master mark :10 committer foo 106000 +0000 data 44 This commit should alter the master branch. from :6 M 100644 :9 README property cvs-revision 11 README 1.3 reset refs/heads/master from :10 reset refs/heads/samplebranch from :8 done cvs-fast-export-1.35/tests/access.chk0000664000175000017500000000277312624620213015756 0ustar esresrblob mark :1 data 1074 static const char cexe_t_c[] = "@(#)$Id$"; /******************************************************************** * * Copyright (C) 1985-2013 John E. Wulff * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. * * For more information about this program, or for information on how * to contact the author, see the README file * * cexe_t.c * template for cexe.c to bootstrap icr and ict * if cexe.c does not exist * *******************************************************************/ #include #include #include "icc.h" #include "comp.h" #if INT_MAX == 32767 && defined (LONG16) long #else int #endif iC_exec(int iC_indx, iC_Gt * iC_gf) { fflush(iC_outFP); fprintf(iC_errFP, "\n*** Error: cexe.c: does not support arithmetic expressions yet.\n" "*** Rebuild compilers using '%s -c -%sO%o %s; m -rt'\n" , iC_progname, iC_gflag ? "g" : "", iC_optimise, inpNM); iC_quit(SIGUSR1); return 0; /* never gets here */ } /* iC_exec */ commit refs/heads/master mark :2 committer jw 1378801907 +0000 data 63 use cexe_t.c as a template for cexe.c to bootstrap icr and ict M 100644 :1 access M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end reset refs/heads/master from :2 done cvs-fast-export-1.35/tests/hack2.tst0000664000175000017500000000162312446600012015540 0ustar esresr#!/usr/bin/env python ## Second example from the Hacking Guide import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.CVSRepository("hack2.repo") repo.init() repo.module("module") co = repo.checkout("module", "hack2.checkout") co.write("foo.c", "The quick brown fox jumped over the lazy dog.\n") co.add("foo.c") co.write("bar.c", "Not an obfuscated C contest entry.\n") co.add("bar.c") co.commit("First commit") co.write("bar.c", "The world will little note, nor long remember...\n") co.commit("Second commit") co.write("foo.c", "And now for something completely different.\n") co.write("bar.c", "One is dead, one is mad, and I have forgotten.\n") co.commit("Third commit") co.branch("alternate") co.write("foo.c", "Ceci n'est pas un sourcefile.\n") co.write("bar.c", "C'est magnifique, mais ce n'est pas la source code.\n") co.commit("Fourth commit") repo.cleanup() # end cvs-fast-export-1.35/tests/at.tst0000664000175000017500000000062512446577577015212 0ustar esresr#!/usr/bin/env python ## Verify parsing of escaped at on final line import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.CVSRepository("at.repo") repo.init() repo.module("module") co = repo.checkout("module", "at.checkout") co.write("README", "The quick brown fox jumped @t the lazy dog.") co.add("README") co.commit("This is a sample commit") repo.cleanup() # end cvs-fast-export-1.35/tests/t9605.py0000664000175000017500000000254312446577532015203 0ustar esresr#!/usr/bin/env python ## Testing for correct patchset estimation # Structure of the test cvs repository # #Import of a trivial CVS repository fails due to a cvsps bug. Given the #following series of commits: # # timestamp a b c message # ------------------- --- --- --- ------- # 2012/12/12 21:09:39 1.1 changes are done # 2012/12/12 21:09:44 1.1 changes # 2012/12/12 21:09:46 1.2 changes # 2012/12/12 21:09:50 1.1 1.3 changes are done # #cvsps mangles the commit ordering (edited for brevity): # # --------------------- # PatchSet 1 # Date: 2012/12/12 15:09:39 # Log: # changes are done # # Members: # a:INITIAL->1.1 # b:INITIAL->1.1 # c:1.2->1.3 # # --------------------- # PatchSet 2 # Date: 2012/12/12 15:09:44 # Log: # changes # # Members: # c:INITIAL->1.1 # # --------------------- # PatchSet 3 # Date: 2012/12/12 15:09:46 # Log: # changes # # Members: # c:1.1->1.2 # #This is seen in cvsps versions 2.x and up through at least 3.7. # # Reported by Chris Rorvick. import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") cc = testlifter.ConvertComparison(stem="t9605", module="module") cc.repo.retain = ("-k" in sys.argv[1:]) cc.compare_tree("branch", "master", True) cc.cleanup() cvs-fast-export-1.35/tests/twotag.tst0000664000175000017500000000272512446601177016076 0ustar esresr#!/usr/bin/env python ## A repo with identical tags attached to different changesets import sys, testlifter, time testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.RCSRepository("twotag.repo") repo.init() repo.add("tweedledum") repo.add("tweedledee") # These two file commits should form a clique repo.checkout("tweedledum") repo.checkout("tweedledee") repo.write("tweedledum", "The quick brown fox jumped over the lazy dog.\n") repo.write("tweedledee", "Alve bazige froulju wachtsje op dyn komst.\n") repo.checkin("tweedledum", "An example first checkin") repo.checkin("tweedledee", "An example first checkin") repo.tag("tweedledum", "FUBAR") # Without this, where the tag is finally assigned might be random, # because the two commit cliques could have the same timestamp. In that # case, when cvs-fast-export is using a threaded scheduler, the arrival # order of the two commits will be random and so will the imputed # order of the tags. # # Yes, this is a coward's way out. It will have to do until we invent a # way to total-order the tags. # time.sleep(1) # These two file checkins should also form a clique repo.checkout("tweedledum") repo.checkout("tweedledee") repo.write("tweedledum", "Portez ce vieux whisky au juge blond qui fume.\n") repo.write("tweedledee", "Lynx c.q. vos prikt bh: dag zwemjuf!.\n") repo.checkin("tweedledum", "An example second checkin") repo.checkin("tweedledee", "An example second checkin") repo.tag("tweedledee", "FUBAR") # end cvs-fast-export-1.35/tests/hack3.chk0000664000175000017500000000330412536065263015507 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 35 Not an obfuscated C contest entry. blob mark :2 data 46 The quick brown fox jumped over the lazy dog. commit refs/heads/master mark :3 committer foo 101800 +0000 data 13 First commit M 100644 :1 bar.c M 100644 :2 foo.c M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 20 bar.c 1.1 foo.c 1.1 blob mark :4 data 49 The world will little note, nor long remember... commit refs/heads/master mark :5 committer foo 103000 +0000 data 14 Second commit from :3 M 100644 :4 bar.c property cvs-revision 10 bar.c 1.2 blob mark :6 data 47 One is dead, one is mad, and I have forgotten. blob mark :7 data 44 And now for something completely different. commit refs/heads/master mark :8 committer foo 104800 +0000 data 13 Third commit from :5 M 100644 :6 bar.c M 100644 :7 foo.c property cvs-revision 20 bar.c 1.3 foo.c 1.2 reset refs/tags/alternate_root from :8 blob mark :9 data 30 Ceci n'est pas un sourcefile. commit refs/heads/alternate mark :10 committer foo 106000 +0000 data 14 Fourth commit from :8 M 100644 :9 foo.c property cvs-revision 14 foo.c 1.2.2.1 blob mark :11 data 36 ...did gyre and gimble in the wabe. blob mark :12 data 38 Twas brillig, and the slithy toves... commit refs/heads/alternate mark :13 committer foo 107800 +0000 data 13 Fifth commit from :10 M 100644 :11 bar.c M 100644 :12 foo.c property cvs-revision 28 bar.c 1.3.2.1 foo.c 1.2.2.2 reset refs/heads/master from :8 reset refs/heads/alternate from :13 done cvs-fast-export-1.35/tests/daughterbranch.repo/0000775000175000017500000000000012621357720017751 5ustar esresrcvs-fast-export-1.35/tests/daughterbranch.repo/module/0000775000175000017500000000000012621357730021237 5ustar esresrcvs-fast-export-1.35/tests/daughterbranch.repo/module/README,v0000444000175000017500000000046012621357726022362 0ustar esresrhead 1.1; access; symbols samplebranch:1.1.0.2 samplebranch_root:1.1; locks; strict; comment @# @; 1.1 date 2015.11.13.13.04.18; author esr; state Exp; branches; next ; commitid 1005645DFD20DBCD970; desc @@ 1.1 log @This is a sample commit @ text @The quick brown fox jumped over the lazy dog. @ cvs-fast-export-1.35/tests/daughterbranch.repo/module/feedyourhead,v0000444000175000017500000000044312621357730024065 0ustar esresrhead 1.1; access; symbols; locks; strict; comment @# @; 1.1 date 2015.11.13.13.04.24; author esr; state Exp; branches; next ; commitid 1005645DFD80DCC47C1; desc @@ 1.1 log @This file should not appear on the daughter branch @ text @I date myself with a Jefferson Airplane reference. @ cvs-fast-export-1.35/tests/daughterbranch.repo/module/superfluous,v0000444000175000017500000000053512621357726024024 0ustar esresrhead 1.1; access; symbols samplebranch:1.1.0.2 samplebranch_root:1.1; locks; strict; comment @# @; 1.1 date 2015.11.13.13.04.21; author esr; state Exp; branches; next ; commitid 1005645DFD50DC05A96; desc @@ 1.1 log @Should not generate an extra fileop after branching @ text @This is a superflous file, a sanity check for branch creation. @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/0000775000175000017500000000000012624160405021103 5ustar esresrcvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#postadmin0000664000175000017500000000171212621357720023153 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/cvswrappers0000444000175000017500000000113212621357720023403 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/loginfo,v0000444000175000017500000000415512621357720022733 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#checkoutlist0000664000175000017500000000075712621357720023666 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#cvswrappers0000664000175000017500000000113212621357720023530 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/val-tags0000666000175000017500000000004312621357726022556 0ustar esresrsamplebranch_root y samplebranch y cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/postadmin0000444000175000017500000000171212621357720023026 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#rcsinfo0000664000175000017500000000121112621357720022612 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/verifymsg,v0000444000175000017500000000334512621357720023311 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/checkoutlist0000444000175000017500000000075712621357720023541 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/commitinfo,v0000444000175000017500000000275412621357720023445 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#postwatch0000664000175000017500000000175512621357720023200 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/posttag,v0000444000175000017500000000420612621357720022754 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#preproxy0000664000175000017500000000234312621357720023046 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/taginfo0000444000175000017500000000437712621357720022471 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#postproxy0000664000175000017500000000220112621357720023236 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/verifymsg0000444000175000017500000000277112621357720023051 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/history0000666000175000017500000000054312621357730022541 0ustar esresrO5645dfd0|esr|~/public_html/cvs-fast-export/tests/*0|module||module A5645dfd2|esr|~/public_html/cvs-fast-export/tests/daughterbranch.checkout|module|1.1|README A5645dfd5|esr|~/public_html/cvs-fast-export/tests/daughterbranch.checkout|module|1.1|superfluous A5645dfd8|esr|~/public_html/cvs-fast-export/tests/daughterbranch.checkout|module|1.1|feedyourhead cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/postwatch,v0000444000175000017500000000233112621357720023304 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/postadmin,v0000444000175000017500000000226612621357720023275 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/config0000444000175000017500000001004712621357720022276 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/config,v0000444000175000017500000001042312621357720022536 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/rcsinfo,v0000444000175000017500000000156512621357720022743 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/loginfo0000444000175000017500000000360112621357720022464 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/commitinfo0000444000175000017500000000240012621357720023167 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/posttag0000444000175000017500000000363212621357720022514 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/postproxy,v0000444000175000017500000000255512621357720023367 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/postproxy0000444000175000017500000000220112621357720023111 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/rcsinfo0000444000175000017500000000121112621357720022465 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/preproxy0000444000175000017500000000234312621357720022721 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/modules,v0000444000175000017500000000244512621357720022746 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#config0000664000175000017500000001004712621357720022423 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/notify0000444000175000017500000000163412621357720022343 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/checkoutlist,v0000444000175000017500000000133312621357720023772 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#commitinfo0000664000175000017500000000240012621357720023314 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/Emptydir/0000775000175000017500000000000012621357720022705 5ustar esresrcvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/notify,v0000444000175000017500000000221012621357720022574 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#taginfo0000664000175000017500000000437712621357720022616 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#verifymsg0000664000175000017500000000277112621357720023176 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/postwatch0000444000175000017500000000175512621357720023053 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/cvswrappers,v0000444000175000017500000000150612621357720023652 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/preproxy,v0000444000175000017500000000271712621357720023170 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/taginfo,v0000444000175000017500000000475312621357720022731 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.16; author esr; state Exp; branches; next ; commitid 1005645DFD00DB634AD; desc @@ 1.1 log @initial checkin@ text @# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#notify0000664000175000017500000000163412621357720022470 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/modules0000444000175000017500000000207112621357720022477 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#posttag0000664000175000017500000000363212621357720022641 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#modules0000664000175000017500000000207112621357720022624 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/daughterbranch.repo/CVSROOT/.#loginfo0000664000175000017500000000360112621357720022611 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/basic.chk0000664000175000017500000000101412536065263015573 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 46 The quick brown fox jumped over the lazy dog. commit refs/heads/master mark :2 committer foo 101200 +0000 data 24 This is a sample commit M 100644 :1 README M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 11 README 1.1 reset refs/heads/master from :2 done cvs-fast-export-1.35/tests/postbranch.chk0000664000175000017500000000212112536065263016655 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 14 random content commit refs/heads/master mark :2 committer foo 101200 +0000 data 5 root M 100644 :1 f M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 6 f 1.1 reset refs/tags/br_0 from :2 blob mark :3 data 24 different random content commit refs/heads/master mark :4 committer foo 102400 +0000 data 16 commit in trunk from :2 M 100644 :3 f property cvs-revision 6 f 1.2 blob mark :5 data 24 even more random content commit refs/heads/br mark :6 committer foo 103600 +0000 data 13 commit in br from :2 M 100644 :5 f property cvs-revision 10 f 1.1.2.1 blob mark :7 data 34 even more different random content commit refs/heads/master mark :8 committer foo 104800 +0000 data 23 second commit in trunk from :4 M 100644 :7 f property cvs-revision 6 f 1.3 reset refs/heads/master from :8 reset refs/heads/br from :6 done cvs-fast-export-1.35/tests/deadbranch,v0000664000175000017500000000307312435607267016276 0ustar esresrhead 1.7; access; symbols; locks; strict; comment @# Master from NetBSD with a branch entirely of dead revisions@; 1.5 date 97.04.06.08.41.11; author cgd; state dead; branches; next 1.4; 1.4 date 97.01.24.01.53.00; author cgd; state dead; branches 1.4.2.1; next 1.3; 1.3 date 97.01.16.01.20.24; author cgd; state dead; branches; next 1.2; 1.2 date 96.11.06.23.09.13; author cgd; state dead; branches; next 1.1; 1.1 date 95.11.23.02.41.18; author cgd; state dead; branches; next ; 1.4.2.1 date 97.06.01.04.14.17; author cgd; state dead; branches; next 1.4.2.2; 1.4.2.2 date 97.07.22.05.37.40; author cgd; state dead; branches; next ; desc @@ 1.5 log @4a486f01d33c531a71545e0fa34fc4e3 @ text @sys/arch/alpha/stand/installboot.old/Attic/Makefile,v content for 1.5 @ 1.4 log @67e343d3c0df8fd8230b555776ef6aa5 @ text @d1 1 a1 1 sys/arch/alpha/stand/installboot.old/Attic/Makefile,v content for 1.4 @ 1.4.2.1 log @5873d8ab9a7d4adce9ee8f8e70cfd164 @ text @d1 1 a1 1 sys/arch/alpha/stand/installboot.old/Attic/Makefile,v content for 1.4.2.1 @ 1.4.2.2 log @67c541812e46c3924d0b70dab4015ce1 @ text @d1 1 a1 1 sys/arch/alpha/stand/installboot.old/Attic/Makefile,v content for 1.4.2.2 @ 1.3 log @d10b914da055c3e88c3f2d497211d6f0 @ text @d1 1 a1 1 sys/arch/alpha/stand/installboot.old/Attic/Makefile,v content for 1.3 @ 1.2 log @02c3c00d1b01b59dc1df89a22fd85ed7 @ text @d1 1 a1 1 sys/arch/alpha/stand/installboot.old/Attic/Makefile,v content for 1.2 @ 1.1 log @9a8494f26b19ec9b6d911864f788627f @ text @d1 1 a1 1 sys/arch/alpha/stand/installboot.old/Attic/Makefile,v content for 1.1 @ cvs-fast-export-1.35/tests/hack2.repo/0000775000175000017500000000000012621357761015765 5ustar esresrcvs-fast-export-1.35/tests/hack2.repo/module/0000775000175000017500000000000012621357774017256 5ustar esresrcvs-fast-export-1.35/tests/hack2.repo/module/foo.c,v0000444000175000017500000000124212621357774020442 0ustar esresrhead 1.2; access; symbols alternate:1.2.0.2 alternate_root:1.2; locks; strict; comment @ * @; 1.2 date 2015.11.13.13.04.57; author esr; state Exp; branches 1.2.2.1; next 1.1; commitid 1005645DFF90EAD0053; 1.1 date 2015.11.13.13.04.51; author esr; state Exp; branches; next ; commitid 1005645DFF30EA8B40E; 1.2.2.1 date 2015.11.13.13.05.00; author esr; state Exp; branches; next ; commitid 1005645DFFC0EB68700; desc @@ 1.2 log @Third commit @ text @And now for something completely different. @ 1.2.2.1 log @Fourth commit @ text @d1 1 a1 1 Ceci n'est pas un sourcefile. @ 1.1 log @First commit @ text @d1 1 a1 1 The quick brown fox jumped over the lazy dog. @ cvs-fast-export-1.35/tests/hack2.repo/module/bar.c,v0000444000175000017500000000156612621357774020434 0ustar esresrhead 1.3; access; symbols alternate:1.3.0.2 alternate_root:1.3; locks; strict; comment @ * @; 1.3 date 2015.11.13.13.04.57; author esr; state Exp; branches 1.3.2.1; next 1.2; commitid 1005645DFF90EAD0053; 1.2 date 2015.11.13.13.04.54; author esr; state Exp; branches; next 1.1; commitid 1005645DFF60EAAE9C7; 1.1 date 2015.11.13.13.04.51; author esr; state Exp; branches; next ; commitid 1005645DFF30EA8B40E; 1.3.2.1 date 2015.11.13.13.05.00; author esr; state Exp; branches; next ; commitid 1005645DFFC0EB68700; desc @@ 1.3 log @Third commit @ text @One is dead, one is mad, and I have forgotten. @ 1.3.2.1 log @Fourth commit @ text @d1 1 a1 1 C'est magnifique, mais ce n'est pas la source code. @ 1.2 log @Second commit @ text @d1 1 a1 1 The world will little note, nor long remember... @ 1.1 log @First commit @ text @d1 1 a1 1 Not an obfuscated C contest entry. @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/0000775000175000017500000000000012624160405017112 5ustar esresrcvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#postadmin0000664000175000017500000000171212621357761021167 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/cvswrappers0000444000175000017500000000113212621357761021417 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/loginfo,v0000444000175000017500000000415512621357761020747 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#checkoutlist0000664000175000017500000000075712621357761021702 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#cvswrappers0000664000175000017500000000113212621357761021544 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/val-tags0000666000175000017500000000003512621357772020567 0ustar esresralternate_root y alternate y cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/postadmin0000444000175000017500000000171212621357761021042 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#rcsinfo0000664000175000017500000000121112621357761020626 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/verifymsg,v0000444000175000017500000000334512621357761021325 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/checkoutlist0000444000175000017500000000075712621357761021555 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/commitinfo,v0000444000175000017500000000275412621357761021461 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#postwatch0000664000175000017500000000175512621357761021214 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/posttag,v0000444000175000017500000000420612621357761020770 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#preproxy0000664000175000017500000000234312621357761021062 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/taginfo0000444000175000017500000000437712621357761020505 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#postproxy0000664000175000017500000000220112621357761021252 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/verifymsg0000444000175000017500000000277112621357761021065 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/history0000666000175000017500000000121212621357774020552 0ustar esresrO5645dff1|esr|~/public_html/cvs-fast-export/tests/*0|module||module A5645dff3|esr|~/public_html/cvs-fast-export/tests/hack2.checkout|module|1.1|bar.c A5645dff3|esr|~/public_html/cvs-fast-export/tests/hack2.checkout|module|1.1|foo.c M5645dff6|esr|~/public_html/cvs-fast-export/tests/hack2.checkout|module|1.2|bar.c M5645dff9|esr|~/public_html/cvs-fast-export/tests/hack2.checkout|module|1.3|bar.c M5645dff9|esr|~/public_html/cvs-fast-export/tests/hack2.checkout|module|1.2|foo.c M5645dffc|esr|~/public_html/cvs-fast-export/tests/hack2.checkout|module|1.3.2.1|bar.c M5645dffc|esr|~/public_html/cvs-fast-export/tests/hack2.checkout|module|1.2.2.1|foo.c cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/postwatch,v0000444000175000017500000000233112621357761021320 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/postadmin,v0000444000175000017500000000226612621357761021311 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/config0000444000175000017500000001004712621357761020312 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/config,v0000444000175000017500000001042312621357761020552 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/rcsinfo,v0000444000175000017500000000156512621357761020757 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/loginfo0000444000175000017500000000360112621357761020500 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/commitinfo0000444000175000017500000000240012621357761021203 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/posttag0000444000175000017500000000363212621357761020530 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/postproxy,v0000444000175000017500000000255512621357761021403 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/postproxy0000444000175000017500000000220112621357761021125 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/rcsinfo0000444000175000017500000000121112621357761020501 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/preproxy0000444000175000017500000000234312621357761020735 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/modules,v0000444000175000017500000000244512621357761020762 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#config0000664000175000017500000001004712621357761020437 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/notify0000444000175000017500000000163412621357761020357 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/checkoutlist,v0000444000175000017500000000133312621357761022006 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#commitinfo0000664000175000017500000000240012621357761021330 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/Emptydir/0000775000175000017500000000000012621357761020721 5ustar esresrcvs-fast-export-1.35/tests/hack2.repo/CVSROOT/notify,v0000444000175000017500000000221012621357761020610 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#taginfo0000664000175000017500000000437712621357761020632 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#verifymsg0000664000175000017500000000277112621357761021212 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/postwatch0000444000175000017500000000175512621357761021067 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/cvswrappers,v0000444000175000017500000000150612621357761021666 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/preproxy,v0000444000175000017500000000271712621357761021204 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/taginfo,v0000444000175000017500000000475312621357761020745 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.49; author esr; state Exp; branches; next ; commitid 1005645DFF10EA0DA06; desc @@ 1.1 log @initial checkin@ text @# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#notify0000664000175000017500000000163412621357761020504 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/modules0000444000175000017500000000207112621357761020513 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#posttag0000664000175000017500000000363212621357761020655 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#modules0000664000175000017500000000207112621357761020640 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/hack2.repo/CVSROOT/.#loginfo0000664000175000017500000000360112621357761020625 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/basic.tst0000664000175000017500000000062612446577645015664 0ustar esresr#!/usr/bin/env python ## basic test for CVS master parsing import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.CVSRepository("basic.repo") repo.init() repo.module("module") co = repo.checkout("module", "basic.checkout") co.write("README", "The quick brown fox jumped over the lazy dog.\n") co.add("README") co.commit("This is a sample commit") repo.cleanup() # end cvs-fast-export-1.35/tests/emptytag.chk0000664000175000017500000000321212624620213016334 0ustar esresrblob mark :1 data 16 content for 1.1 commit refs/heads/master mark :2 committer tron 1153910331 +0000 data 33 72edc95d3d3d8b19f17b383c8b48e7be M 100644 :1 emptytag M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end blob mark :3 data 20 content for 1.1.4.2 commit refs/heads/yamt-pdpolicy mark :4 committer yamt 1155311039 +0000 data 33 dcc6c11cf7931986275c70972415738c M 100644 :3 emptytag blob mark :5 data 16 content for 1.2 commit refs/heads/master mark :6 committer plunky 1156057618 +0000 data 33 9e702d6fea48c1d3bb95c46b5beedfc2 from :2 M 100644 :5 emptytag blob mark :7 data 16 content for 1.3 commit refs/heads/master mark :8 committer christos 1156724090 +0000 data 33 dcc02b8f68044956a92e64506313b1be from :6 M 100644 :7 emptytag blob mark :9 data 20 content for 1.1.4.3 commit refs/heads/yamt-pdpolicy mark :10 committer yamt 1157297036 +0000 data 33 4ded2b4af9bcadc17a16a481bf7db843 from :4 M 100644 :9 emptytag commit refs/heads/master mark :11 committer plunky 1157903156 +0000 data 33 32f882f6d9d435658b9d045cec6ebec0 from :8 D emptytag commit refs/heads/yamt-pdpolicy mark :12 committer yamt 1158237087 +0000 data 33 4ded2b4af9bcadc17a16a481bf7db843 from :10 D emptytag commit refs/heads/(null) mark :13 committer riz 1158268590 +0000 data 33 2190483e8079df73ca6844812d511f39 reset refs/heads/master from :11 reset refs/heads/(null) from :13 reset refs/heads/yamt-pdpolicy from :12 done cvs-fast-export-1.35/tests/branchy.repo/0000775000175000017500000000000012621357654016424 5ustar esresrcvs-fast-export-1.35/tests/branchy.repo/module/0000775000175000017500000000000012621357720017703 5ustar esresrcvs-fast-export-1.35/tests/branchy.repo/module/README,v0000444000175000017500000000265312621357720021027 0ustar esresrhead 1.5; access; symbols ill~egal:1.5 random:1.4 samplebranch:1.4.0.2 samplebranch_root:1.4 foo:1.2; locks; strict; comment @# @; 1.5 date 2015.11.13.13.04.15; author esr; state Exp; branches; next 1.4; commitid 1005645DFCF0D8A2D16; 1.4 date 2015.11.13.13.04.05; author esr; state Exp; branches 1.4.2.1; next 1.3; commitid 1005645DFC50D7816BC; 1.3 date 2015.11.13.13.04.00; author esr; state Exp; branches; next 1.2; commitid 1005645DFC00D712DBF; 1.2 date 2015.11.13.13.03.45; author esr; state Exp; branches; next 1.1; commitid 1005645DFB10D614DBC; 1.1 date 2015.11.13.13.03.42; author esr; state Exp; branches; next ; commitid 1005645DFAE0D5F1BD6; 1.4.2.1 date 2015.11.13.13.04.11; author esr; state Exp; branches; next ; commitid 1005645DFCB0D86443C; desc @@ 1.5 log @This commit should alter the master branch. @ text @I'm back in the saddle again. @ 1.4 log @Only README should be visible here. @ text @d1 1 a1 1 The file 'doomed' should not be visible at this revision. @ 1.4.2.1 log @Do we get branch detection right? @ text @d1 1 a1 1 This is alternate content for README. @ 1.3 log @The obligatory Monty Python reference @ text @d1 1 a1 1 And now for something completely different. @ 1.2 log @This is another sample commit @ text @d1 1 a1 1 Now is the time for all good men to come to the aid of their country. @ 1.1 log @This is a sample commit @ text @d1 1 a1 1 The quick brown fox jumped over the lazy dog. @ cvs-fast-export-1.35/tests/branchy.repo/module/.cvsignore,v0000444000175000017500000000103412621357720022137 0ustar esresrhead 1.2; access; symbols ill~egal:1.2 random:1.2 samplebranch:1.2.0.2 samplebranch_root:1.2; locks; strict; comment @# @; 1.2 date 2015.11.13.13.03.57; author esr; state Exp; branches; next 1.1; commitid 1005645DFBD0D6F3341; 1.1 date 2015.11.13.13.03.54; author esr; state Exp; branches; next ; commitid 1005645DFBA0D6D80BC; desc @@ 1.2 log @Check that .cvsignore -> .gitignore name translation works on updates as well. @ text @*.pyc *.o @ 1.1 log @Check that .cvsignore -> .gitignore name translation works. @ text @d2 1 @ cvs-fast-export-1.35/tests/branchy.repo/module/superfluous,v0000444000175000017500000000056712621357720022470 0ustar esresrhead 1.1; access; symbols ill~egal:1.1 random:1.1 samplebranch:1.1.0.2 samplebranch_root:1.1; locks; strict; comment @# @; 1.1 date 2015.11.13.13.04.08; author esr; state Exp; branches; next ; commitid 1005645DFC80D7C9496; desc @@ 1.1 log @Should not generate an extra fileop after branching @ text @This is a superflous file, a sanity check for branch creation. @ cvs-fast-export-1.35/tests/branchy.repo/module/Attic/0000775000175000017500000000000012621357703020750 5ustar esresrcvs-fast-export-1.35/tests/branchy.repo/module/Attic/doomed,v0000444000175000017500000000117712621357703022406 0ustar esresrhead 1.3; access; symbols foo:1.2; locks; strict; comment @# @; 1.3 date 2015.11.13.13.04.03; author esr; state dead; branches; next 1.2; commitid 1005645DFC30D76CA35; 1.2 date 2015.11.13.13.03.51; author esr; state Exp; branches; next 1.1; commitid 1005645DFB70D6724FD; 1.1 date 2015.11.13.13.03.48; author esr; state Exp; branches; next ; commitid 1005645DFB40D659F68; desc @@ 1.3 log @Testing file removal @ text @The world will little note, nor long remember what we say here @ 1.2 log @Add a spacer commit @ text @@ 1.1 log @Create a doomed file @ text @d1 1 a1 1 This is a doomed file. Its destiny is to be deleted. @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/0000775000175000017500000000000012624160405017550 5ustar esresrcvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#postadmin0000664000175000017500000000171212621357654021626 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/cvswrappers0000444000175000017500000000113212621357654022056 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/loginfo,v0000444000175000017500000000415512621357654021406 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#checkoutlist0000664000175000017500000000075712621357654022341 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#cvswrappers0000664000175000017500000000113212621357654022203 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/val-tags0000666000175000017500000000007512621357720021222 0ustar esresrfoo y samplebranch_root y samplebranch y random y ill~egal y cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/postadmin0000444000175000017500000000171212621357654021501 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#rcsinfo0000664000175000017500000000121112621357654021265 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/verifymsg,v0000444000175000017500000000334512621357654021764 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/checkoutlist0000444000175000017500000000075712621357654022214 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/commitinfo,v0000444000175000017500000000275412621357654022120 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#postwatch0000664000175000017500000000175512621357654021653 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/posttag,v0000444000175000017500000000420612621357654021427 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#preproxy0000664000175000017500000000234312621357654021521 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/taginfo0000444000175000017500000000437712621357654021144 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#postproxy0000664000175000017500000000220112621357654021711 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/verifymsg0000444000175000017500000000277112621357654021524 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/history0000666000175000017500000000224612621357717021215 0ustar esresrO5645dfac|esr|~/public_html/cvs-fast-export/tests/*0|module||module A5645dfae|esr|~/public_html/cvs-fast-export/tests/branchy.checkout|module|1.1|README M5645dfb1|esr|~/public_html/cvs-fast-export/tests/branchy.checkout|module|1.2|README A5645dfb4|esr|~/public_html/cvs-fast-export/tests/branchy.checkout|module|1.1|doomed M5645dfb7|esr|~/public_html/cvs-fast-export/tests/branchy.checkout|module|1.2|doomed A5645dfba|esr|~/public_html/cvs-fast-export/tests/branchy.checkout|module|1.1|.cvsignore M5645dfbd|esr|~/public_html/cvs-fast-export/tests/branchy.checkout|module|1.2|.cvsignore M5645dfc0|esr|~/public_html/cvs-fast-export/tests/branchy.checkout|module|1.3|README R5645dfc3|esr|~/public_html/cvs-fast-export/tests/branchy.checkout|module|1.3|doomed M5645dfc5|esr|~/public_html/cvs-fast-export/tests/branchy.checkout|module|1.4|README A5645dfc8|esr|~/public_html/cvs-fast-export/tests/branchy.checkout|module|1.1|superfluous M5645dfcb|esr|~/public_html/cvs-fast-export/tests/branchy.checkout|module|1.4.2.1|README U5645dfcc|esr|~/public_html/cvs-fast-export/tests/branchy.checkout|module|1.4|README M5645dfcf|esr|~/public_html/cvs-fast-export/tests/branchy.checkout|module|1.5|README cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/postwatch,v0000444000175000017500000000233112621357654021757 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/postadmin,v0000444000175000017500000000226612621357654021750 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/config0000444000175000017500000001004712621357654020751 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/config,v0000444000175000017500000001042312621357654021211 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/rcsinfo,v0000444000175000017500000000156512621357654021416 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/loginfo0000444000175000017500000000360112621357654021137 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/commitinfo0000444000175000017500000000240012621357654021642 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/posttag0000444000175000017500000000363212621357654021167 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/postproxy,v0000444000175000017500000000255512621357654022042 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/postproxy0000444000175000017500000000220112621357654021564 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/rcsinfo0000444000175000017500000000121112621357654021140 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/preproxy0000444000175000017500000000234312621357654021374 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/modules,v0000444000175000017500000000244512621357654021421 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#config0000664000175000017500000001004712621357654021076 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/notify0000444000175000017500000000163412621357654021016 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/checkoutlist,v0000444000175000017500000000133312621357654022445 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#commitinfo0000664000175000017500000000240012621357654021767 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/Emptydir/0000775000175000017500000000000012621357654021360 5ustar esresrcvs-fast-export-1.35/tests/branchy.repo/CVSROOT/notify,v0000444000175000017500000000221012621357654021247 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#taginfo0000664000175000017500000000437712621357654021271 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#verifymsg0000664000175000017500000000277112621357654021651 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/postwatch0000444000175000017500000000175512621357654021526 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/cvswrappers,v0000444000175000017500000000150612621357654022325 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/preproxy,v0000444000175000017500000000271712621357654021643 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/taginfo,v0000444000175000017500000000475312621357654021404 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.03.40; author esr; state Exp; branches; next ; commitid 1005645DFAC0D590CDA; desc @@ 1.1 log @initial checkin@ text @# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#notify0000664000175000017500000000163412621357654021143 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/modules0000444000175000017500000000207112621357654021152 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#posttag0000664000175000017500000000363212621357654021314 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#modules0000664000175000017500000000207112621357654021277 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/branchy.repo/CVSROOT/.#loginfo0000664000175000017500000000360112621357654021264 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/hack1.tst0000664000175000017500000000133612446577770015570 0ustar esresr#!/usr/bin/env python ## First example from the Hacking Guide import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.CVSRepository("hack1.repo") repo.init() repo.module("module") co = repo.checkout("module", "hack1.checkout") co.write("foo.c", "The quick brown fox jumped over the lazy dog.\n") co.add("foo.c") co.write("bar.c", "Not an obfuscated C contest entry.\n") co.add("bar.c") co.commit("First commit") co.write("bar.c", "The world will little note, nor long remember...\n") co.commit("Second commit") co.write("foo.c", "And now for something completely different.\n") co.write("bar.c", "One is dead, one is mad, and I have forgotten.\n") co.commit("Third commit") repo.cleanup() # end cvs-fast-export-1.35/tests/t9601.py0000775000175000017500000000442012446577551015177 0ustar esresr#!/usr/bin/env python ## Test handling of vendor branches # # This test was swiped from the git 1.8.1 tree, then modified to exercise # lifters directly rather than through git-cvsimport. # # Description of the files in the repository: # # imported-once.txt: # # Imported once. 1.1 and 1.1.1.1 should be identical. # # imported-twice.txt: # # Imported twice. HEAD should reflect the contents of the # second import (i.e., have the same contents as 1.1.1.2). # # imported-modified.txt: # # Imported, then modified on HEAD. HEAD should reflect the # modification. # # imported-modified-imported.txt: # # Imported, then modified on HEAD, then imported again. # # added-imported.txt,v: # # Added with 'cvs add' to create 1.1, then imported with # completely different contents to create 1.1.1.1, therefore the # vendor branch was never the default branch. # # imported-anonymously.txt: # # Like imported-twice.txt, but with a vendor branch whose branch # tag has been removed. import os, sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.CVSRepository("t9601.testrepo") co = repo.checkout("module", "t9601.checkout") repo.convert("module", "t9601.git", more_opts="-F") # Check a file that was imported once testlifter.expect_same("t9601.checkout/imported-once.txt", "t9601.git/imported-once.txt") # Check a file that was imported twice testlifter.expect_same("t9601.checkout/imported-twice.txt", "t9601.git/imported-twice.txt") # Check a file that was imported then modified on HEAD testlifter.expect_same("t9601.checkout/imported-modified.txt", "t9601.git/imported-modified.txt") # Check a file that was imported, modified, then imported testlifter.expect_same("t9601.checkout/imported-modified-imported.txt", "t9601.git/imported-modified-imported.txt") # Check a file that was added to HEAD then imported testlifter.expect_same("t9601.checkout/added-imported.txt", "t9601.git/added-imported.txt") # A vendor branch whose tag has been removed testlifter.expect_same("t9601.checkout/imported-anonymously.txt", "t9601.git/imported-anonymously.txt") co.cleanup() cvs-fast-export-1.35/tests/hardlinks,v0000664000175000017500000000316612435607267016205 0ustar esresrhead 1.2; access; symbols BETA_349_990106:1.1 BETA_349_981223:1.1 BETA_349_981222:1.1 BETA_349_981221:1.1 BETA_349_981217:1.1 BETA_349_981216:1.1 BETA_349_981215:1.1 BETA_349:1.1 BETA_348_981214:1.1 BETA_348_981210:1.1 BETA_348_981209:1.1 BETA_348_981207:1.1 BETA_348_981206:1.1 BETA_348_release:1.1 BETA_348_981204:1.1 BETA_348_981203:1.1 BETA_348:1.1 BETA_347_981202:1.1 BETA_347_981201:1.1 BETA_347_981130:1.1 BETA_347_981126:1.1 BETA_347_981125:1.1 BETA_347_981123:1.1 BETA_347_pl7:1.1 BETA_347_981121:1.1 BETA_347_98112001:1.1 BETA_347_981120:1.1 BETA_347_981119:1.1 BETA_347_981117:1.1 BETA_347_981116:1.1 BETA_347_981112:1.1 BETA_347_981106:1.1 BETA_347_98110401:1.1 BETA_347_981104:1.1 BETA_347_981103:1.1 BETA_347_981028:1.1 BETA_347_981020:1.1 BETA_347_98101901:1.1; locks; strict; comment @# Master from gnuplot with hardlinks fields@; 1.2 date 99.01.12.14.05.31; author lhecking; state dead; branches; next 1.1; owner 640; group 15; permissions 644; hardlinks @stringize.m4@; 1.1 date 98.10.19.19.37.45; author lhecking; state Exp; branches; next ; owner 640; group 15; permissions 644; hardlinks @stringize.m4@; desc @@ 1.2 log @Removed. @ text @AC_DEFUN(AC_C_STRINGIZE, [ AC_REQUIRE([AC_PROG_CPP]) AC_MSG_CHECKING([for preprocessor stringizing operator]) AC_CACHE_VAL(ac_cv_c_stringize, AC_EGREP_CPP([#teststring],[ #define x(y) #y char *s = x(teststring); ], ac_cv_c_stringize=no, ac_cv_c_stringize=yes)) if test "${ac_cv_c_stringize}" = yes then AC_DEFINE(HAVE_STRINGIZE) fi AC_MSG_RESULT([${ac_cv_c_stringize}]) ])dnl @ 1.1 log @New file, from deprecated acinclude.m4. @ text @@ cvs-fast-export-1.35/tests/README.cygwin0000664000175000017500000000021212435607267016205 0ustar esresrThe cygwin cvs package does not respect the -Q (very quiet) flag on all commands. Expect some noise when building the test repositories. cvs-fast-export-1.35/tests/t9602.py0000775000175000017500000000613312446577436015205 0ustar esresr#!/usr/bin/env python ## Test handling of pathological tags # # This test was swiped from the git 1.8.1 tree, then modified to exercise # a lifter directly rather than through git-cvsimport. # ''' This repository is for testing the ability to group revisions correctly along tags and branches. Here is its history: 1. The initial import (revision 1.1 of everybody) created a directory structure with a file named "default" in each dir: ./ default sub1/default subsubA/default subsubB/default sub2/default subsubA/default sub3/default 2. Then tagged everyone with T_ALL_INITIAL_FILES. 3. Then tagged everyone except sub1/subsubB/default with T_ALL_INITIAL_FILES_BUT_ONE. 4. Then created branch B_FROM_INITIALS on everyone. 5. Then created branch B_FROM_INITIALS_BUT_ONE on everyone except /sub1/subsubB/default. 6. Then committed modifications to two files: sub3/default, and sub1/subsubA/default. 7. Then committed a modification to all 7 files. 8. Then backdated sub3/default to revision 1.2, and sub2/subsubA/default to revision 1.1, and tagged with T_MIXED. 9. Same as 8, but tagged with -b to create branch B_MIXED. 10. Switched the working copy to B_MIXED, and added sub2/branch_B_MIXED_only. (That is why the RCS file is in sub2/Attic/ -- it never existed on trunk.) 11. In one commit, modified default, sub1/default, and sub2/subsubA/default, on branch B_MIXED. 12. Did "cvs up -A" on sub2/default, then in one commit, made a change to sub2/default and sub2/branch_B_MIXED_only. So this commit should be spread between the branch and the trunk. 13. Do "cvs up -A" to get everyone back to trunk, then make a new branch B_SPLIT on everyone except sub1/subsubB/default,v. 14. Switch to branch B_SPLIT (see sub1/subsubB/default disappear) and commit a change that affects everyone except sub3/default. 15. An hour or so later, "cvs up -A" to get sub1/subsubB/default back, then commit a change on that file, on trunk. (It is important that this change happened after the previous commits on B_SPLIT.) 16. Branch sub1/subsubB/default to B_SPLIT, then "cvs up -r B_SPLIT" to switch the whole working copy to the branch. 17. Commit a change on B_SPLIT, to sub1/subsubB/default and sub3/default. ''' import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") cc = testlifter.ConvertComparison(stem="t9602", module="module") cc.repo.retain = ("-k" in sys.argv[1:]) cc.compare_tree("branch", "master", True) cc.compare_tree("branch", "vendorbranch", True) cc.compare_tree("branch", "B_FROM_INITIALS", True) cc.compare_tree("branch", "B_FROM_INITIALS_BUT_ONE", False) cc.compare_tree("branch", "B_MIXED", True) cc.compare_tree("branch", "B_SPLIT", True) cc.compare_tree("tag", "vendortag", True) cc.compare_tree("tag", "T_ALL_INITIAL_FILES", True) cc.compare_tree("tag", "T_ALL_INITIAL_FILES_BUT_ONE", True) cc.compare_tree("tag", "T_MIXED", True) cc.cleanup() cvs-fast-export-1.35/tests/t9601.git/0000775000175000017500000000000012624621643015372 5ustar esresrcvs-fast-export-1.35/tests/t9601.git/imported-once.txt0000664000175000017500000000006312624621643020677 0ustar esresrThis is vtag-1 (on vbranchA) of imported-once.txt. cvs-fast-export-1.35/tests/t9601.git/added-imported.txt0000664000175000017500000000007112624621643021013 0ustar esresrThis is vtag-4 (on vbranchA) of added-then-imported.txt. cvs-fast-export-1.35/tests/t9601.git/.gitignore0000664000175000017500000000030612624621643017361 0ustar esresr# CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end cvs-fast-export-1.35/tests/t9601.git/imported-modified-imported.txt0000664000175000017500000000017212624621643023355 0ustar esresrThis is a modification of imported-modified-imported.txt on HEAD. It should supersede the version from the vendor branch. cvs-fast-export-1.35/tests/t9601.git/imported-anonymously.txt0000664000175000017500000000007212624621643022350 0ustar esresrThis is vtag-1 (on vbranchA) of imported-anonymously.txt. cvs-fast-export-1.35/tests/t9601.git/imported-twice.txt0000664000175000017500000000006412624621643021067 0ustar esresrThis is vtag-2 (on vbranchA) of imported-twice.txt. cvs-fast-export-1.35/tests/t9601.git/.git/0000775000175000017500000000000012624621643016233 5ustar esresrcvs-fast-export-1.35/tests/t9601.git/.git/refs/0000775000175000017500000000000012624621643017172 5ustar esresrcvs-fast-export-1.35/tests/t9601.git/.git/refs/heads/0000775000175000017500000000000012624621643020256 5ustar esresrcvs-fast-export-1.35/tests/t9601.git/.git/refs/heads/vtag-40000664000175000017500000000005112624621643021277 0ustar esresra9cad9a74df1c634eb2fc74b2759723652560663 cvs-fast-export-1.35/tests/t9601.git/.git/refs/heads/master0000664000175000017500000000005112624621643021470 0ustar esresrfb24d806a55b19486f78650511c87a5d1f3fc2ff cvs-fast-export-1.35/tests/t9601.git/.git/refs/heads/vtag-20000664000175000017500000000005112624621643021275 0ustar esresrcdfe6bdfe74703ea61a65524ad7de148a69cbf04 cvs-fast-export-1.35/tests/t9601.git/.git/refs/heads/vtag-10000664000175000017500000000005112624621643021274 0ustar esresr8baad97f0e54d95fb13d3df2797a1e02b81d87f0 cvs-fast-export-1.35/tests/t9601.git/.git/refs/heads/import-1.1.10000664000175000017500000000005112624621643022143 0ustar esresrd622c313766759471df4223112ba20be28a93102 cvs-fast-export-1.35/tests/t9601.git/.git/refs/tags/0000775000175000017500000000000012624621643020130 5ustar esresrcvs-fast-export-1.35/tests/t9601.git/.git/hooks/0000775000175000017500000000000012624621643017356 5ustar esresrcvs-fast-export-1.35/tests/t9601.git/.git/hooks/pre-commit.sample0000775000175000017500000000315212624621643022641 0ustar esresr#!/bin/sh # # An example hook script to verify what is about to be committed. # Called by "git commit" with no arguments. The hook should # exit with non-zero status after issuing an appropriate message if # it wants to stop the commit. # # To enable this hook, rename this file to "pre-commit". if git rev-parse --verify HEAD >/dev/null 2>&1 then against=HEAD else # Initial commit: diff against an empty tree object against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 fi # If you want to allow non-ASCII filenames set this variable to true. allownonascii=$(git config --bool hooks.allownonascii) # Redirect output to stderr. exec 1>&2 # Cross platform projects tend to avoid non-ASCII filenames; prevent # them from being added to the repository. We exploit the fact that the # printable range starts at the space character and ends with tilde. if [ "$allownonascii" != "true" ] && # Note that the use of brackets around a tr range is ok here, (it's # even required, for portability to Solaris 10's /usr/bin/tr), since # the square bracket bytes happen to fall in the designated range. test $(git diff --cached --name-only --diff-filter=A -z $against | LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 then cat <<\EOF Error: Attempt to add a non-ASCII file name. This can cause problems if you want to work with people on other platforms. To be portable it is advisable to rename the file. If you know what you are doing you can disable this check using: git config hooks.allownonascii true EOF exit 1 fi # If there are whitespace errors, print the offending file names and fail. exec git diff-index --check --cached $against -- cvs-fast-export-1.35/tests/t9601.git/.git/hooks/pre-applypatch.sample0000775000175000017500000000065012624621643023516 0ustar esresr#!/bin/sh # # An example hook script to verify what is about to be committed # by applypatch from an e-mail message. # # The hook should exit with non-zero status after issuing an # appropriate message if it wants to stop the commit. # # To enable this hook, rename this file to "pre-applypatch". . git-sh-setup precommit="$(git rev-parse --git-path hooks/pre-commit)" test -x "$precommit" && exec "$precommit" ${1+"$@"} : cvs-fast-export-1.35/tests/t9601.git/.git/hooks/pre-rebase.sample0000775000175000017500000001152712624621643022617 0ustar esresr#!/bin/sh # # Copyright (c) 2006, 2008 Junio C Hamano # # The "pre-rebase" hook is run just before "git rebase" starts doing # its job, and can prevent the command from running by exiting with # non-zero status. # # The hook is called with the following parameters: # # $1 -- the upstream the series was forked from. # $2 -- the branch being rebased (or empty when rebasing the current branch). # # This sample shows how to prevent topic branches that are already # merged to 'next' branch from getting rebased, because allowing it # would result in rebasing already published history. publish=next basebranch="$1" if test "$#" = 2 then topic="refs/heads/$2" else topic=`git symbolic-ref HEAD` || exit 0 ;# we do not interrupt rebasing detached HEAD fi case "$topic" in refs/heads/??/*) ;; *) exit 0 ;# we do not interrupt others. ;; esac # Now we are dealing with a topic branch being rebased # on top of master. Is it OK to rebase it? # Does the topic really exist? git show-ref -q "$topic" || { echo >&2 "No such branch $topic" exit 1 } # Is topic fully merged to master? not_in_master=`git rev-list --pretty=oneline ^master "$topic"` if test -z "$not_in_master" then echo >&2 "$topic is fully merged to master; better remove it." exit 1 ;# we could allow it, but there is no point. fi # Is topic ever merged to next? If so you should not be rebasing it. only_next_1=`git rev-list ^master "^$topic" ${publish} | sort` only_next_2=`git rev-list ^master ${publish} | sort` if test "$only_next_1" = "$only_next_2" then not_in_topic=`git rev-list "^$topic" master` if test -z "$not_in_topic" then echo >&2 "$topic is already up-to-date with master" exit 1 ;# we could allow it, but there is no point. else exit 0 fi else not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"` /usr/bin/perl -e ' my $topic = $ARGV[0]; my $msg = "* $topic has commits already merged to public branch:\n"; my (%not_in_next) = map { /^([0-9a-f]+) /; ($1 => 1); } split(/\n/, $ARGV[1]); for my $elem (map { /^([0-9a-f]+) (.*)$/; [$1 => $2]; } split(/\n/, $ARGV[2])) { if (!exists $not_in_next{$elem->[0]}) { if ($msg) { print STDERR $msg; undef $msg; } print STDERR " $elem->[1]\n"; } } ' "$topic" "$not_in_next" "$not_in_master" exit 1 fi exit 0 ################################################################ This sample hook safeguards topic branches that have been published from being rewound. The workflow assumed here is: * Once a topic branch forks from "master", "master" is never merged into it again (either directly or indirectly). * Once a topic branch is fully cooked and merged into "master", it is deleted. If you need to build on top of it to correct earlier mistakes, a new topic branch is created by forking at the tip of the "master". This is not strictly necessary, but it makes it easier to keep your history simple. * Whenever you need to test or publish your changes to topic branches, merge them into "next" branch. The script, being an example, hardcodes the publish branch name to be "next", but it is trivial to make it configurable via $GIT_DIR/config mechanism. With this workflow, you would want to know: (1) ... if a topic branch has ever been merged to "next". Young topic branches can have stupid mistakes you would rather clean up before publishing, and things that have not been merged into other branches can be easily rebased without affecting other people. But once it is published, you would not want to rewind it. (2) ... if a topic branch has been fully merged to "master". Then you can delete it. More importantly, you should not build on top of it -- other people may already want to change things related to the topic as patches against your "master", so if you need further changes, it is better to fork the topic (perhaps with the same name) afresh from the tip of "master". Let's look at this example: o---o---o---o---o---o---o---o---o---o "next" / / / / / a---a---b A / / / / / / / / c---c---c---c B / / / / \ / / / / b---b C \ / / / / / \ / ---o---o---o---o---o---o---o---o---o---o---o "master" A, B and C are topic branches. * A has one fix since it was merged up to "next". * B has finished. It has been fully merged up to "master" and "next", and is ready to be deleted. * C has not merged to "next" at all. We would want to allow C to be rebased, refuse A, and encourage B to be deleted. To compute (1): git rev-list ^master ^topic next git rev-list ^master next if these match, topic has not merged in next at all. To compute (2): git rev-list master..topic if this is empty, it is fully merged to "master". cvs-fast-export-1.35/tests/t9601.git/.git/hooks/commit-msg.sample0000775000175000017500000000160012624621643022635 0ustar esresr#!/bin/sh # # An example hook script to check the commit log message. # Called by "git commit" with one argument, the name of the file # that has the commit message. The hook should exit with non-zero # status after issuing an appropriate message if it wants to stop the # commit. The hook is allowed to edit the commit message file. # # To enable this hook, rename this file to "commit-msg". # Uncomment the below to add a Signed-off-by line to the message. # Doing this in a hook is a bad idea in general, but the prepare-commit-msg # hook is more suited to it. # # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" # This example catches duplicate Signed-off-by lines. test "" = "$(grep '^Signed-off-by: ' "$1" | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { echo >&2 Duplicate Signed-off-by lines. exit 1 } cvs-fast-export-1.35/tests/t9601.git/.git/hooks/post-commit.sample0000775000175000017500000000024012624621643023033 0ustar esresr#!/bin/sh # # An example hook script that is called after a successful # commit is made. # # To enable this hook, rename this file to "post-commit". : Nothing cvs-fast-export-1.35/tests/t9601.git/.git/hooks/post-update.sample0000775000175000017500000000027512624621643023035 0ustar esresr#!/bin/sh # # An example hook script to prepare a packed repository for use over # dumb transports. # # To enable this hook, rename this file to "post-update". exec git update-server-info cvs-fast-export-1.35/tests/t9601.git/.git/hooks/post-receive.sample0000775000175000017500000000105012624621643023165 0ustar esresr#!/bin/sh # # An example hook script for the "post-receive" event. # # The "post-receive" script is run after receive-pack has accepted a pack # and the repository has been updated. It is passed arguments in through # stdin in the form # # For example: # aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master # # see contrib/hooks/ for a sample, or uncomment the next line and # rename the file to "post-receive". #. /usr/share/doc/git-core/contrib/hooks/post-receive-email cvs-fast-export-1.35/tests/t9601.git/.git/hooks/update.sample0000775000175000017500000000703312624621643022051 0ustar esresr#!/bin/sh # # An example hook script to blocks unannotated tags from entering. # Called by "git receive-pack" with arguments: refname sha1-old sha1-new # # To enable this hook, rename this file to "update". # # Config # ------ # hooks.allowunannotated # This boolean sets whether unannotated tags will be allowed into the # repository. By default they won't be. # hooks.allowdeletetag # This boolean sets whether deleting tags will be allowed in the # repository. By default they won't be. # hooks.allowmodifytag # This boolean sets whether a tag may be modified after creation. By default # it won't be. # hooks.allowdeletebranch # This boolean sets whether deleting branches will be allowed in the # repository. By default they won't be. # hooks.denycreatebranch # This boolean sets whether remotely creating branches will be denied # in the repository. By default this is allowed. # # --- Command line refname="$1" oldrev="$2" newrev="$3" # --- Safety check if [ -z "$GIT_DIR" ]; then echo "Don't run this script from the command line." >&2 echo " (if you want, you could supply GIT_DIR then run" >&2 echo " $0 )" >&2 exit 1 fi if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then echo "usage: $0 " >&2 exit 1 fi # --- Config allowunannotated=$(git config --bool hooks.allowunannotated) allowdeletebranch=$(git config --bool hooks.allowdeletebranch) denycreatebranch=$(git config --bool hooks.denycreatebranch) allowdeletetag=$(git config --bool hooks.allowdeletetag) allowmodifytag=$(git config --bool hooks.allowmodifytag) # check for no description projectdesc=$(sed -e '1q' "$GIT_DIR/description") case "$projectdesc" in "Unnamed repository"* | "") echo "*** Project description file hasn't been set" >&2 exit 1 ;; esac # --- Check types # if $newrev is 0000...0000, it's a commit to delete a ref. zero="0000000000000000000000000000000000000000" if [ "$newrev" = "$zero" ]; then newrev_type=delete else newrev_type=$(git cat-file -t $newrev) fi case "$refname","$newrev_type" in refs/tags/*,commit) # un-annotated tag short_refname=${refname##refs/tags/} if [ "$allowunannotated" != "true" ]; then echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2 echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2 exit 1 fi ;; refs/tags/*,delete) # delete tag if [ "$allowdeletetag" != "true" ]; then echo "*** Deleting a tag is not allowed in this repository" >&2 exit 1 fi ;; refs/tags/*,tag) # annotated tag if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1 then echo "*** Tag '$refname' already exists." >&2 echo "*** Modifying a tag is not allowed in this repository." >&2 exit 1 fi ;; refs/heads/*,commit) # branch if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then echo "*** Creating a branch is not allowed in this repository" >&2 exit 1 fi ;; refs/heads/*,delete) # delete branch if [ "$allowdeletebranch" != "true" ]; then echo "*** Deleting a branch is not allowed in this repository" >&2 exit 1 fi ;; refs/remotes/*,commit) # tracking branch ;; refs/remotes/*,delete) # delete tracking branch if [ "$allowdeletebranch" != "true" ]; then echo "*** Deleting a tracking branch is not allowed in this repository" >&2 exit 1 fi ;; *) # Anything else (is there anything else?) echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2 exit 1 ;; esac # --- Finished exit 0 cvs-fast-export-1.35/tests/t9601.git/.git/hooks/applypatch-msg.sample0000775000175000017500000000073612624621643023523 0ustar esresr#!/bin/sh # # An example hook script to check the commit log message taken by # applypatch from an e-mail message. # # The hook should exit with non-zero status after issuing an # appropriate message if it wants to stop the commit. The hook is # allowed to edit the commit message file. # # To enable this hook, rename this file to "applypatch-msg". . git-sh-setup commitmsg="$(git rev-parse --git-path hooks/commit-msg)" test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} : cvs-fast-export-1.35/tests/t9601.git/.git/hooks/pre-push.sample0000775000175000017500000000250412624621643022330 0ustar esresr#!/bin/sh # An example hook script to verify what is about to be pushed. Called by "git # push" after it has checked the remote status, but before anything has been # pushed. If this script exits with a non-zero status nothing will be pushed. # # This hook is called with the following parameters: # # $1 -- Name of the remote to which the push is being done # $2 -- URL to which the push is being done # # If pushing without using a named remote those arguments will be equal. # # Information about the commits which are being pushed is supplied as lines to # the standard input in the form: # # # # This sample shows how to prevent push of commits where the log message starts # with "WIP" (work in progress). remote="$1" url="$2" z40=0000000000000000000000000000000000000000 while read local_ref local_sha remote_ref remote_sha do if [ "$local_sha" = $z40 ] then # Handle delete : else if [ "$remote_sha" = $z40 ] then # New branch, examine all commits range="$local_sha" else # Update to existing branch, examine new commits range="$remote_sha..$local_sha" fi # Check for WIP commit commit=`git rev-list -n 1 --grep '^WIP' "$range"` if [ -n "$commit" ] then echo >&2 "Found WIP commit in $local_ref, not pushing" exit 1 fi fi done exit 0 cvs-fast-export-1.35/tests/t9601.git/.git/hooks/prepare-commit-msg.sample0000775000175000017500000000232712624621643024300 0ustar esresr#!/bin/sh # # An example hook script to prepare the commit log message. # Called by "git commit" with the name of the file that has the # commit message, followed by the description of the commit # message's source. The hook's purpose is to edit the commit # message file. If the hook fails with a non-zero status, # the commit is aborted. # # To enable this hook, rename this file to "prepare-commit-msg". # This hook includes three examples. The first comments out the # "Conflicts:" part of a merge commit. # # The second includes the output of "git diff --name-status -r" # into the message, just before the "git status" output. It is # commented because it doesn't cope with --amend or with squashed # commits. # # The third example adds a Signed-off-by line to the message, that can # still be edited. This is rarely a good idea. case "$2,$3" in merge,) /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;; # ,|template,) # /usr/bin/perl -i.bak -pe ' # print "\n" . `git diff --cached --name-status -r` # if /^#/ && $first++ == 0' "$1" ;; *) ;; esac # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" cvs-fast-export-1.35/tests/t9601.git/.git/index0000664000175000017500000000124112624621643017263 0ustar esresrDIRCVS#_ʒVS#_ʒL@W4E&e& .gitignoreVS#_ʒVS#_ʒL9p*.rB2nCyIsadded-imported.txtVS#_ʒVS#_ʒL:#1&=u 3_ -imported-anonymously.txtVS#_ʒVS#_ʒLzr2ݨ*OʴIimported-modified-imported.txtVS#_ʒVS#_ʒLqR팥s|r>+]8^YZimported-modified.txtVS#_ʒVS#_ʒL3D Kۿr[R Tuimported-once.txtVS#_ʒVS#_ʒL4Gۃw> imported-twice.txtTREE7 0 Zc?L=R;+*u,j_H>xcvs-fast-export-1.35/tests/t9601.git/.git/logs/0000775000175000017500000000000012624621643017177 5ustar esresrcvs-fast-export-1.35/tests/t9601.git/.git/logs/refs/0000775000175000017500000000000012624621643020136 5ustar esresrcvs-fast-export-1.35/tests/t9601.git/.git/logs/refs/heads/0000775000175000017500000000000012624621643021222 5ustar esresrcvs-fast-export-1.35/tests/t9601.git/.git/logs/refs/heads/vtag-40000664000175000017500000000022112624621643022242 0ustar esresr0000000000000000000000000000000000000000 a9cad9a74df1c634eb2fc74b2759723652560663 Eric S. Raymond 1448289187 -0500 fast-import cvs-fast-export-1.35/tests/t9601.git/.git/logs/refs/heads/master0000664000175000017500000000022112624621643022433 0ustar esresr0000000000000000000000000000000000000000 fb24d806a55b19486f78650511c87a5d1f3fc2ff Eric S. Raymond 1448289187 -0500 fast-import cvs-fast-export-1.35/tests/t9601.git/.git/logs/refs/heads/vtag-20000664000175000017500000000022112624621643022240 0ustar esresr0000000000000000000000000000000000000000 cdfe6bdfe74703ea61a65524ad7de148a69cbf04 Eric S. Raymond 1448289187 -0500 fast-import cvs-fast-export-1.35/tests/t9601.git/.git/logs/refs/heads/vtag-10000664000175000017500000000022112624621643022237 0ustar esresr0000000000000000000000000000000000000000 8baad97f0e54d95fb13d3df2797a1e02b81d87f0 Eric S. Raymond 1448289187 -0500 fast-import cvs-fast-export-1.35/tests/t9601.git/.git/logs/refs/heads/import-1.1.10000664000175000017500000000022112624621643023106 0ustar esresr0000000000000000000000000000000000000000 d622c313766759471df4223112ba20be28a93102 Eric S. Raymond 1448289187 -0500 fast-import cvs-fast-export-1.35/tests/t9601.git/.git/config0000664000175000017500000000013412624621643017421 0ustar esresr[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true cvs-fast-export-1.35/tests/t9601.git/.git/HEAD0000664000175000017500000000002712624621643016656 0ustar esresrref: refs/heads/master cvs-fast-export-1.35/tests/t9601.git/.git/description0000664000175000017500000000011112624621643020472 0ustar esresrUnnamed repository; edit this file 'description' to name the repository. cvs-fast-export-1.35/tests/t9601.git/.git/branches/0000775000175000017500000000000012624621643020020 5ustar esresrcvs-fast-export-1.35/tests/t9601.git/.git/info/0000775000175000017500000000000012624621643017166 5ustar esresrcvs-fast-export-1.35/tests/t9601.git/.git/info/exclude0000664000175000017500000000036012624621643020541 0ustar esresr# git ls-files --others --exclude-from=.git/info/exclude # Lines that start with '#' are comments. # For a project mostly in C, the following would be a good set of # exclude patterns (uncomment them if you want to use them): # *.[oa] # *~ cvs-fast-export-1.35/tests/t9601.git/.git/objects/0000775000175000017500000000000012624621643017664 5ustar esresrcvs-fast-export-1.35/tests/t9601.git/.git/objects/pack/0000775000175000017500000000000012624621643020602 5ustar esresr././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootcvs-fast-export-1.35/tests/t9601.git/.git/objects/pack/pack-363a885d1c362f62211baf91297e9f6b52856fe2.packcvs-fast-export-1.35/tests/t9601.git/.git/objects/pack/pack-363a885d1c362f62211baf91297e9f6b52856fe20000444000175000017500000000753212624621643026702 0ustar esresrPACK(xsLIKW(,VHIQHJM/JU-/*e(gd(d($b=.x ,Vt]<ļ GM4Ĕݒ<܂=.1x ,Vt]C<ļ GM4܂ļJ=.Phx5Q 0D=\CRwCLV6k07|4D%I2G)3=΢m}4cގu[m[3JX~,%x ,Vt]C<ļ GM4܂̴L &WRQ5Axsp ,Vt]|F@%x-A 0ᄁ? }? dd27Ї /(I%h&HY՜uu۟ж11<3C2-b]rN)(x ,Vt]C<ļ GM4܂̴=.o?x37ɕWRQ$x36]RWRQ*x ,Vt]#<ļ GM4܂ݒT=.֒ xm10Cw"R;EPX҆jafeyp^9+|Zwʲ [wAO0b RҴBh15:5]k/ r2$[*; sfᣦ8 c( 7Ѥx340031QK,L/Jep8ţpLӄ]XS0l1-/*IM-)LN+(a)񴃽q*] x10 sX:qj /nkQPk~O%>-'vU9Qy0H%(H$$aUaNv; MCY,: xI0 y %u&B3-TQ2sZT#m{'M:#qT%jh.:WP&AYЦ)@5\1Qp vaD&iת:-TجRxNm X;ix ҷy#ls|ݟ+X9 xI 1@}NQKŁ Dp1*I[B+xm~o̠u%1$}-N>Z?Ru躵,uUgӺ/:ɝ xK 0}N1K3i cLI+ڦ+xWoUEAgɜ5bf7MhUB,!щq1 h$ZݦR(/zB:C]JeT-V^t;x<>8;?xʸiBVtn~JfZfjnfnA~QIj^IE >橎'Ԟ0Yְ"C3:]Nk>wq~A7gZM*> xI0 y7 7 !UJ|4@1r NF}HEc Ql˫Sd8> P09 {LHvxj[d7@KytŞj}.fm*Y,f9yx[iF=K?1iny".Pģsa xA 1 }E4&mSATMMUtwew8s JMOlJ \85 Y|1*8z̗͒Lb 7Z5p H]y4ãMW{O)30{?Vw0p>k68xr2ݨ*OʴIwxL 0+& i`k$n7P;Ņd/G-jjM;t$G35<*#^ГAk0`RzABtm}=n{.FW>Fw:yNGU\Ry3-+.ʅ)RLU?p=OؕKZx1-'added-imported.txtpxv{Vh\,ב&ܒ xK 0FyVq6i KO[H q n3&7ظ]Z0!*KQ*8CI#!r6Ko=cH>%VN"<\NN,Q"T}3* zն.Dh^>Yx;tiH^?Fy[+=_O   xM @=Ɵ@N!1&.=Ck!k|oZ}&: !X6bsakZeJzvH[r蓠)%Z+~Tx2 .?`@h zbGkǪZj*/qak<>;Fi(x[4qĬh@Q xK 0@9EN> cLUM |o6U P!us8brj*s.J} bu vV=Jկ֗_ښYHfCqgkǪRjӻ*pt)311 \ VʘerJ;I3'l<+Ho}M&z>ER & RJ(NȊ4ò{+eז_)\ tyt9ŜihQ7H/<8Ltx%ptwice.txtGۃw> @Dx; 0D{b`VDN*v$ ]fnD }5G&%CeaɚDDecXĬr:jD%%"8'O[|cڷp7Y .k۲WyW =FeKdtxȸiJb^~^en~iqN^IE ãʆjؖr}evцf&& E%)yɩ`=w(x�1:hBȻcgBUUxx8rlT8xK 0 D9%`9@%zY,QC{벳yȣ> lDjTdU&Ef7r ^ wDC؎>:mER팥s|r>+]8^YZWCG7ZcZ9ZnēZc?L=R;fCMmsِߢ_p*.rB2nCyIsz)QHcVD{\t3KGY|1 F?)i:!WcnRêx|)dT_==yzGۃw> mAc<}`H99V4fw H=os٧pxv{Vh\,שkFU](gCjbI٧M4/K'Yr6RVcnQ͸&# !5#kGaU$}H"vgYG"1 (1D Kۿr[R TuᮙnF&AWU#1&=u 3_ -kofKcaK> (";/\r2ݨ*OʴI~ _muoKݡ(,$[Hoxez]? BU^$Iw1[keeKKJ獰Rgq^ ngj? k+*Rcb?N\sX:`x %EIp_eF+ b;d&:"GaVm=33 sm1 /|?]]$X8-wvL  M? ,i h(Qk @x  J  Dr ]6:]6/b!)~kRol)sÐ q|c7cvs-fast-export-1.35/tests/t9601.git/.git/objects/info/0000775000175000017500000000000012624621643020617 5ustar esresrcvs-fast-export-1.35/tests/t9601.git/imported-modified.txt0000664000175000017500000000016112624621643021532 0ustar esresrThis is a modification of imported-modified.txt on HEAD. It should supersede the version from the vendor branch. cvs-fast-export-1.35/tests/expand.repo/0000775000175000017500000000000012621357737016257 5ustar esresrcvs-fast-export-1.35/tests/expand.repo/module/0000775000175000017500000000000012621357747017545 5ustar esresrcvs-fast-export-1.35/tests/expand.repo/module/README,v0000444000175000017500000000132512621357747020664 0ustar esresrhead 1.3; access; symbols; locks; strict; comment @# @; 1.3 date 2015.11.13.13.04.39; author esr; state Exp; branches; next 1.2; commitid 1005645DFE70E38942C; 1.2 date 2015.11.13.13.04.36; author esr; state Exp; branches; next 1.1; commitid 1005645DFE40E360253; 1.1 date 2015.11.13.13.04.33; author esr; state Exp; branches; next ; commitid 1005645DFE10E3238A6; desc @@ 1.3 log @Yet another sample commit @ text @$Revision: (this should go away) $ should expand to someting with 1.3 in it. @ 1.2 log @This is another sample commit @ text @d1 1 a1 1 $Revision$ should expand to something with 1.2 in it. @ 1.1 log @This is a sample commit @ text @d1 1 a1 1 $Revision$ should expand to something with 1.1 in it. @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/0000775000175000017500000000000012624160405017401 5ustar esresrcvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#postadmin0000664000175000017500000000171212621357737021461 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/cvswrappers0000444000175000017500000000113212621357737021711 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/expand.repo/CVSROOT/loginfo,v0000444000175000017500000000415512621357737021241 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#checkoutlist0000664000175000017500000000075712621357737022174 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#cvswrappers0000664000175000017500000000113212621357737022036 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/expand.repo/CVSROOT/val-tags0000666000175000017500000000000012621357737021047 0ustar esresrcvs-fast-export-1.35/tests/expand.repo/CVSROOT/postadmin0000444000175000017500000000171212621357737021334 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#rcsinfo0000664000175000017500000000121112621357737021120 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/verifymsg,v0000444000175000017500000000334512621357737021617 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/checkoutlist0000444000175000017500000000075712621357737022047 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/expand.repo/CVSROOT/commitinfo,v0000444000175000017500000000275412621357737021753 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#postwatch0000664000175000017500000000175512621357737021506 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/posttag,v0000444000175000017500000000420612621357737021262 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#preproxy0000664000175000017500000000234312621357737021354 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/taginfo0000444000175000017500000000437712621357737020777 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#postproxy0000664000175000017500000000220112621357737021544 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/verifymsg0000444000175000017500000000277112621357737021357 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/expand.repo/CVSROOT/history0000666000175000017500000000050012621357747021040 0ustar esresrO5645dfdf|esr|~/public_html/cvs-fast-export/tests/*0|module||module A5645dfe1|esr|~/public_html/cvs-fast-export/tests/expand.checkout|module|1.1|README M5645dfe4|esr|~/public_html/cvs-fast-export/tests/expand.checkout|module|1.2|README M5645dfe7|esr|~/public_html/cvs-fast-export/tests/expand.checkout|module|1.3|README cvs-fast-export-1.35/tests/expand.repo/CVSROOT/postwatch,v0000444000175000017500000000233112621357737021612 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/postadmin,v0000444000175000017500000000226612621357737021603 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/config0000444000175000017500000001004712621357737020604 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/expand.repo/CVSROOT/config,v0000444000175000017500000001042312621357737021044 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/rcsinfo,v0000444000175000017500000000156512621357737021251 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/loginfo0000444000175000017500000000360112621357737020772 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/expand.repo/CVSROOT/commitinfo0000444000175000017500000000240012621357737021475 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/posttag0000444000175000017500000000363212621357737021022 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/postproxy,v0000444000175000017500000000255512621357737021675 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/postproxy0000444000175000017500000000220112621357737021417 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/rcsinfo0000444000175000017500000000121112621357737020773 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/preproxy0000444000175000017500000000234312621357737021227 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/modules,v0000444000175000017500000000244512621357737021254 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#config0000664000175000017500000001004712621357737020731 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/expand.repo/CVSROOT/notify0000444000175000017500000000163412621357737020651 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/expand.repo/CVSROOT/checkoutlist,v0000444000175000017500000000133312621357737022300 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#commitinfo0000664000175000017500000000240012621357737021622 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/Emptydir/0000775000175000017500000000000012621357737021213 5ustar esresrcvs-fast-export-1.35/tests/expand.repo/CVSROOT/notify,v0000444000175000017500000000221012621357737021102 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#taginfo0000664000175000017500000000437712621357737021124 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#verifymsg0000664000175000017500000000277112621357737021504 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/expand.repo/CVSROOT/postwatch0000444000175000017500000000175512621357737021361 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/cvswrappers,v0000444000175000017500000000150612621357737022160 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/preproxy,v0000444000175000017500000000271712621357737021476 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/taginfo,v0000444000175000017500000000475312621357737021237 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.04.31; author esr; state Exp; branches; next ; commitid 1005645DFDF0E2C1FBC; desc @@ 1.1 log @initial checkin@ text @# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#notify0000664000175000017500000000163412621357737020776 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/expand.repo/CVSROOT/modules0000444000175000017500000000207112621357737021005 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#posttag0000664000175000017500000000363212621357737021147 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#modules0000664000175000017500000000207112621357737021132 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/expand.repo/CVSROOT/.#loginfo0000664000175000017500000000360112621357737021117 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/expand.chk0000664000175000017500000000201312536065263015771 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 60 $Revision: 1.1 $ should expand to something with 1.1 in it. commit refs/heads/master mark :2 committer foo 101200 +0000 data 24 This is a sample commit M 100644 :1 README M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 11 README 1.1 blob mark :3 data 60 $Revision: 1.2 $ should expand to something with 1.2 in it. commit refs/heads/master mark :4 committer foo 102400 +0000 data 30 This is another sample commit from :2 M 100644 :3 README property cvs-revision 11 README 1.2 blob mark :5 data 59 $Revision: 1.3 $ should expand to someting with 1.3 in it. commit refs/heads/master mark :6 committer foo 103600 +0000 data 26 Yet another sample commit from :4 M 100644 :5 README property cvs-revision 11 README 1.3 reset refs/heads/master from :6 done cvs-fast-export-1.35/tests/at.chk0000664000175000017500000000101112536065263015113 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 43 The quick brown fox jumped @t the lazy dog. commit refs/heads/master mark :2 committer foo 101200 +0000 data 24 This is a sample commit M 100644 :1 README M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 11 README 1.1 reset refs/heads/master from :2 done cvs-fast-export-1.35/tests/t9602.testrepo/0000775000175000017500000000000012435607267016463 5ustar esresrcvs-fast-export-1.35/tests/t9602.testrepo/.gitattributes0000664000175000017500000000001612435607267021353 0ustar esresr* -whitespace cvs-fast-export-1.35/tests/t9602.testrepo/module/0000775000175000017500000000000012624621651017741 5ustar esresrcvs-fast-export-1.35/tests/t9602.testrepo/module/sub1/0000775000175000017500000000000012624621651020613 5ustar esresrcvs-fast-export-1.35/tests/t9602.testrepo/module/sub1/subsubA/0000775000175000017500000000000012624621651022217 5ustar esresrcvs-fast-export-1.35/tests/t9602.testrepo/module/sub1/subsubA/default,v0000664000175000017500000000253612435607267024045 0ustar esresrhead 1.3; access; symbols B_SPLIT:1.3.0.4 B_MIXED:1.3.0.2 T_MIXED:1.3 B_FROM_INITIALS_BUT_ONE:1.1.1.1.0.4 B_FROM_INITIALS:1.1.1.1.0.2 T_ALL_INITIAL_FILES_BUT_ONE:1.1.1.1 T_ALL_INITIAL_FILES:1.1.1.1 vendortag:1.1.1.1 vendorbranch:1.1.1; locks; strict; comment @# @; 1.3 date 2003.05.23.00.17.53; author jrandom; state Exp; branches 1.3.4.1; next 1.2; 1.2 date 2003.05.23.00.15.26; author jrandom; state Exp; branches; next 1.1; 1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches; next ; 1.3.4.1 date 2003.06.03.03.20.31; author jrandom; state Exp; branches; next ; desc @@ 1.3 log @Second commit to proj, affecting all 7 files. @ text @This is sub1/subsubA/default. Every directory in the `proj' project has a file named `default'. This line was added by the first commit (affecting two files). This line was added in the second commit (affecting all 7 files). @ 1.3.4.1 log @First change on branch B_SPLIT. This change excludes sub3/default, because it was not part of this commit, and sub1/subsubB/default, which is not even on the branch yet. @ text @a7 2 First change on branch B_SPLIT. @ 1.2 log @First commit to proj, affecting two files. @ text @d6 2 @ 1.1 log @Initial revision @ text @d4 2 @ 1.1.1.1 log @Initial import. @ text @@ cvs-fast-export-1.35/tests/t9602.testrepo/module/sub1/subsubB/0000775000175000017500000000000012624621651022220 5ustar esresrcvs-fast-export-1.35/tests/t9602.testrepo/module/sub1/subsubB/default,v0000664000175000017500000000367112435607267024047 0ustar esresrhead 1.3; access; symbols B_SPLIT:1.3.0.2 B_MIXED:1.2.0.2 T_MIXED:1.2 B_FROM_INITIALS:1.1.1.1.0.2 T_ALL_INITIAL_FILES:1.1.1.1 vendortag:1.1.1.1 vendorbranch:1.1.1; locks; strict; comment @# @; 1.3 date 2003.06.03.04.29.14; author jrandom; state Exp; branches 1.3.2.1; next 1.2; 1.2 date 2003.05.23.00.17.53; author jrandom; state Exp; branches; next 1.1; 1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches; next ; 1.3.2.1 date 2003.06.03.04.33.13; author jrandom; state Exp; branches; next ; desc @@ 1.3 log @A trunk change to sub1/subsubB/default. This was committed about an hour after an earlier change that affected most files on branch B_SPLIT. This file is not on that branch yet, but after this commit, we'll branch to B_SPLIT, albeit rooted in a revision that didn't exist at the time the rest of B_SPLIT was created. @ text @This is sub1/subsubB/default. Every directory in the `proj' project has a file named `default'. This line was added in the second commit (affecting all 7 files). This bit was committed on trunk about an hour after an earlier change to everyone else on branch B_SPLIT. Afterwards, we'll finally branch this file to B_SPLIT, but rooted in a revision that didn't exist at the time the rest of B_SPLIT was created. @ 1.3.2.1 log @This change affects sub3/default and sub1/subsubB/default, on branch B_SPLIT. Note that the latter file did not even exist on this branch until after some other files had had revisions committed on B_SPLIT. @ text @a10 4 This change affects sub3/default and sub1/subsubB/default, on branch B_SPLIT. Note that the latter file did not even exist on this branch until after some other files had had revisions committed on B_SPLIT. @ 1.2 log @Second commit to proj, affecting all 7 files. @ text @d6 5 @ 1.1 log @Initial revision @ text @d4 2 @ 1.1.1.1 log @Initial import. @ text @@ cvs-fast-export-1.35/tests/t9602.testrepo/module/sub1/default,v0000664000175000017500000000254112435607267022435 0ustar esresrhead 1.2; access; symbols B_SPLIT:1.2.0.4 B_MIXED:1.2.0.2 T_MIXED:1.2 B_FROM_INITIALS_BUT_ONE:1.1.1.1.0.4 B_FROM_INITIALS:1.1.1.1.0.2 T_ALL_INITIAL_FILES_BUT_ONE:1.1.1.1 T_ALL_INITIAL_FILES:1.1.1.1 vendortag:1.1.1.1 vendorbranch:1.1.1; locks; strict; comment @# @; 1.2 date 2003.05.23.00.17.53; author jrandom; state Exp; branches 1.2.2.1 1.2.4.1; next 1.1; 1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches; next ; 1.2.2.1 date 2003.05.23.00.31.36; author jrandom; state Exp; branches; next ; 1.2.4.1 date 2003.06.03.03.20.31; author jrandom; state Exp; branches; next ; desc @@ 1.2 log @Second commit to proj, affecting all 7 files. @ text @This is sub1/default. Every directory in the `proj' project has a file named `default'. This line was added in the second commit (affecting all 7 files). @ 1.2.4.1 log @First change on branch B_SPLIT. This change excludes sub3/default, because it was not part of this commit, and sub1/subsubB/default, which is not even on the branch yet. @ text @a5 2 First change on branch B_SPLIT. @ 1.2.2.1 log @Modify three files, on branch B_MIXED. @ text @a5 2 This line was added on branch B_MIXED only (affecting 3 files). @ 1.1 log @Initial revision @ text @d4 2 @ 1.1.1.1 log @Initial import. @ text @@ cvs-fast-export-1.35/tests/t9602.testrepo/module/sub2/0000775000175000017500000000000012624621651020614 5ustar esresrcvs-fast-export-1.35/tests/t9602.testrepo/module/sub2/subsubA/0000775000175000017500000000000012624621651022220 5ustar esresrcvs-fast-export-1.35/tests/t9602.testrepo/module/sub2/subsubA/default,v0000664000175000017500000000255112435607267024043 0ustar esresrhead 1.2; access; symbols B_SPLIT:1.2.0.2 B_MIXED:1.1.0.2 T_MIXED:1.1 B_FROM_INITIALS_BUT_ONE:1.1.1.1.0.4 B_FROM_INITIALS:1.1.1.1.0.2 T_ALL_INITIAL_FILES_BUT_ONE:1.1.1.1 T_ALL_INITIAL_FILES:1.1.1.1 vendortag:1.1.1.1 vendorbranch:1.1.1; locks; strict; comment @# @; 1.2 date 2003.05.23.00.17.53; author jrandom; state Exp; branches 1.2.2.1; next 1.1; 1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches 1.1.1.1 1.1.2.1; next ; 1.1.1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches; next ; 1.1.2.1 date 2003.05.23.00.31.36; author jrandom; state Exp; branches; next ; 1.2.2.1 date 2003.06.03.03.20.31; author jrandom; state Exp; branches; next ; desc @@ 1.2 log @Second commit to proj, affecting all 7 files. @ text @This is sub2/subsub2/default. Every directory in the `proj' project has a file named `default'. This line was added in the second commit (affecting all 7 files). @ 1.2.2.1 log @First change on branch B_SPLIT. This change excludes sub3/default, because it was not part of this commit, and sub1/subsubB/default, which is not even on the branch yet. @ text @a5 2 First change on branch B_SPLIT. @ 1.1 log @Initial revision @ text @d4 2 @ 1.1.2.1 log @Modify three files, on branch B_MIXED. @ text @a3 2 This line was added on branch B_MIXED only (affecting 3 files). @ 1.1.1.1 log @Initial import. @ text @@ cvs-fast-export-1.35/tests/t9602.testrepo/module/sub2/default,v0000664000175000017500000000265212435607267022441 0ustar esresrhead 1.3; access; symbols B_SPLIT:1.3.0.2 B_MIXED:1.2.0.2 T_MIXED:1.2 B_FROM_INITIALS_BUT_ONE:1.1.1.1.0.4 B_FROM_INITIALS:1.1.1.1.0.2 T_ALL_INITIAL_FILES_BUT_ONE:1.1.1.1 T_ALL_INITIAL_FILES:1.1.1.1 vendortag:1.1.1.1 vendorbranch:1.1.1; locks; strict; comment @# @; 1.3 date 2003.05.23.00.48.51; author jrandom; state Exp; branches 1.3.2.1; next 1.2; 1.2 date 2003.05.23.00.17.53; author jrandom; state Exp; branches; next 1.1; 1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches; next ; 1.3.2.1 date 2003.06.03.03.20.31; author jrandom; state Exp; branches; next ; desc @@ 1.3 log @A single commit affecting one file on branch B_MIXED and one on trunk. @ text @This is sub2/default. Every directory in the `proj' project has a file named `default'. This line was added in the second commit (affecting all 7 files). The same commit added these two lines here on trunk, and two similar lines to ./branch_B_MIXED_only on branch B_MIXED. @ 1.3.2.1 log @First change on branch B_SPLIT. This change excludes sub3/default, because it was not part of this commit, and sub1/subsubB/default, which is not even on the branch yet. @ text @a8 2 First change on branch B_SPLIT. @ 1.2 log @Second commit to proj, affecting all 7 files. @ text @d6 3 @ 1.1 log @Initial revision @ text @d4 2 @ 1.1.1.1 log @Initial import. @ text @@ cvs-fast-export-1.35/tests/t9602.testrepo/module/sub2/Attic/0000775000175000017500000000000012435607267021667 5ustar esresrcvs-fast-export-1.35/tests/t9602.testrepo/module/sub2/Attic/branch_B_MIXED_only,v0000664000175000017500000000136512435607267025546 0ustar esresrhead 1.1; access; symbols B_MIXED:1.1.0.2; locks; strict; comment @# @; 1.1 date 2003.05.23.00.25.26; author jrandom; state dead; branches 1.1.2.1; next ; 1.1.2.1 date 2003.05.23.00.25.26; author jrandom; state Exp; branches; next 1.1.2.2; 1.1.2.2 date 2003.05.23.00.48.51; author jrandom; state Exp; branches; next ; desc @@ 1.1 log @file branch_B_MIXED_only was initially added on branch B_MIXED. @ text @@ 1.1.2.1 log @Add a file on branch B_MIXED. @ text @a0 1 This file was added on branch B_MIXED. It never existed on trunk. @ 1.1.2.2 log @A single commit affecting one file on branch B_MIXED and one on trunk. @ text @a1 3 The same commit added these two lines here on branch B_MIXED, and two similar lines to ./default on trunk. @ cvs-fast-export-1.35/tests/t9602.testrepo/module/sub3/0000775000175000017500000000000012624621651020615 5ustar esresrcvs-fast-export-1.35/tests/t9602.testrepo/module/sub3/default,v0000664000175000017500000000305312435607267022436 0ustar esresrhead 1.3; access; symbols B_SPLIT:1.3.0.2 B_MIXED:1.2.0.2 T_MIXED:1.2 B_FROM_INITIALS_BUT_ONE:1.1.1.1.0.4 B_FROM_INITIALS:1.1.1.1.0.2 T_ALL_INITIAL_FILES_BUT_ONE:1.1.1.1 T_ALL_INITIAL_FILES:1.1.1.1 vendortag:1.1.1.1 vendorbranch:1.1.1; locks; strict; comment @# @; 1.3 date 2003.05.23.00.17.53; author jrandom; state Exp; branches 1.3.2.1; next 1.2; 1.2 date 2003.05.23.00.15.26; author jrandom; state Exp; branches; next 1.1; 1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches; next ; 1.3.2.1 date 2003.06.03.04.33.13; author jrandom; state Exp; branches; next ; desc @@ 1.3 log @Second commit to proj, affecting all 7 files. @ text @This is sub3/default. Every directory in the `proj' project has a file named `default'. This line was added by the first commit (affecting two files). This line was added in the second commit (affecting all 7 files). @ 1.3.2.1 log @This change affects sub3/default and sub1/subsubB/default, on branch B_SPLIT. Note that the latter file did not even exist on this branch until after some other files had had revisions committed on B_SPLIT. @ text @a7 4 This change affects sub3/default and sub1/subsubB/default, on branch B_SPLIT. Note that the latter file did not even exist on this branch until after some other files had had revisions committed on B_SPLIT. @ 1.2 log @First commit to proj, affecting two files. @ text @d6 2 @ 1.1 log @Initial revision @ text @d4 2 @ 1.1.1.1 log @Initial import. @ text @@ cvs-fast-export-1.35/tests/t9602.testrepo/module/default,v0000664000175000017500000000260712435607267021566 0ustar esresrhead 1.2; access; symbols B_SPLIT:1.2.0.4 B_MIXED:1.2.0.2 T_MIXED:1.2 B_FROM_INITIALS_BUT_ONE:1.1.1.1.0.4 B_FROM_INITIALS:1.1.1.1.0.2 T_ALL_INITIAL_FILES_BUT_ONE:1.1.1.1 T_ALL_INITIAL_FILES:1.1.1.1 vendortag:1.1.1.1 vendorbranch:1.1.1; locks; strict; comment @# @; 1.2 date 2003.05.23.00.17.53; author jrandom; state Exp; branches 1.2.2.1 1.2.4.1; next 1.1; 1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches 1.1.1.1; next ; 1.1.1.1 date 2003.05.22.23.20.19; author jrandom; state Exp; branches; next ; 1.2.2.1 date 2003.05.23.00.31.36; author jrandom; state Exp; branches; next ; 1.2.4.1 date 2003.06.03.03.20.31; author jrandom; state Exp; branches; next ; desc @@ 1.2 log @Second commit to proj, affecting all 7 files. @ text @This is the file `default' in the top level of the project. Every directory in the `proj' project has a file named `default'. This line was added in the second commit (affecting all 7 files). @ 1.2.4.1 log @First change on branch B_SPLIT. This change excludes sub3/default, because it was not part of this commit, and sub1/subsubB/default, which is not even on the branch yet. @ text @a5 2 First change on branch B_SPLIT. @ 1.2.2.1 log @Modify three files, on branch B_MIXED. @ text @a5 2 This line was added on branch B_MIXED only (affecting 3 files). @ 1.1 log @Initial revision @ text @d4 2 @ 1.1.1.1 log @Initial import. @ text @@ cvs-fast-export-1.35/tests/t9602.testrepo/CVSROOT/0000775000175000017500000000000012624621651017613 5ustar esresrcvs-fast-export-1.35/tests/t9602.testrepo/CVSROOT/val-tags0000664000175000017500000000021212436024536021247 0ustar esresrB_FROM_INITIALS y B_FROM_INITIALS_BUT_ONE y B_MIXED y B_SPLIT y vendortag y T_ALL_INITIAL_FILES y T_ALL_INITIAL_FILES_BUT_ONE y T_MIXED y cvs-fast-export-1.35/tests/t9602.testrepo/CVSROOT/.gitignore0000664000175000017500000000002112435607267021603 0ustar esresrhistory val-tags cvs-fast-export-1.35/tests/t9602.testrepo/CVSROOT/history0000664000175000017500000221130212624621651021240 0ustar esresrO54782958|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54782959|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54782959|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54782959|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54782959|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54782959|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54782959|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54782959|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5478295a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5478295a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5478295a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5478295a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5478295a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5478295a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5478295a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5478295b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5478295b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5478295b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5478295b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5478295b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5478295b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5478295b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5478295b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5478295b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5478295c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5478295c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5478295c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5478295c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5478295c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5478295c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5478295c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5478295c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5478295d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5478295d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5478295d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5478295d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5478295d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5478295d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5478295d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5478295e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5478295e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5478295e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5478295e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5478295e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5478295e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5478295e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5478295e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O547849c2|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547849c3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547849c3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547849c3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547849c3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U547849c3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U547849c3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U547849c3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U547849c4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547849c4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547849c4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547849c4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547849c4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547849c4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547849c4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547849c5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547849c5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U547849c5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U547849c5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547849c5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547849c5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U547849c5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547849c5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U547849c5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U547849c6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U547849c6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U547849c6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U547849c6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W547849c6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U547849c6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U547849c6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U547849c6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U547849c7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547849c7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547849c7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547849c7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547849c7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547849c7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547849c7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547849c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547849c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547849c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547849c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547849c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547849c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547849c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U547849c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54785ce3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54785ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54785ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54785ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54785ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54785ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54785ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54785ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54785ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54785ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54785ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54785ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54785ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54785ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54785ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54785ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54785ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54785ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54785ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54785ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54785ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54785ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54785ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54785ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54785ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54785ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54785ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54785ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54785ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54785ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54785ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54785ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54785ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54785ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54785ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54785ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54785ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54785ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54785ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54785ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54785ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54785ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54785ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54785ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54785ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54785ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54785ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54785d97|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54785d98|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54785d98|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54785d98|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54785d98|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54785d98|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54785d98|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54785d98|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54785d99|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54785d99|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54785d99|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54785d99|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54785d99|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54785d99|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54785d99|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54785d9a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54785d9a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54785d9a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54785d9a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54785d9a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54785d9a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54785d9a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54785d9a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54785d9a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54785d9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54785d9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54785d9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54785d9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54785d9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54785d9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54785d9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54785d9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54785d9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54785d9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54785d9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54785d9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54785d9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54785d9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54785d9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54785d9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54785d9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54785d9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54785d9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54785d9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54785d9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54785d9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54785d9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54794423|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54794424|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54794424|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54794424|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54794424|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54794424|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54794424|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54794424|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54794425|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54794425|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54794425|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54794425|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54794425|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54794425|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54794425|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54794426|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54794426|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54794426|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54794426|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54794426|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54794426|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54794426|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54794426|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54794426|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54794427|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54794427|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54794427|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54794427|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54794427|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54794427|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54794427|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54794427|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54794428|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54794428|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54794428|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54794428|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54794428|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54794428|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54794428|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54794429|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54794429|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54794429|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54794429|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54794429|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54794429|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54794429|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54794429|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O547a0124|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a0125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547a0125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547a0125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a0125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U547a0125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U547a0125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U547a0125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U547a0126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547a0126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547a0126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547a0126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547a0126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547a0126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547a0126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547a0127|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547a0127|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U547a0127|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U547a0127|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a0127|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547a0127|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U547a0127|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547a0127|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U547a0127|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U547a0128|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U547a0128|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U547a0128|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U547a0128|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W547a0128|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U547a0128|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U547a0128|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U547a0128|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U547a0129|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547a0129|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547a0129|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547a0129|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547a0129|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547a0129|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547a0129|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547a012a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547a012a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547a012a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547a012a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a012a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547a012a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547a012a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U547a012a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O547a1e6b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a1e6c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547a1e6c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547a1e6c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a1e6c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U547a1e6c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U547a1e6c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U547a1e6c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U547a1e6d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547a1e6d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547a1e6d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547a1e6d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547a1e6d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547a1e6d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547a1e6d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547a1e6e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547a1e6e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U547a1e6e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U547a1e6e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a1e6e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547a1e6e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U547a1e6e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547a1e6e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U547a1e6e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U547a1e6f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U547a1e6f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U547a1e6f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U547a1e6f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W547a1e6f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U547a1e6f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U547a1e6f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U547a1e6f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U547a1e70|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547a1e70|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547a1e70|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547a1e70|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547a1e70|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547a1e70|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547a1e70|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547a1e71|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547a1e71|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547a1e71|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547a1e71|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a1e71|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547a1e71|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547a1e71|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U547a1e71|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O547a200b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a200c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547a200c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547a200c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a200c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U547a200c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U547a200c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U547a200c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U547a200d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547a200d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547a200d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547a200d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547a200d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547a200d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547a200d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547a200e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547a200e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U547a200e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U547a200e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a200e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547a200e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U547a200e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547a200e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U547a200e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U547a200f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U547a200f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U547a200f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U547a200f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W547a200f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U547a200f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U547a200f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U547a200f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U547a2010|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547a2010|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547a2010|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547a2010|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547a2010|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547a2010|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547a2010|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547a2011|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547a2011|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547a2011|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547a2011|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a2011|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547a2011|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547a2011|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U547a2011|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O547a2170|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a2171|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547a2171|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547a2171|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a2171|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U547a2171|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U547a2171|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U547a2171|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U547a2172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547a2172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547a2172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547a2172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547a2172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547a2172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547a2172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547a2173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547a2173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U547a2173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U547a2173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a2173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547a2173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U547a2173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547a2173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U547a2173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U547a2174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U547a2174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U547a2174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U547a2174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W547a2174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U547a2174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U547a2174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U547a2174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U547a2175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547a2175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547a2175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547a2175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547a2175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547a2175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547a2175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547a2176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547a2176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547a2176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547a2176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a2176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547a2176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547a2176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U547a2176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O547a3b20|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547a3b21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547a3b21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547a3b21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a3b21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U547a3b21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U547a3b21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U547a3b21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U547a3b22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547a3b22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547a3b22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547a3b22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547a3b22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547a3b22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547a3b22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547a3b23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547a3b23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U547a3b23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U547a3b23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a3b23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547a3b23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U547a3b23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547a3b23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U547a3b23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U547a3b24|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U547a3b24|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U547a3b24|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U547a3b24|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W547a3b24|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U547a3b24|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U547a3b24|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U547a3b24|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U547a3b25|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547a3b25|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547a3b25|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547a3b25|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547a3b25|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547a3b25|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547a3b25|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547a3b26|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547a3b26|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547a3b26|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547a3b26|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547a3b26|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547a3b26|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547a3b26|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U547a3b26|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O547e198e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547e198f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547e198f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547e198f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547e198f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U547e198f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U547e198f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U547e198f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U547e1990|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547e1990|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547e1990|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547e1990|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547e1990|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547e1990|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547e1990|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547e1991|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547e1991|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U547e1991|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U547e1991|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547e1991|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547e1991|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U547e1991|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547e1991|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U547e1991|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U547e1992|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U547e1992|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U547e1992|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U547e1992|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W547e1992|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U547e1992|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U547e1992|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U547e1992|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U547e1993|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547e1993|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547e1993|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547e1993|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547e1993|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547e1993|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547e1993|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547e1994|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547e1994|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547e1994|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547e1994|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547e1994|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547e1994|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547e1994|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U547e1994|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O547e1a86|esr|~/public_html/cvs-fast-export/tests/*0|module||module U547e1a87|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547e1a87|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547e1a87|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547e1a87|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U547e1a87|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U547e1a87|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U547e1a87|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U547e1a88|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547e1a88|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547e1a88|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547e1a88|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547e1a88|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547e1a88|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547e1a88|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547e1a89|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547e1a89|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U547e1a89|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U547e1a89|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547e1a89|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547e1a89|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U547e1a89|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547e1a89|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U547e1a89|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U547e1a8a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U547e1a8a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U547e1a8a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U547e1a8a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W547e1a8a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U547e1a8a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U547e1a8a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U547e1a8a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U547e1a8b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U547e1a8b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U547e1a8b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U547e1a8b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U547e1a8b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U547e1a8b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U547e1a8b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W547e1a8c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U547e1a8c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U547e1a8c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U547e1a8c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U547e1a8c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U547e1a8c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U547e1a8c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U547e1a8c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54801464|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54801465|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54801465|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54801465|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54801465|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54801465|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54801465|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54801465|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54801466|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54801466|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54801466|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54801466|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54801466|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54801466|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54801466|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54801467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54801467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54801467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54801467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54801467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54801467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54801467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54801467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54801467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54801468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54801468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54801468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54801468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54801468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54801468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54801468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54801468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54801469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54801469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54801469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54801469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54801469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54801469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54801469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5480146a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5480146a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5480146a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5480146a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5480146a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5480146a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5480146a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5480146a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54801b32|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54801b33|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54801b33|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54801b33|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54801b33|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54801b33|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54801b33|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54801b33|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54801b34|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54801b34|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54801b34|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54801b34|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54801b34|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54801b34|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54801b34|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54801b35|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54801b35|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54801b35|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54801b35|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54801b35|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54801b35|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54801b35|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54801b35|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54801b35|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54801b36|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54801b36|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54801b36|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54801b36|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54801b36|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54801b36|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54801b36|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54801b36|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54801b37|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54801b37|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54801b37|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54801b37|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54801b37|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54801b37|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54801b37|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54801b38|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54801b38|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54801b38|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54801b38|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54801b38|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54801b38|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54801b38|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54801b38|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54801ce1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54801ce2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54801ce2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54801ce2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54801ce2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54801ce2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54801ce2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54801ce2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54801ce3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54801ce3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54801ce3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54801ce3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54801ce3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54801ce3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54801ce3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54801ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54801ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54801ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54801ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54801ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54801ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54801ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54801ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54801ce4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54801ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54801ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54801ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54801ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54801ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54801ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54801ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54801ce5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54801ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54801ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54801ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54801ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54801ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54801ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54801ce6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54801ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54801ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54801ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54801ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54801ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54801ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54801ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54801ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54807ba0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54807ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54807ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54807ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54807ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54807ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54807ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54807ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54807ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54807ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54807ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54807ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54807ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54807ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54807ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54807ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54807ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54807ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54807ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54807ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54807ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54807ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54807ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54807ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54807ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54807ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54807ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54807ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54807ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54807ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54807ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54807ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54807ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54807ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54807ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54807ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54807ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54807ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54807ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54807ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54807ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54807ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54807ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54807ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54807ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54807ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54807ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5480d135|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5480d136|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5480d136|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5480d136|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5480d136|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5480d136|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5480d136|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5480d136|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5480d137|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5480d137|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5480d137|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5480d137|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5480d137|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5480d137|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5480d137|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5480d138|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5480d138|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5480d138|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5480d138|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5480d138|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5480d138|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5480d138|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5480d138|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5480d138|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5480d139|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5480d139|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5480d139|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5480d139|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5480d139|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5480d139|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5480d139|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5480d139|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5480d13a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5480d13a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5480d13a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5480d13a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5480d13a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5480d13a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5480d13a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5480d13b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5480d13b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5480d13b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5480d13b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5480d13b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5480d13b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5480d13b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5480d13b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54818f74|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54818f75|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54818f75|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54818f75|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54818f75|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54818f75|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54818f75|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54818f75|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54818f76|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54818f76|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54818f76|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54818f76|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54818f76|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54818f76|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54818f76|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54818f77|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54818f77|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54818f77|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54818f77|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54818f77|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54818f77|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54818f77|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54818f77|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54818f77|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54818f78|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54818f78|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54818f78|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54818f78|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54818f78|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54818f78|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54818f78|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54818f78|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54818f79|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54818f79|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54818f79|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54818f79|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54818f79|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54818f79|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54818f79|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54818f7a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54818f7a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54818f7a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54818f7a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54818f7a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54818f7a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54818f7a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54818f7a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54831f0c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54831f0d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54831f0d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54831f0d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54831f0d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54831f0d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54831f0d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54831f0d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54831f0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54831f0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54831f0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54831f0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54831f0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54831f0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54831f0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54831f0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54831f0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54831f0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54831f0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54831f0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54831f0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54831f0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54831f0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54831f0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54831f10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54831f10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54831f10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54831f10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54831f10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54831f10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54831f10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54831f10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54831f11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54831f11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54831f11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54831f11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54831f11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54831f11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54831f11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54831f12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54831f12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54831f12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54831f12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54831f12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54831f12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54831f12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54831f12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54862cda|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54862cdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54862cdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54862cdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54862cdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54862cdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54862cdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54862cdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54862cdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54862cdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54862cdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54862cdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54862cdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54862cdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54862cdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54862cdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54862cdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54862cdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54862cdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54862cdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54862cdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54862cdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54862cdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54862cdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54862cde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54862cde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54862cde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54862cde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54862cde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54862cde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54862cde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54862cde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54862cdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54862cdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54862cdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54862cdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54862cdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54862cdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54862cdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54862ce0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54862ce0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54862ce0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54862ce0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54862ce0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54862ce0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54862ce0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54862ce0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54862e18|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54862e19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54862e19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54862e19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54862e19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54862e19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54862e19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54862e19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54862e1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54862e1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54862e1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54862e1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54862e1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54862e1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54862e1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54862e1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54862e1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54862e1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54862e1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54862e1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54862e1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54862e1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54862e1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54862e1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54862e1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54862e1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54862e1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54862e1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54862e1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54862e1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54862e1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54862e1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54862e1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54862e1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54862e1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54862e1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54862e1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54862e1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54862e1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54862e1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54862e1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54862e1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54862e1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54862e1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54862e1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54862e1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54862e1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54863531|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54863532|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54863532|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54863532|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54863532|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54863532|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54863532|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54863532|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54863533|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54863533|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54863533|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54863533|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54863533|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54863533|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54863533|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54863534|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54863534|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54863534|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54863534|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54863534|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54863534|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54863534|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54863534|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54863534|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54863535|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54863535|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54863535|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54863535|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54863535|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54863535|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54863535|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54863535|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54863536|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54863536|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54863536|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54863536|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54863536|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54863536|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54863536|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54863537|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54863537|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54863537|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54863537|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54863537|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54863537|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54863537|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54863537|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54863744|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54863745|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54863745|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54863745|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54863745|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54863745|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54863745|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54863745|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54863746|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54863746|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54863746|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54863746|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54863746|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54863746|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54863746|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54863747|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54863747|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54863747|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54863747|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54863747|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54863747|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54863747|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54863747|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54863747|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54863748|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54863748|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54863748|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54863748|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54863748|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54863748|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54863748|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54863748|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54863749|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54863749|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54863749|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54863749|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54863749|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54863749|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54863749|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5486374a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5486374a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5486374a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5486374a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5486374a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5486374a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5486374a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5486374a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54872bc3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54872bc4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54872bc4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54872bc4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54872bc4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54872bc4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54872bc4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54872bc4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54872bc5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54872bc5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54872bc5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54872bc5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54872bc5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54872bc5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54872bc5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54872bc6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54872bc6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54872bc6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54872bc6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54872bc6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54872bc6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54872bc6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54872bc6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54872bc6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54872bc7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54872bc7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54872bc7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54872bc7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54872bc7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54872bc7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54872bc7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54872bc7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54872bc8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54872bc8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54872bc8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54872bc8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54872bc8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54872bc8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54872bc8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54872bc9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54872bc9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54872bc9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54872bc9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54872bc9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54872bc9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54872bc9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54872bc9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5488791f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54887920|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54887920|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54887920|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54887920|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54887920|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54887920|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54887920|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54887921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54887921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54887921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54887921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54887921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54887921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54887921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54887922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54887922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54887922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54887922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54887922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54887922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54887922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54887922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54887922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54887923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54887923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54887923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54887923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54887923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54887923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54887923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54887923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54887924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54887924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54887924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54887924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54887924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54887924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54887924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54887925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54887925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54887925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54887925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54887925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54887925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54887925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54887925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O548ad68d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548ad68e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U548ad68e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U548ad68e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U548ad68e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U548ad68e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U548ad68e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U548ad68e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U548ad68f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U548ad68f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U548ad68f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U548ad68f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U548ad68f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U548ad68f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U548ad68f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W548ad690|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U548ad690|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U548ad690|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U548ad690|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U548ad690|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U548ad690|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U548ad690|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U548ad690|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U548ad690|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U548ad691|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U548ad691|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U548ad691|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U548ad691|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W548ad691|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U548ad691|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U548ad691|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U548ad691|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U548ad692|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U548ad692|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U548ad692|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U548ad692|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U548ad692|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U548ad692|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U548ad692|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W548ad693|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U548ad693|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U548ad693|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U548ad693|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U548ad693|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U548ad693|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U548ad693|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U548ad693|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O548e3bcd|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548e3bce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U548e3bce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U548e3bce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U548e3bce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U548e3bce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U548e3bce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U548e3bce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U548e3bcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U548e3bcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U548e3bcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U548e3bcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U548e3bcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U548e3bcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U548e3bcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W548e3bd0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U548e3bd0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U548e3bd0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U548e3bd0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U548e3bd0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U548e3bd0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U548e3bd0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U548e3bd0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U548e3bd0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U548e3bd1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U548e3bd1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U548e3bd1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U548e3bd1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W548e3bd1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U548e3bd1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U548e3bd1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U548e3bd1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U548e3bd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U548e3bd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U548e3bd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U548e3bd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U548e3bd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U548e3bd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U548e3bd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W548e3bd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U548e3bd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U548e3bd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U548e3bd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U548e3bd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U548e3bd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U548e3bd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U548e3bd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O548fa4a1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U548fa4a2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U548fa4a2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U548fa4a2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U548fa4a2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U548fa4a2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U548fa4a2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U548fa4a2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U548fa4a3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U548fa4a3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U548fa4a3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U548fa4a3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U548fa4a3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U548fa4a3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U548fa4a3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W548fa4a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U548fa4a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U548fa4a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U548fa4a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U548fa4a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U548fa4a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U548fa4a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U548fa4a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U548fa4a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U548fa4a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U548fa4a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U548fa4a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U548fa4a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W548fa4a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U548fa4a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U548fa4a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U548fa4a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U548fa4a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U548fa4a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U548fa4a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U548fa4a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U548fa4a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U548fa4a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U548fa4a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W548fa4a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U548fa4a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U548fa4a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U548fa4a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U548fa4a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U548fa4a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U548fa4a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U548fa4a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54909ce6|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54909ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54909ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54909ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54909ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54909ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54909ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54909ce7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54909ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54909ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54909ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54909ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54909ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54909ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54909ce8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54909ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54909ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54909ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54909ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54909ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54909ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54909ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54909ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54909ce9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54909cea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54909cea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54909cea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54909cea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54909cea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54909cea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54909cea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54909cea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54909ceb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54909ceb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54909ceb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54909ceb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54909ceb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54909ceb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54909ceb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54909cec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54909cec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54909cec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54909cec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54909cec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54909cec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54909cec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54909cec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490a277|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490a278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490a278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490a278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490a278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490a278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490a278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490a278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490a279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490a279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490a279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490a279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490a279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490a279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490a279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490a27a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490a27a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490a27a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490a27a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490a27a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490a27a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490a27a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490a27a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490a27a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490a27b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490a27b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490a27b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490a27b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490a27b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490a27b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490a27b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490a27b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490a27c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490a27c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490a27c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490a27c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490a27c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490a27c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490a27c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490a27d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490a27d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490a27d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490a27d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490a27d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490a27d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490a27d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490a27d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490a918|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490ac2c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ac2d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490ac2d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490ac2d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490ac2d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490ac2d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490ac2d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490ac2d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490ac2e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490ac2e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490ac2e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490ac2e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490ac2e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490ac2e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490ac2e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490ac2f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490ac2f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490ac2f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490ac2f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490ac2f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490ac2f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490ac2f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490ac2f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490ac2f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490ac30|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490ac30|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490ac30|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490ac30|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490ac30|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490ac30|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490ac30|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490ac30|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490ac31|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490ac31|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490ac31|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490ac31|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490ac31|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490ac31|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490ac31|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490ac32|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490ac32|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490ac32|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490ac32|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490ac32|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490ac32|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490ac32|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490ac32|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490acf9|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490acfa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490acfa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490acfa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490acfa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490acfa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490acfa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490acfa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490acfb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490acfb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490acfb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490acfb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490acfb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490acfb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490acfb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490acfc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490acfc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490acfc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490acfc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490acfc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490acfc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490acfc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490acfc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490acfc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490acfd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490acfd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490acfd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490acfd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490acfd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490acfd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490acfd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490acfd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490acfe|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490acfe|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490acfe|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490acfe|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490acfe|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490acfe|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490acfe|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490acff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490acff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490acff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490acff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490acff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490acff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490acff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490acff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490ad42|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490ad43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490ad43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490ad43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490ad43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490ad43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490ad43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490ad43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490ad44|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490ad44|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490ad44|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490ad44|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490ad44|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490ad44|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490ad44|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490ad45|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490ad45|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490ad45|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490ad45|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490ad45|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490ad45|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490ad45|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490ad45|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490ad45|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490ad46|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490ad46|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490ad46|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490ad46|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490ad46|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490ad46|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490ad46|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490ad46|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490ad47|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490ad47|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490ad47|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490ad47|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490ad47|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490ad47|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490ad47|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490ad48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490ad48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490ad48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490ad48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490ad48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490ad48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490ad48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490ad48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490aef0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490aef1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490aef1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490aef1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490aef1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490aef1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490aef1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490aef1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490aef2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490aef2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490aef2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490aef2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490aef2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490aef2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490aef2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490aef3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490aef3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490aef3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490aef3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490aef3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490aef3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490aef3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490aef3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490aef3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490aef4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490aef4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490aef4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490aef4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490aef4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490aef4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490aef4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490aef4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490aef5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490aef5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490aef5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490aef5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490aef5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490aef5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490aef5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490aef6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490aef6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490aef6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490aef6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490aef6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490aef6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490aef6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490aef6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490b293|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b294|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490b294|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490b294|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490b294|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490b294|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490b294|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490b294|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490b295|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490b295|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490b295|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490b295|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490b295|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490b295|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490b295|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490b296|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490b296|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490b296|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490b296|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490b296|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490b296|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490b296|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490b296|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490b296|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490b297|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490b297|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490b297|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490b297|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490b297|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490b297|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490b297|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490b297|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490b298|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490b298|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490b298|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490b298|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490b298|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490b298|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490b298|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490b299|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490b299|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490b299|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490b299|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490b299|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490b299|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490b299|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490b299|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490b38b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b38c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490b38c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490b38c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490b38c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490b38c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490b38c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490b38c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490b38d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490b38d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490b38d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490b38d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490b38d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490b38d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490b38d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490b38e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490b38e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490b38e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490b38e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490b38e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490b38e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490b38e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490b38e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490b38e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490b38f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490b38f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490b38f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490b38f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490b38f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490b38f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490b38f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490b38f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490b390|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490b390|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490b390|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490b390|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490b390|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490b390|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490b390|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490b391|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490b391|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490b391|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490b391|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490b391|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490b391|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490b391|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490b391|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490b410|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490b411|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490b411|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490b411|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490b411|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490b411|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490b411|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490b411|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490b412|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490b412|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490b412|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490b412|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490b412|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490b412|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490b412|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490b413|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490b413|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490b413|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490b413|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490b413|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490b413|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490b413|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490b413|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490b413|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490b414|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490b414|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490b414|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490b414|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490b414|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490b414|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490b414|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490b414|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490b415|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490b415|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490b415|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490b415|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490b415|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490b415|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490b415|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490b416|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490b416|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490b416|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490b416|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490b416|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490b416|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490b416|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490b416|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490bc7b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bc7c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490bc7c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490bc7c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490bc7c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490bc7c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490bc7c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490bc7c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490bc7d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490bc7d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490bc7d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490bc7d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490bc7d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490bc7d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490bc7d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490bc7e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490bc7e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490bc7e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490bc7e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490bc7e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490bc7e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490bc7e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490bc7e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490bc7e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490bc7f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490bc7f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490bc7f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490bc7f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490bc7f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490bc7f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490bc7f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490bc7f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490bc80|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490bc80|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490bc80|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490bc80|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490bc80|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490bc80|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490bc80|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490bc81|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490bc81|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490bc81|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490bc81|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490bc81|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490bc81|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490bc81|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490bc81|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490bd47|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bd48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490bd48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490bd48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490bd48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490bd48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490bd48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490bd48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490bd49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490bd49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490bd49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490bd49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490bd49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490bd49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490bd49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490bd4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490bd4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490bd4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490bd4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490bd4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490bd4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490bd4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490bd4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490bd4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490bd4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490bd4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490bd4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490bd4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490bd4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490bd4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490bd4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490bd4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490bd4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490bd4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490bd4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490bd4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490bd4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490bd4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490bd4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490bd4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490bd4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490bd4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490bd4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490bd4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490bd4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490bd4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490bd4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490bd9a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490bd9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490bd9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490bd9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490bd9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490bd9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490bd9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490bd9b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490bd9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490bd9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490bd9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490bd9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490bd9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490bd9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490bd9c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490bd9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490bd9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490bd9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490bd9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490bd9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490bd9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490bd9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490bd9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490bd9d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490bd9e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490bd9e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490bd9e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490bd9e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490bd9e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490bd9e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490bd9e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490bd9e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490bd9f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490bd9f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490bd9f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490bd9f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490bd9f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490bd9f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490bd9f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490bda0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490bda0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490bda0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490bda0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490bda0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490bda0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490bda0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490bda0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490c2d3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c2d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490c2d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490c2d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490c2d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490c2d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490c2d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490c2d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490c2d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490c2d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490c2d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490c2d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490c2d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490c2d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490c2d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490c2d6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490c2d6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490c2d6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490c2d6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490c2d6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490c2d6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490c2d6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490c2d6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490c2d6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490c2d7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490c2d7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490c2d7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490c2d7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490c2d7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490c2d7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490c2d7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490c2d7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490c2d8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490c2d8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490c2d8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490c2d8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490c2d8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490c2d8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490c2d8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490c2d9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490c2d9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490c2d9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490c2d9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490c2d9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490c2d9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490c2d9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490c2d9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490c34c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c34d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490c34d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490c34d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490c34d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490c34d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490c34d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490c34d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490c34e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490c34e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490c34e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490c34e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490c34e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490c34e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490c34e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490c34f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490c34f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490c34f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490c34f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490c34f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490c34f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490c34f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490c34f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490c34f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490c350|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490c350|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490c350|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490c350|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490c350|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490c350|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490c350|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490c350|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490c351|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490c351|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490c351|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490c351|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490c351|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490c351|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490c351|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490c352|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490c352|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490c352|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490c352|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490c352|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490c352|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490c352|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490c352|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490c37c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490c37d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490c37d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490c37d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490c37d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490c37d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490c37d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490c37d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490c37e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490c37e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490c37e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490c37e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490c37e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490c37e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490c37e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490c37f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490c37f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490c37f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490c37f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490c37f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490c37f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490c37f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490c37f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490c37f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490c380|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490c380|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490c380|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490c380|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490c380|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490c380|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490c380|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490c380|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490c381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490c381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490c381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490c381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490c381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490c381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490c381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490c382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490c382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490c382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490c382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490c382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490c382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490c382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490c382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490cf58|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490cf59|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490cf59|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490cf59|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490cf59|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490cf59|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490cf59|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490cf59|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490cf5a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490cf5a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490cf5a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490cf5a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490cf5a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490cf5a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490cf5a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490cf5b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490cf5b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490cf5b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490cf5b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490cf5b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490cf5b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490cf5b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490cf5b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490cf5b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490cf5c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490cf5c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490cf5c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490cf5c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490cf5c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490cf5c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490cf5c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490cf5c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490cf5d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490cf5d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490cf5d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490cf5d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490cf5d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490cf5d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490cf5d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490cf5e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490cf5e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490cf5e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490cf5e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490cf5e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490cf5e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490cf5e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490cf5e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490d64a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490d64b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490d64b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490d64b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490d64b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490d64b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490d64b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490d64b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490d64c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490d64c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490d64c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490d64c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490d64c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490d64c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490d64c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490d64d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490d64d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490d64d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490d64d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490d64d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490d64d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490d64d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490d64d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490d64d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490d64e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490d64e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490d64e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490d64e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490d64e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490d64e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490d64e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490d64e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490d64f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490d64f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490d64f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490d64f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490d64f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490d64f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490d64f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490d650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490d650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490d650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490d650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490d650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490d650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490d650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490d650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490dfd6|esr|~/public_html/cvs-fast-export/tests/*0|module||module O5490e01a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e01b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e01b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e01b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e01b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490e01b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490e01b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490e01b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490e01c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e01c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e01c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e01c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e01c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e01c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e01c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e01d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e01d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490e01d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490e01d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e01d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e01d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490e01d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e01d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490e01d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490e01e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490e01e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490e01e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490e01e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490e01e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490e01e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490e01e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490e01e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490e01f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e01f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e01f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e01f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e01f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e01f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e01f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e020|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e020|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e020|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e020|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e020|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e020|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e020|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490e020|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490e120|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e121|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e121|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e121|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e121|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490e121|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490e121|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490e121|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490e122|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e122|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e122|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e122|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e122|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e122|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e122|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e123|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e123|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490e123|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490e123|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e123|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e123|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490e123|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e123|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490e123|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490e124|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490e124|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490e124|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490e124|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490e124|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490e124|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490e124|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490e124|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490e125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e125|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490e126|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490e171|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490e172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490e172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490e172|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490e173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e173|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490e174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490e174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490e174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490e174|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490e175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490e175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490e175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490e175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490e175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490e175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490e175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490e175|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490e176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e176|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e177|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e177|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e177|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e177|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e177|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e177|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e177|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490e177|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490e1db|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e1dc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e1dc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e1dc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e1dc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490e1dc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490e1dc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490e1dc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490e1dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e1dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e1dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e1dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e1dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e1dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e1dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e1de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e1de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490e1de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490e1de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e1de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e1de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490e1de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e1de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490e1de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490e1df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490e1df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490e1df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490e1df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490e1df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490e1df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490e1df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490e1df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490e1e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e1e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e1e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e1e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e1e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e1e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e1e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e1e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e1e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e1e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e1e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e1e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e1e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e1e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490e1e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490e213|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e214|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e214|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e214|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e214|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490e214|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490e214|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490e214|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490e215|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e215|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e215|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e215|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e215|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e215|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e215|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e216|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e216|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490e216|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490e216|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e216|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e216|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490e216|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e216|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490e216|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490e217|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490e217|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490e217|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490e217|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490e217|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490e217|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490e217|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490e217|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490e218|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e218|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e218|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e218|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e218|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e218|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e218|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e219|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e219|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e219|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e219|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e219|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e219|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e219|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490e219|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490e244|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e245|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e245|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e245|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e245|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490e245|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490e245|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490e245|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490e246|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e246|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e246|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e246|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e246|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e246|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e246|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e247|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e247|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490e247|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490e247|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e247|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e247|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490e247|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e247|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490e247|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490e248|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490e248|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490e248|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490e248|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490e248|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490e248|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490e248|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490e248|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490e249|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e249|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e249|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e249|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e249|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e249|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e249|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e24a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e24a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e24a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e24a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e24a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e24a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e24a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490e24a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490e273|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e274|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e274|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e274|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e274|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490e274|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490e274|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490e274|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490e275|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e275|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e275|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e275|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e275|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e275|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e275|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e276|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e276|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490e276|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490e276|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e276|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e276|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490e276|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e276|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490e276|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490e277|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490e277|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490e277|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490e277|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490e277|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490e277|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490e277|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490e277|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490e278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e278|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490e279|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490e316|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490e317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490e317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490e317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490e317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490e318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490e319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490e319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490e319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490e319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490e31a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490e31a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490e31a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490e31a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490e31a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490e31a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490e31a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490e31a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490e31b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490e31b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490e31b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490e31b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490e31b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490e31b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490e31b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490e31c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490e31c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490e31c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490e31c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490e31c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490e31c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490e31c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490e31c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5490f1fe|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5490f1ff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490f1ff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490f1ff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490f1ff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5490f1ff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5490f1ff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5490f1ff|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5490f200|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490f200|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490f200|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490f200|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490f200|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490f200|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490f200|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490f201|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490f201|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5490f201|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5490f201|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490f201|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490f201|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5490f201|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490f201|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5490f201|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5490f202|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5490f202|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5490f202|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5490f202|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5490f202|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5490f202|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5490f202|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5490f202|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5490f203|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5490f203|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5490f203|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5490f203|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5490f203|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5490f203|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5490f203|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5490f204|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5490f204|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5490f204|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5490f204|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5490f204|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5490f204|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5490f204|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5490f204|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54918005|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918006|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918006|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918006|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918006|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54918006|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54918006|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54918006|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54918007|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918007|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918007|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918007|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918007|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918007|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918007|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54918008|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54918008|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54918008|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54918008|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918008|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54918008|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54918008|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54918008|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54918008|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54918009|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54918009|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54918009|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54918009|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54918009|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54918009|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54918009|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54918009|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5491800a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5491800a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5491800a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5491800a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5491800a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5491800a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5491800a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5491800b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5491800b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5491800b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5491800b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491800b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5491800b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5491800b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5491800b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5491804f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918050|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918050|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918050|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918050|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54918050|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54918050|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54918050|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54918051|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918051|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918051|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918051|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918051|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918051|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918051|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54918052|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54918052|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54918052|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54918052|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918052|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54918052|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54918052|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54918052|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54918052|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54918053|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54918053|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54918053|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54918053|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54918053|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54918053|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54918053|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54918053|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54918054|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918054|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918054|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918054|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918054|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918054|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918054|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54918055|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54918055|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918055|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918055|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918055|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54918055|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54918055|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54918055|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54918316|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54918317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54918317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54918317|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54918318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918318|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54918319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54918319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54918319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54918319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54918319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54918319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54918319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54918319|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5491831a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5491831a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5491831a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5491831a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5491831a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5491831a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5491831a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5491831a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5491831b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5491831b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5491831b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5491831b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5491831b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5491831b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5491831b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5491831c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5491831c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5491831c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5491831c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491831c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5491831c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5491831c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5491831c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54918487|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918488|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918488|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918488|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918488|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54918488|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54918488|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54918488|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54918489|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918489|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918489|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918489|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918489|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918489|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918489|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5491848a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5491848a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5491848a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5491848a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491848a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5491848a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5491848a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5491848a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5491848a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5491848b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5491848b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5491848b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5491848b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5491848b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5491848b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5491848b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5491848b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5491848c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5491848c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5491848c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5491848c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5491848c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5491848c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5491848c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5491848d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5491848d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5491848d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5491848d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491848d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5491848d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5491848d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5491848d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5491857e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491857f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5491857f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5491857f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491857f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5491857f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5491857f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5491857f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54918580|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918580|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918580|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918580|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918580|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918580|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918580|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54918581|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54918581|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54918581|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54918581|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918581|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54918581|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54918581|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54918581|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54918581|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54918582|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54918582|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54918582|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54918582|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54918582|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54918582|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54918582|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54918582|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54918583|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918583|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918583|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918583|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918583|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918583|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918583|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54918584|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54918584|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918584|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918584|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918584|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54918584|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54918584|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54918584|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O549185b2|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549185b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549185b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549185b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549185b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U549185b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U549185b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U549185b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U549185b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549185b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549185b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549185b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549185b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549185b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549185b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549185b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549185b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U549185b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U549185b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549185b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549185b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U549185b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549185b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U549185b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U549185b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U549185b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U549185b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U549185b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W549185b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U549185b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U549185b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U549185b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U549185b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549185b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549185b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549185b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549185b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549185b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549185b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549185b8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549185b8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549185b8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549185b8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549185b8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549185b8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549185b8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U549185b8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54918607|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918608|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918608|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918608|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918608|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54918608|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54918608|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54918608|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54918609|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918609|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918609|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918609|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918609|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918609|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918609|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5491860a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5491860a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5491860a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5491860a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491860a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5491860a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5491860a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5491860a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5491860a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5491860b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5491860b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5491860b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5491860b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5491860b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5491860b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5491860b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5491860b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5491860c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5491860c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5491860c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5491860c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5491860c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5491860c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5491860c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5491860d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5491860d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5491860d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5491860d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491860d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5491860d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5491860d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5491860d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54918766|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918767|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918767|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918767|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918767|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54918767|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54918767|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54918767|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54918768|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918768|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918768|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918768|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918768|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918768|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918768|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54918769|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54918769|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54918769|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54918769|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918769|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54918769|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54918769|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54918769|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54918769|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5491876a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5491876a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5491876a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5491876a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5491876a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5491876a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5491876a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5491876a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5491876b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5491876b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5491876b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5491876b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5491876b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5491876b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5491876b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5491876c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5491876c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5491876c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5491876c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491876c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5491876c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5491876c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5491876c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54918e4a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918e4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918e4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918e4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918e4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54918e4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54918e4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54918e4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54918e4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918e4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918e4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918e4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918e4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918e4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918e4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54918e4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54918e4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54918e4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54918e4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918e4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54918e4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54918e4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54918e4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54918e4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54918e4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54918e4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54918e4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54918e4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54918e4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54918e4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54918e4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54918e4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54918e4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918e4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918e4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918e4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918e4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918e4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918e4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54918e50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54918e50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918e50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918e50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918e50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54918e50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54918e50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54918e50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54918eb2|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918eb3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918eb3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918eb3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918eb3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54918eb3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54918eb3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54918eb3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54918eb4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918eb4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918eb4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918eb4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918eb4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918eb4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918eb4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54918eb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54918eb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54918eb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54918eb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918eb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54918eb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54918eb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54918eb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54918eb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54918eb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54918eb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54918eb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54918eb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54918eb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54918eb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54918eb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54918eb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54918eb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918eb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918eb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918eb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918eb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918eb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918eb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54918eb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54918eb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918eb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918eb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918eb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54918eb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54918eb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54918eb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54918fe7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54918fe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918fe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918fe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918fe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54918fe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54918fe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54918fe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54918fe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918fe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918fe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918fe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918fe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918fe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918fe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54918fea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54918fea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54918fea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54918fea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918fea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54918fea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54918fea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54918fea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54918fea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54918feb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54918feb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54918feb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54918feb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54918feb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54918feb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54918feb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54918feb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54918fec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54918fec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54918fec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54918fec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54918fec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54918fec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54918fec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54918fed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54918fed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54918fed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54918fed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54918fed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54918fed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54918fed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54918fed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54919c19|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54919c1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54919c1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54919c1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54919c1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54919c1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54919c1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54919c1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54919c1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54919c1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54919c1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54919c1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54919c1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54919c1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54919c1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54919c1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54919c1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54919c1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54919c1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54919c1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54919c1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54919c1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54919c1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54919c1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54919c1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54919c1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54919c1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54919c1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54919c1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54919c1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54919c1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54919c1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54919c1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54919c1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54919c1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54919c1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54919c1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54919c1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54919c1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54919c1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54919c1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54919c1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54919c1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54919c1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54919c1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54919c1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54919c1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5491b4b8|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491b4b9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5491b4b9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5491b4b9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491b4b9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5491b4b9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5491b4b9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5491b4b9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5491b4ba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5491b4ba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5491b4ba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5491b4ba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5491b4ba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5491b4ba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5491b4ba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5491b4bb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5491b4bb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5491b4bb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5491b4bb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491b4bb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5491b4bb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5491b4bb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5491b4bb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5491b4bb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5491b4bc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5491b4bc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5491b4bc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5491b4bc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5491b4bc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5491b4bc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5491b4bc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5491b4bc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5491b4bd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5491b4bd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5491b4bd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5491b4bd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5491b4bd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5491b4bd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5491b4bd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5491b4be|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5491b4be|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5491b4be|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5491b4be|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491b4be|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5491b4be|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5491b4be|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5491b4be|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5491b4f5|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491b4f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5491b4f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5491b4f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491b4f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5491b4f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5491b4f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5491b4f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5491b4f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5491b4f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5491b4f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5491b4f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5491b4f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5491b4f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5491b4f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5491b4f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5491b4f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5491b4f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5491b4f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491b4f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5491b4f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5491b4f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5491b4f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5491b4f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5491b4f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5491b4f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5491b4f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5491b4f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5491b4f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5491b4f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5491b4f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5491b4f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5491b4fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5491b4fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5491b4fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5491b4fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5491b4fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5491b4fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5491b4fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5491b4fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5491b4fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5491b4fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5491b4fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491b4fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5491b4fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5491b4fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5491b4fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5491f62a|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5491f62b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5491f62b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5491f62b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491f62b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5491f62b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5491f62b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5491f62b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5491f62c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5491f62c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5491f62c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5491f62c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5491f62c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5491f62c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5491f62c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5491f62d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5491f62d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5491f62d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5491f62d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491f62d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5491f62d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5491f62d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5491f62d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5491f62d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5491f62e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5491f62e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5491f62e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5491f62e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5491f62e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5491f62e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5491f62e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5491f62e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5491f62f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5491f62f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5491f62f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5491f62f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5491f62f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5491f62f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5491f62f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5491f630|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5491f630|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5491f630|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5491f630|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5491f630|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5491f630|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5491f630|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5491f630|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54920074|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920075|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.2|default U54920075|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.2|default U54920075|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.3|default U54920075|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB|1.3|default U54920075|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.3|default U54920075|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.2|default U54920075|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.3|default U54920076|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.1.1.1|default U54920076|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.1.1.1|default U54920076|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.1.1.1|default U54920076|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB|1.1.1.1|default U54920076|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.1.1.1|default U54920076|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.1.1.1|default U54920076|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.1.1.1|default W54920077|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB||default U54920077|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.2.2.1|default U54920077|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.2.2.1|default U54920077|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.3|default U54920077|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB|1.2|default U54920077|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54920077|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.2|default U54920077|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.1.2.1|default U54920077|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.2|default U54920078|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.2.4.1|default U54920078|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.2.4.1|default U54920078|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.3.4.1|default U54920078|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB|1.3.2.1|default W54920078|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2||branch_B_MIXED_only U54920078|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.3.2.1|default U54920078|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.2.2.1|default U54920078|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.3.2.1|default U54920079|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.1.1.1|default U54920079|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.1.1.1|default U54920079|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.1.1.1|default U54920079|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB|1.1.1.1|default U54920079|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.1.1.1|default U54920079|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.1.1.1|default U54920079|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.1.1.1|default W5492007a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB||default U5492007a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.2|default U5492007a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.2|default U5492007a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.3|default U5492007a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB|1.2|default U5492007a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.2|default U5492007a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.1|default U5492007a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.2|default U5492007b|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.1.1.1|default U5492007b|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.1.1.1|default U5492007b|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.1.1.1|default U5492007b|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB|1.1.1.1|default U5492007b|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.1.1.1|default U5492007b|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.1.1.1|default U5492007b|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.1.1.1|default O54920bab|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920bac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54920bac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54920bac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54920bac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54920bac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54920bac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54920bac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54920bad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54920bad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54920bad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54920bad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54920bad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54920bad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54920bad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54920bae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54920bae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54920bae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54920bae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54920bae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54920bae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54920bae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54920bae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54920bae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54920baf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54920baf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54920baf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54920baf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54920baf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54920baf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54920baf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54920baf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54920bb0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54920bb0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54920bb0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54920bb0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54920bb0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54920bb0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54920bb0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54920bb1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54920bb1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54920bb1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54920bb1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54920bb1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54920bb1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54920bb1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54920bb1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54920dd1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54920dd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54920dd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54920dd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54920dd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54920dd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54920dd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54920dd2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54920dd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54920dd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54920dd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54920dd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54920dd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54920dd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54920dd3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54920dd4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54920dd4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54920dd4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54920dd4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54920dd4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54920dd4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54920dd4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54920dd4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54920dd4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54920dd5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54920dd5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54920dd5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54920dd5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54920dd5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54920dd5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54920dd5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54920dd5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54920dd6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54920dd6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54920dd6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54920dd6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54920dd6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54920dd6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54920dd6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54920dd7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54920dd7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54920dd7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54920dd7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54920dd7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54920dd7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54920dd7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54920dd7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5495b869|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5495b86a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5495b86a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5495b86a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5495b86a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5495b86a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5495b86a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5495b86a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5495b86b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5495b86b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5495b86b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5495b86b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5495b86b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5495b86b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5495b86b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5495b86c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5495b86c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5495b86c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5495b86c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5495b86c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5495b86c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5495b86c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5495b86c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5495b86c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5495b86d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5495b86d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5495b86d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5495b86d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5495b86d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5495b86d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5495b86d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5495b86d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5495b86e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5495b86e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5495b86e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5495b86e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5495b86e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5495b86e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5495b86e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5495b86f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5495b86f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5495b86f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5495b86f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5495b86f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5495b86f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5495b86f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5495b86f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54961fc9|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54961fca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54961fca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54961fca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54961fca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54961fca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54961fca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54961fca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54961fcb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54961fcb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54961fcb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54961fcb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54961fcb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54961fcb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54961fcb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54961fcc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54961fcc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54961fcc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54961fcc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54961fcc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54961fcc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54961fcc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54961fcc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54961fcc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54961fcd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54961fcd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54961fcd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54961fcd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54961fcd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54961fcd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54961fcd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54961fcd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54961fce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54961fce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54961fce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54961fce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54961fce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54961fce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54961fce|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54961fcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54961fcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54961fcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54961fcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54961fcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54961fcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54961fcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54961fcf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54962040|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54962041|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54962041|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54962041|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54962041|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54962041|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54962041|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54962041|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54962042|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54962042|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54962042|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54962042|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54962042|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54962042|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54962042|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54962043|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54962043|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54962043|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54962043|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54962043|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54962043|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54962043|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54962043|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54962043|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54962044|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54962044|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54962044|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54962044|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54962044|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54962044|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54962044|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54962044|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54962045|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54962045|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54962045|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54962045|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54962045|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54962045|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54962045|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54962046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54962046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54962046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54962046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54962046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54962046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54962046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54962046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5496d9e8|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5496d9e9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5496d9e9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5496d9e9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5496d9e9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5496d9e9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5496d9e9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5496d9e9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5496d9ea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5496d9ea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5496d9ea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5496d9ea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5496d9ea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5496d9ea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5496d9ea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5496d9eb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5496d9eb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5496d9eb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5496d9eb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5496d9eb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5496d9eb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5496d9eb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5496d9eb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5496d9eb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5496d9ec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5496d9ec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5496d9ec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5496d9ec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5496d9ec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5496d9ec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5496d9ec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5496d9ec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5496d9ed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5496d9ed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5496d9ed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5496d9ed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5496d9ed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5496d9ed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5496d9ed|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5496d9ee|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5496d9ee|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5496d9ee|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5496d9ee|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5496d9ee|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5496d9ee|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5496d9ee|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5496d9ee|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5497167c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5497167d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5497167d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5497167d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5497167d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5497167d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5497167d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5497167d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5497167e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5497167e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5497167e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5497167e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5497167e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5497167e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5497167e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5497167f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5497167f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5497167f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5497167f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5497167f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5497167f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5497167f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5497167f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5497167f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54971680|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54971680|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54971680|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54971680|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54971680|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54971680|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54971680|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54971680|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54971681|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54971681|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54971681|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54971681|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54971681|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54971681|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54971681|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54971682|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54971682|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54971682|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54971682|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54971682|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54971682|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54971682|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54971682|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54971a1b|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54971a1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54971a1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54971a1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54971a1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54971a1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54971a1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54971a1c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54971a1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54971a1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54971a1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54971a1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54971a1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54971a1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54971a1d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54971a1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54971a1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54971a1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54971a1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54971a1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54971a1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54971a1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54971a1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54971a1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54971a1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54971a1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54971a1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54971a1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54971a1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54971a1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54971a1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54971a1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54971a20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54971a20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54971a20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54971a20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54971a20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54971a20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54971a20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54971a21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54971a21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54971a21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54971a21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54971a21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54971a21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54971a21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54971a21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54972045|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54972046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54972046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54972046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54972046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54972046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54972046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54972046|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54972047|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54972047|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54972047|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54972047|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54972047|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54972047|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54972047|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54972048|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54972048|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54972048|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54972048|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54972048|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54972048|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54972048|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54972048|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54972048|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54972049|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54972049|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54972049|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54972049|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54972049|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54972049|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54972049|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54972049|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5497204a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5497204a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5497204a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5497204a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5497204a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5497204a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5497204a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5497204b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5497204b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5497204b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5497204b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5497204b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5497204b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5497204b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5497204b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54972380|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54972381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54972381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54972381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54972381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54972381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54972381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54972381|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54972382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54972382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54972382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54972382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54972382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54972382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54972382|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54972383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54972383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54972383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54972383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54972383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54972383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54972383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54972383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54972383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54972384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54972384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54972384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54972384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54972384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54972384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54972384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54972384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54972385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54972385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54972385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54972385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54972385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54972385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54972385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54972386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54972386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54972386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54972386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54972386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54972386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54972386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54972386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54972ba0|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54972ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54972ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54972ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54972ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54972ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54972ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54972ba1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54972ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54972ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54972ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54972ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54972ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54972ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54972ba2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54972ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54972ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54972ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54972ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54972ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54972ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54972ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54972ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54972ba3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54972ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54972ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54972ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54972ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54972ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54972ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54972ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54972ba4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54972ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54972ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54972ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54972ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54972ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54972ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54972ba5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54972ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54972ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54972ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54972ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54972ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54972ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54972ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54972ba6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54974349|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5497434a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5497434a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5497434a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5497434a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5497434a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5497434a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5497434a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5497434b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5497434b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5497434b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5497434b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5497434b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5497434b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5497434b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5497434c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5497434c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5497434c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5497434c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5497434c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5497434c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5497434c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5497434c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5497434c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5497434d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5497434d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5497434d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5497434d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5497434d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5497434d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5497434d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5497434d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5497434e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5497434e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5497434e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5497434e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5497434e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5497434e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5497434e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5497434f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5497434f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5497434f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5497434f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5497434f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5497434f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5497434f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5497434f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54974382|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54974383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54974383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54974383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54974383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54974383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54974383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54974383|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54974384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54974384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54974384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54974384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54974384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54974384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54974384|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54974385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54974385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54974385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54974385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54974385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54974385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54974385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54974385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54974385|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54974386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54974386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54974386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54974386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54974386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54974386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54974386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54974386|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54974387|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54974387|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54974387|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54974387|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54974387|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54974387|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54974387|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54974388|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54974388|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54974388|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54974388|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54974388|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54974388|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54974388|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54974388|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5498283d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5498283e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5498283e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5498283e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5498283e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5498283e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5498283e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5498283e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5498283f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5498283f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5498283f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5498283f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5498283f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5498283f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5498283f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54982840|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54982840|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54982840|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54982840|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54982840|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54982840|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54982840|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54982840|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54982840|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54982841|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54982841|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54982841|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54982841|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54982841|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54982841|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54982841|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54982841|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54982842|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54982842|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54982842|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54982842|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54982842|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54982842|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54982842|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54982843|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54982843|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54982843|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54982843|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54982843|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54982843|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54982843|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54982843|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O549828dc|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549828dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549828dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549828dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549828dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U549828dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U549828dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U549828dd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U549828de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549828de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549828de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549828de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549828de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549828de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549828de|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549828df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549828df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U549828df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U549828df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549828df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549828df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U549828df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549828df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U549828df|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U549828e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U549828e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U549828e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U549828e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W549828e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U549828e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U549828e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U549828e0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U549828e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549828e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549828e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549828e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549828e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549828e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549828e1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549828e2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549828e2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549828e2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549828e2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549828e2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549828e2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549828e2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U549828e2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54982920|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54982921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54982921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54982921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54982921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54982921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54982921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54982921|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54982922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54982922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54982922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54982922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54982922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54982922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54982922|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54982923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54982923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54982923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54982923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54982923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54982923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54982923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54982923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54982923|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54982924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54982924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54982924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54982924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54982924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54982924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54982924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54982924|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54982925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54982925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54982925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54982925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54982925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54982925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54982925|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54982926|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54982926|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54982926|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54982926|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54982926|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54982926|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54982926|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54982926|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54986b03|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54986b04|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.2|default U54986b04|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.2|default U54986b04|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.3|default U54986b04|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB|1.3|default U54986b04|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.3|default U54986b04|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.2|default U54986b04|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.3|default U54986b05|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.1.1.1|default U54986b05|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.1.1.1|default U54986b05|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.1.1.1|default U54986b05|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB|1.1.1.1|default U54986b05|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.1.1.1|default U54986b05|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.1.1.1|default U54986b05|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.1.1.1|default W54986b06|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB||default U54986b06|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.2.2.1|default U54986b06|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.2.2.1|default U54986b06|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.3|default U54986b06|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB|1.2|default U54986b06|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54986b06|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.2|default U54986b06|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.1.2.1|default U54986b06|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.2|default U54986b07|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.2.4.1|default U54986b07|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.2.4.1|default U54986b07|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.3.4.1|default U54986b07|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB|1.3.2.1|default W54986b07|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2||branch_B_MIXED_only U54986b07|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.3.2.1|default U54986b07|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.2.2.1|default U54986b07|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.3.2.1|default U54986b08|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.1.1.1|default U54986b08|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.1.1.1|default U54986b08|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.1.1.1|default W54986b08|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB||default U54986b08|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.1.1.1|default U54986b08|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.1.1.1|default U54986b08|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.1.1.1|default U54986b09|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.2|default U54986b09|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.2|default U54986b09|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.3|default U54986b09|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB|1.2|default U54986b09|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.2|default U54986b09|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.1|default U54986b09|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.2|default U54986b0a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout|module|1.1.1.1|default U54986b0a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1|1.1.1.1|default U54986b0a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubA|1.1.1.1|default U54986b0a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub1/subsubB|1.1.1.1|default U54986b0a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2|1.1.1.1|default U54986b0a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub2/subsubA|1.1.1.1|default U54986b0a|esr|~/public_html/cvs-fast-export/tests/t9602.testrepo.checkout*6|module/sub3|1.1.1.1|default O54987354|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987355|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54987355|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54987355|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54987355|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54987355|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54987355|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54987355|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54987356|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54987356|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54987356|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54987356|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54987356|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54987356|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54987356|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54987357|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54987357|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54987357|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54987357|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54987357|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54987357|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54987357|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54987357|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54987357|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54987358|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54987358|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54987358|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54987358|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54987358|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54987358|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54987358|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54987358|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54987359|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54987359|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54987359|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54987359|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54987359|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54987359|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54987359|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5498735a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5498735a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5498735a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5498735a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5498735a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5498735a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5498735a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5498735a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54987725|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54987726|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54987726|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54987726|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54987726|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54987726|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54987726|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54987726|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54987727|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54987727|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54987727|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54987727|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54987727|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54987727|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54987727|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54987728|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54987728|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54987728|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54987728|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54987728|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54987728|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54987728|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54987728|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54987728|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54987729|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54987729|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54987729|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54987729|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54987729|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54987729|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54987729|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54987729|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5498772a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5498772a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5498772a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5498772a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5498772a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5498772a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5498772a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5498772b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5498772b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5498772b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5498772b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5498772b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5498772b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5498772b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5498772b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O549aa466|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549aa467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549aa467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549aa467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549aa467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U549aa467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U549aa467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U549aa467|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U549aa468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549aa468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549aa468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549aa468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549aa468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549aa468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549aa468|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549aa469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549aa469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U549aa469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U549aa469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549aa469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549aa469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U549aa469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549aa469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U549aa469|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U549aa46a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U549aa46a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U549aa46a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U549aa46a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W549aa46a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U549aa46a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U549aa46a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U549aa46a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U549aa46b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549aa46b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549aa46b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549aa46b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549aa46b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549aa46b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549aa46b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549aa46c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549aa46c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549aa46c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549aa46c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549aa46c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549aa46c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549aa46c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U549aa46c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O549b02cf|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549b02d0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549b02d0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549b02d0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549b02d0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U549b02d0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U549b02d0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U549b02d0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U549b02d1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549b02d1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549b02d1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549b02d1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549b02d1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549b02d1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549b02d1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549b02d2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549b02d2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U549b02d2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U549b02d2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549b02d2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549b02d2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U549b02d2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549b02d2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U549b02d2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U549b02d3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U549b02d3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U549b02d3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U549b02d3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W549b02d3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U549b02d3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U549b02d3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U549b02d3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U549b02d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549b02d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549b02d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549b02d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549b02d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549b02d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549b02d4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549b02d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549b02d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549b02d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549b02d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549b02d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549b02d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549b02d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U549b02d5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O549b03f7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549b03f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549b03f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549b03f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549b03f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U549b03f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U549b03f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U549b03f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U549b03f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549b03f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549b03f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549b03f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549b03f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549b03f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549b03f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549b03fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549b03fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U549b03fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U549b03fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549b03fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549b03fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U549b03fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549b03fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U549b03fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U549b03fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U549b03fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U549b03fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U549b03fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W549b03fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U549b03fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U549b03fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U549b03fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U549b03fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549b03fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549b03fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549b03fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549b03fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549b03fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549b03fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549b03fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549b03fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549b03fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549b03fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549b03fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549b03fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549b03fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U549b03fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O549da1f4|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549da1f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549da1f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549da1f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549da1f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U549da1f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U549da1f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U549da1f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U549da1f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549da1f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549da1f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549da1f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549da1f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549da1f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549da1f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549da1f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549da1f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U549da1f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U549da1f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549da1f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549da1f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U549da1f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549da1f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U549da1f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U549da1f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U549da1f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U549da1f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U549da1f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W549da1f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U549da1f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U549da1f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U549da1f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U549da1f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549da1f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549da1f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549da1f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549da1f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549da1f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549da1f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549da1fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549da1fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549da1fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549da1fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549da1fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549da1fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549da1fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U549da1fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O549da2a6|esr|~/public_html/cvs-fast-export/tests/*0|module||module U549da2a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549da2a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549da2a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549da2a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U549da2a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U549da2a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U549da2a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U549da2a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549da2a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549da2a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549da2a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549da2a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549da2a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549da2a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549da2a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549da2a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U549da2a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U549da2a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549da2a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549da2a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U549da2a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549da2a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U549da2a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U549da2aa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U549da2aa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U549da2aa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U549da2aa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W549da2aa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U549da2aa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U549da2aa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U549da2aa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U549da2ab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U549da2ab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U549da2ab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U549da2ab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U549da2ab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U549da2ab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U549da2ab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W549da2ac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U549da2ac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U549da2ac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U549da2ac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U549da2ac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U549da2ac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U549da2ac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U549da2ac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54b7150d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7150e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b7150e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b7150e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b7150e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54b7150e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54b7150e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54b7150e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54b7150f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b7150f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b7150f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b7150f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b7150f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b7150f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b7150f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b71510|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b71510|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54b71510|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54b71510|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b71510|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b71510|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54b71510|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b71510|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54b71510|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54b71511|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54b71511|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54b71511|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54b71511|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54b71511|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54b71511|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54b71511|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54b71511|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54b71512|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b71512|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b71512|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b71512|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b71512|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b71512|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b71512|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b71513|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b71513|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b71513|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b71513|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b71513|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b71513|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b71513|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54b71513|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54b727c7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b727c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b727c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b727c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b727c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54b727c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54b727c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54b727c8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54b727c9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b727c9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b727c9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b727c9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b727c9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b727c9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b727c9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b727ca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b727ca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54b727ca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54b727ca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b727ca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b727ca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54b727ca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b727ca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54b727ca|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54b727cb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54b727cb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54b727cb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54b727cb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54b727cb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54b727cb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54b727cb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54b727cb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54b727cc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b727cc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b727cc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b727cc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b727cc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b727cc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b727cc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b727cd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b727cd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b727cd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b727cd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b727cd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b727cd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b727cd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54b727cd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54b74f3d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b74f3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b74f3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b74f3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b74f3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54b74f3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54b74f3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54b74f3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54b74f3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b74f3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b74f3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b74f3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b74f3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b74f3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b74f3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b74f40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b74f40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54b74f40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54b74f40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b74f40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b74f40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54b74f40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b74f40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54b74f40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54b74f41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54b74f41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54b74f41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54b74f41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54b74f41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54b74f41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54b74f41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54b74f41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54b74f42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b74f42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b74f42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b74f42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b74f42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b74f42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b74f42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b74f43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b74f43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b74f43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b74f43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b74f43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b74f43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b74f43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54b74f43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54b7b2b1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7b2b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b7b2b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b7b2b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b7b2b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54b7b2b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54b7b2b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54b7b2b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54b7b2b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b7b2b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b7b2b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b7b2b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b7b2b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b7b2b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b7b2b3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b7b2b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b7b2b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54b7b2b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54b7b2b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b7b2b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b7b2b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54b7b2b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b7b2b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54b7b2b4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54b7b2b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54b7b2b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54b7b2b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54b7b2b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54b7b2b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54b7b2b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54b7b2b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54b7b2b5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54b7b2b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b7b2b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b7b2b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b7b2b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b7b2b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b7b2b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b7b2b6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b7b2b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b7b2b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b7b2b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b7b2b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b7b2b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b7b2b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b7b2b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54b7b2b7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54b7b525|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7b526|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b7b526|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b7b526|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b7b526|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54b7b526|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54b7b526|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54b7b526|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54b7b527|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b7b527|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b7b527|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b7b527|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b7b527|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b7b527|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b7b527|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b7b528|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b7b528|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54b7b528|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54b7b528|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b7b528|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b7b528|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54b7b528|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b7b528|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54b7b528|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54b7b529|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54b7b529|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54b7b529|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54b7b529|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54b7b529|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54b7b529|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54b7b529|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54b7b529|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54b7b52a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b7b52a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b7b52a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b7b52a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b7b52a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b7b52a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b7b52a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b7b52b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b7b52b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b7b52b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b7b52b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b7b52b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b7b52b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b7b52b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54b7b52b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54b7cb15|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7cb16|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b7cb16|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b7cb16|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b7cb16|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54b7cb16|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54b7cb16|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54b7cb16|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54b7cb17|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b7cb17|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b7cb17|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b7cb17|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b7cb17|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b7cb17|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b7cb17|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b7cb18|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b7cb18|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54b7cb18|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54b7cb18|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b7cb18|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b7cb18|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54b7cb18|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b7cb18|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54b7cb18|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54b7cb19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54b7cb19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54b7cb19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54b7cb19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54b7cb19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54b7cb19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54b7cb19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54b7cb19|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54b7cb1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b7cb1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b7cb1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b7cb1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b7cb1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b7cb1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b7cb1a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b7cb1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b7cb1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b7cb1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b7cb1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b7cb1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b7cb1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b7cb1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54b7cb1b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54b7cbe6|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b7cbe7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b7cbe7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b7cbe7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b7cbe7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54b7cbe7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54b7cbe7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54b7cbe7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54b7cbe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b7cbe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b7cbe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b7cbe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b7cbe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b7cbe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b7cbe8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b7cbe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b7cbe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54b7cbe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54b7cbe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b7cbe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b7cbe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54b7cbe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b7cbe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54b7cbe9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54b7cbea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54b7cbea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54b7cbea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54b7cbea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54b7cbea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54b7cbea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54b7cbea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54b7cbea|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54b7cbeb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b7cbeb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b7cbeb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b7cbeb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b7cbeb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b7cbeb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b7cbeb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b7cbec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b7cbec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b7cbec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b7cbec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b7cbec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b7cbec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b7cbec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54b7cbec|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54b93538|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b93539|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b93539|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b93539|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b93539|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54b93539|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54b93539|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54b93539|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54b9353a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b9353a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b9353a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b9353a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b9353a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b9353a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b9353a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b9353b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b9353b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54b9353b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54b9353b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b9353b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b9353b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54b9353b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b9353b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54b9353b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54b9353c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54b9353c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54b9353c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54b9353c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54b9353c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54b9353c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54b9353c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54b9353c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54b9353d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b9353d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b9353d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b9353d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b9353d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b9353d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b9353d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b9353e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b9353e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b9353e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b9353e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b9353e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b9353e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b9353e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54b9353e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54b95162|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54b95163|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b95163|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b95163|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b95163|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54b95163|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54b95163|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54b95163|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54b95164|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b95164|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b95164|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b95164|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b95164|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b95164|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b95164|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b95165|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b95165|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54b95165|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54b95165|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b95165|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b95165|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54b95165|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b95165|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54b95165|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54b95166|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54b95166|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54b95166|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54b95166|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54b95166|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54b95166|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54b95166|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54b95166|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54b95167|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54b95167|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54b95167|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54b95167|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54b95167|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54b95167|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54b95167|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54b95168|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54b95168|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54b95168|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54b95168|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54b95168|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54b95168|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54b95168|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54b95168|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54bb41f7|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb41f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bb41f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bb41f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb41f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54bb41f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54bb41f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54bb41f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54bb41f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bb41f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bb41f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bb41f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bb41f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bb41f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bb41f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bb41fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bb41fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54bb41fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54bb41fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb41fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bb41fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54bb41fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bb41fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54bb41fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54bb41fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54bb41fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54bb41fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54bb41fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54bb41fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54bb41fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54bb41fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54bb41fb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54bb41fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bb41fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bb41fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bb41fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bb41fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bb41fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bb41fc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bb41fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bb41fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bb41fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bb41fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb41fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bb41fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bb41fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54bb41fd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54bb464c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb464d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bb464d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bb464d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb464d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54bb464d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54bb464d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54bb464d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54bb464e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bb464e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bb464e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bb464e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bb464e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bb464e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bb464e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bb464f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bb464f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54bb464f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54bb464f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb464f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bb464f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54bb464f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bb464f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54bb464f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54bb4650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54bb4650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54bb4650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54bb4650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54bb4650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54bb4650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54bb4650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54bb4650|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54bb4651|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bb4651|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bb4651|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bb4651|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bb4651|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bb4651|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bb4651|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bb4652|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bb4652|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bb4652|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bb4652|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb4652|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bb4652|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bb4652|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54bb4652|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54bb781f|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb7820|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bb7820|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bb7820|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb7820|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54bb7820|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54bb7820|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54bb7820|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54bb7821|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bb7821|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bb7821|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bb7821|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bb7821|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bb7821|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bb7821|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bb7822|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bb7822|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54bb7822|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54bb7822|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb7822|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bb7822|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54bb7822|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bb7822|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54bb7822|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54bb7823|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54bb7823|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54bb7823|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54bb7823|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54bb7823|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54bb7823|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54bb7823|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54bb7823|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54bb7824|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bb7824|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bb7824|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bb7824|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bb7824|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bb7824|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bb7824|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bb7825|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bb7825|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bb7825|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bb7825|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb7825|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bb7825|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bb7825|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54bb7825|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54bb7872|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb7873|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bb7873|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bb7873|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb7873|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54bb7873|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54bb7873|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54bb7873|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54bb7874|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bb7874|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bb7874|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bb7874|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bb7874|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bb7874|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bb7874|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bb7875|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bb7875|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54bb7875|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54bb7875|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb7875|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bb7875|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54bb7875|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bb7875|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54bb7875|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54bb7876|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54bb7876|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54bb7876|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54bb7876|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54bb7876|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54bb7876|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54bb7876|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54bb7876|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54bb7877|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bb7877|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bb7877|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bb7877|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bb7877|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bb7877|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bb7877|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bb7878|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bb7878|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bb7878|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bb7878|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb7878|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bb7878|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bb7878|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54bb7878|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54bb86f4|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb86f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bb86f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bb86f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb86f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54bb86f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54bb86f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54bb86f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54bb86f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bb86f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bb86f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bb86f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bb86f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bb86f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bb86f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bb86f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bb86f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54bb86f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54bb86f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb86f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bb86f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54bb86f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bb86f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54bb86f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54bb86f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54bb86f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54bb86f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54bb86f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54bb86f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54bb86f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54bb86f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54bb86f8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54bb86f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bb86f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bb86f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bb86f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bb86f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bb86f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bb86f9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bb86fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bb86fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bb86fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bb86fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb86fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bb86fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bb86fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54bb86fa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54bb8a00|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bb8a01|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bb8a01|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bb8a01|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb8a01|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54bb8a01|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54bb8a01|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54bb8a01|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54bb8a02|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bb8a02|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bb8a02|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bb8a02|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bb8a02|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bb8a02|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bb8a02|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bb8a03|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bb8a03|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54bb8a03|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54bb8a03|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb8a03|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bb8a03|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54bb8a03|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bb8a03|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54bb8a03|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54bb8a04|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54bb8a04|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54bb8a04|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54bb8a04|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54bb8a04|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54bb8a04|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54bb8a04|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54bb8a04|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54bb8a05|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bb8a05|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bb8a05|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bb8a05|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bb8a05|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bb8a05|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bb8a05|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bb8a06|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bb8a06|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bb8a06|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bb8a06|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bb8a06|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bb8a06|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bb8a06|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54bb8a06|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54bbbd1d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54bbbd1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bbbd1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bbbd1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bbbd1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54bbbd1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54bbbd1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54bbbd1e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54bbbd1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bbbd1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bbbd1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bbbd1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bbbd1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bbbd1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bbbd1f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bbbd20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bbbd20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54bbbd20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54bbbd20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bbbd20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bbbd20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54bbbd20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bbbd20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54bbbd20|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54bbbd21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54bbbd21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54bbbd21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54bbbd21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54bbbd21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54bbbd21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54bbbd21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54bbbd21|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54bbbd22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54bbbd22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54bbbd22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54bbbd22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54bbbd22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54bbbd22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54bbbd22|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54bbbd23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54bbbd23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54bbbd23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54bbbd23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54bbbd23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54bbbd23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54bbbd23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54bbbd23|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54d11fda|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d11fdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54d11fdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54d11fdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54d11fdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54d11fdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54d11fdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54d11fdb|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54d11fdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54d11fdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54d11fdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54d11fdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54d11fdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54d11fdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54d11fdc|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54d11fdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54d11fdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54d11fdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54d11fdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54d11fdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54d11fdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54d11fdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54d11fdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54d11fdd|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54d11fde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54d11fde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54d11fde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54d11fde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54d11fde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54d11fde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54d11fde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54d11fde|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54d11fdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54d11fdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54d11fdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54d11fdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54d11fdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54d11fdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54d11fdf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54d11fe0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54d11fe0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54d11fe0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54d11fe0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54d11fe0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54d11fe0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54d11fe0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54d11fe0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54d12058|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d12059|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54d12059|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54d12059|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54d12059|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54d12059|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54d12059|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54d12059|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54d1205a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54d1205a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54d1205a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54d1205a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54d1205a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54d1205a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54d1205a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54d1205b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54d1205b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54d1205b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54d1205b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54d1205b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54d1205b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54d1205b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54d1205b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54d1205b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54d1205c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54d1205c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54d1205c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54d1205c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54d1205c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54d1205c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54d1205c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54d1205c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54d1205d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54d1205d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54d1205d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54d1205d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54d1205d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54d1205d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54d1205d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54d1205e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54d1205e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54d1205e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54d1205e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54d1205e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54d1205e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54d1205e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54d1205e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O54d1217d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U54d1217e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54d1217e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54d1217e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54d1217e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U54d1217e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U54d1217e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U54d1217e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U54d1217f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54d1217f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54d1217f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54d1217f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54d1217f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54d1217f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54d1217f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54d12180|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54d12180|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U54d12180|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U54d12180|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54d12180|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54d12180|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U54d12180|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54d12180|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U54d12180|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U54d12181|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U54d12181|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U54d12181|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U54d12181|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W54d12181|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U54d12181|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U54d12181|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U54d12181|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U54d12182|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U54d12182|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U54d12182|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U54d12182|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U54d12182|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U54d12182|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U54d12182|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W54d12183|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U54d12183|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U54d12183|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U54d12183|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U54d12183|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U54d12183|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U54d12183|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U54d12183|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O551d3c5e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U551d3c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U551d3c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U551d3c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U551d3c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U551d3c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U551d3c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U551d3c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U551d3c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U551d3c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U551d3c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U551d3c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U551d3c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U551d3c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U551d3c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W551d3c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U551d3c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U551d3c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U551d3c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U551d3c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U551d3c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U551d3c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U551d3c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U551d3c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U551d3c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U551d3c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U551d3c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U551d3c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W551d3c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U551d3c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U551d3c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U551d3c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U551d3c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U551d3c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U551d3c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U551d3c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U551d3c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U551d3c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U551d3c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W551d3c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U551d3c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U551d3c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U551d3c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U551d3c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U551d3c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U551d3c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U551d3c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O553f6fa8|esr|~/public_html/cvs-fast-export/tests/*0|module||module U553f6fa9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U553f6fa9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U553f6fa9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U553f6fa9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U553f6fa9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U553f6fa9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U553f6fa9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U553f6faa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U553f6faa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U553f6faa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U553f6faa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U553f6faa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U553f6faa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U553f6faa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W553f6fab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U553f6fab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U553f6fab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U553f6fab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U553f6fab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U553f6fab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U553f6fab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U553f6fab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U553f6fab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U553f6fac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U553f6fac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U553f6fac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U553f6fac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W553f6fac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U553f6fac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U553f6fac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U553f6fac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U553f6fad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U553f6fad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U553f6fad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U553f6fad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U553f6fad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U553f6fad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U553f6fad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W553f6fae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U553f6fae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U553f6fae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U553f6fae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U553f6fae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U553f6fae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U553f6fae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U553f6fae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O553f72f1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U553f72f2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U553f72f2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U553f72f2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U553f72f2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U553f72f2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U553f72f2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U553f72f2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U553f72f3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U553f72f3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U553f72f3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U553f72f3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U553f72f3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U553f72f3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U553f72f3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W553f72f4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U553f72f4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U553f72f4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U553f72f4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U553f72f4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U553f72f4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U553f72f4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U553f72f4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U553f72f4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U553f72f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U553f72f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U553f72f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U553f72f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W553f72f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U553f72f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U553f72f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U553f72f5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U553f72f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U553f72f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U553f72f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U553f72f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U553f72f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U553f72f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U553f72f6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W553f72f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U553f72f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U553f72f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U553f72f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U553f72f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U553f72f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U553f72f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U553f72f7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O55786a65|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55786a66|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U55786a66|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U55786a66|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55786a66|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U55786a66|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U55786a66|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U55786a66|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U55786a67|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U55786a67|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U55786a67|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U55786a67|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U55786a67|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U55786a67|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U55786a67|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55786a68|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55786a68|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U55786a68|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U55786a68|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55786a68|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55786a68|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U55786a68|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55786a68|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U55786a68|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U55786a69|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U55786a69|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U55786a69|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U55786a69|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W55786a69|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U55786a69|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U55786a69|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U55786a69|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U55786a6a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U55786a6a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U55786a6a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U55786a6a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U55786a6a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U55786a6a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U55786a6a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55786a6b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55786a6b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U55786a6b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U55786a6b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55786a6b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55786a6b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55786a6b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U55786a6b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O55786ab4|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55786ab5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U55786ab5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U55786ab5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55786ab5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U55786ab5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U55786ab5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U55786ab5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U55786ab6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U55786ab6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U55786ab6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U55786ab6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U55786ab6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U55786ab6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U55786ab6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55786ab7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55786ab7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U55786ab7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U55786ab7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55786ab7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55786ab7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U55786ab7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55786ab7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U55786ab7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U55786ab8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U55786ab8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U55786ab8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U55786ab8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W55786ab8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U55786ab8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U55786ab8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U55786ab8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U55786ab9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U55786ab9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U55786ab9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U55786ab9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U55786ab9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U55786ab9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U55786ab9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55786aba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55786aba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U55786aba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U55786aba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55786aba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55786aba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55786aba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U55786aba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5578918d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5578918e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5578918e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5578918e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5578918e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5578918e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5578918e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5578918e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5578918f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5578918f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5578918f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5578918f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5578918f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5578918f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5578918f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55789190|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55789190|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U55789190|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U55789190|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55789190|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55789190|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U55789190|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55789190|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U55789190|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U55789191|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U55789191|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U55789191|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U55789191|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W55789191|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U55789191|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U55789191|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U55789191|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U55789192|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U55789192|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U55789192|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U55789192|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U55789192|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U55789192|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U55789192|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55789193|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55789193|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U55789193|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U55789193|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55789193|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55789193|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55789193|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U55789193|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O55789232|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55789233|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U55789233|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U55789233|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55789233|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U55789233|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U55789233|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U55789233|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U55789234|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U55789234|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U55789234|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U55789234|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U55789234|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U55789234|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U55789234|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55789235|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55789235|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U55789235|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U55789235|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55789235|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55789235|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U55789235|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55789235|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U55789235|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U55789236|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U55789236|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U55789236|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U55789236|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W55789236|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U55789236|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U55789236|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U55789236|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U55789237|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U55789237|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U55789237|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U55789237|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U55789237|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U55789237|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U55789237|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55789238|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55789238|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U55789238|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U55789238|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55789238|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55789238|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55789238|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U55789238|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O55e36012|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e36013|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U55e36013|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U55e36013|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55e36013|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U55e36013|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U55e36013|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U55e36013|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U55e36014|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U55e36014|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U55e36014|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U55e36014|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U55e36014|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U55e36014|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U55e36014|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55e36015|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55e36015|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U55e36015|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U55e36015|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55e36015|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55e36015|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U55e36015|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55e36015|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U55e36015|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U55e36016|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U55e36016|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U55e36016|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U55e36016|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W55e36016|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U55e36016|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U55e36016|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U55e36016|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U55e36017|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U55e36017|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U55e36017|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U55e36017|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U55e36017|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U55e36017|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U55e36017|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55e36018|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55e36018|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U55e36018|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U55e36018|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55e36018|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55e36018|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55e36018|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U55e36018|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O55e362ac|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e362ad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U55e362ad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U55e362ad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55e362ad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U55e362ad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U55e362ad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U55e362ad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U55e362ae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U55e362ae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U55e362ae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U55e362ae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U55e362ae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U55e362ae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U55e362ae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55e362af|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55e362af|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U55e362af|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U55e362af|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55e362af|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55e362af|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U55e362af|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55e362af|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U55e362af|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U55e362b0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U55e362b0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U55e362b0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U55e362b0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W55e362b0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U55e362b0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U55e362b0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U55e362b0|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U55e362b1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U55e362b1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U55e362b1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U55e362b1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U55e362b1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U55e362b1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U55e362b1|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55e362b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55e362b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U55e362b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U55e362b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55e362b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55e362b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55e362b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U55e362b2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O55e47bb4|esr|~/public_html/cvs-fast-export/tests/*0|module||module U55e47bb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U55e47bb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U55e47bb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55e47bb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U55e47bb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U55e47bb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U55e47bb5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U55e47bb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U55e47bb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U55e47bb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U55e47bb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U55e47bb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U55e47bb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U55e47bb6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55e47bb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55e47bb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U55e47bb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U55e47bb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55e47bb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55e47bb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U55e47bb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55e47bb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U55e47bb7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U55e47bb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U55e47bb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U55e47bb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U55e47bb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W55e47bb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U55e47bb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U55e47bb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U55e47bb8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U55e47bb9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U55e47bb9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U55e47bb9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U55e47bb9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U55e47bb9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U55e47bb9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U55e47bb9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W55e47bba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U55e47bba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U55e47bba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U55e47bba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U55e47bba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U55e47bba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U55e47bba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U55e47bba|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O56053a4c|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56053a4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U56053a4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U56053a4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56053a4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U56053a4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U56053a4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U56053a4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U56053a4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U56053a4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U56053a4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U56053a4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U56053a4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U56053a4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U56053a4e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W56053a4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U56053a4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U56053a4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U56053a4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56053a4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U56053a4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U56053a4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U56053a4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U56053a4f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U56053a50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U56053a50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U56053a50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U56053a50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W56053a50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U56053a50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U56053a50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U56053a50|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U56053a51|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U56053a51|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U56053a51|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U56053a51|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U56053a51|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U56053a51|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U56053a51|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W56053a52|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U56053a52|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U56053a52|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U56053a52|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56053a52|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U56053a52|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U56053a52|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U56053a52|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5645dc47|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5645dc48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5645dc48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5645dc48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5645dc48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5645dc48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5645dc48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5645dc48|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5645dc49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5645dc49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5645dc49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5645dc49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5645dc49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5645dc49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5645dc49|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5645dc4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5645dc4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5645dc4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5645dc4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5645dc4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5645dc4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5645dc4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5645dc4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5645dc4a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5645dc4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5645dc4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5645dc4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5645dc4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5645dc4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5645dc4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5645dc4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5645dc4b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5645dc4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5645dc4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5645dc4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5645dc4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5645dc4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5645dc4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5645dc4c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5645dc4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5645dc4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5645dc4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5645dc4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5645dc4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5645dc4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5645dc4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5645dc4d|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O5645e066|esr|~/public_html/cvs-fast-export/tests/*0|module||module U5645e067|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5645e067|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5645e067|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5645e067|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U5645e067|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U5645e067|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U5645e067|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U5645e068|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5645e068|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5645e068|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5645e068|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5645e068|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5645e068|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5645e068|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5645e069|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5645e069|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U5645e069|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U5645e069|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5645e069|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5645e069|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U5645e069|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5645e069|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U5645e069|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U5645e06a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U5645e06a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U5645e06a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U5645e06a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W5645e06a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U5645e06a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U5645e06a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U5645e06a|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U5645e06b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U5645e06b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U5645e06b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U5645e06b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U5645e06b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U5645e06b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U5645e06b|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W5645e06c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U5645e06c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U5645e06c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U5645e06c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U5645e06c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U5645e06c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U5645e06c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U5645e06c|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O564f1ca9|esr|~/public_html/cvs-fast-export/tests/*0|module||module U564f1caa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U564f1caa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U564f1caa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U564f1caa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U564f1caa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U564f1caa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U564f1caa|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U564f1cab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U564f1cab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U564f1cab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U564f1cab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U564f1cab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U564f1cab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U564f1cab|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W564f1cac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U564f1cac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U564f1cac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U564f1cac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U564f1cac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U564f1cac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U564f1cac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U564f1cac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U564f1cac|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U564f1cad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U564f1cad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U564f1cad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U564f1cad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W564f1cad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U564f1cad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U564f1cad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U564f1cad|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U564f1cae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U564f1cae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U564f1cae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U564f1cae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U564f1cae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U564f1cae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U564f1cae|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W564f1caf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U564f1caf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U564f1caf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U564f1caf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U564f1caf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U564f1caf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U564f1caf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U564f1caf|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O56508c3d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56508c3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U56508c3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U56508c3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56508c3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U56508c3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U56508c3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U56508c3e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U56508c3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U56508c3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U56508c3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U56508c3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U56508c3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U56508c3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U56508c3f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W56508c40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U56508c40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U56508c40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U56508c40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56508c40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U56508c40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U56508c40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U56508c40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U56508c40|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U56508c41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U56508c41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U56508c41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U56508c41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W56508c41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U56508c41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U56508c41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U56508c41|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U56508c42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U56508c42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U56508c42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U56508c42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U56508c42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U56508c42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U56508c42|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W56508c43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U56508c43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U56508c43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U56508c43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56508c43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U56508c43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U56508c43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U56508c43|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O56508e0d|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56508e0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U56508e0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U56508e0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56508e0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U56508e0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U56508e0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U56508e0e|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U56508e0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U56508e0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U56508e0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U56508e0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U56508e0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U56508e0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U56508e0f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W56508e10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U56508e10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U56508e10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U56508e10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56508e10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U56508e10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U56508e10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U56508e10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U56508e10|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U56508e11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U56508e11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U56508e11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U56508e11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W56508e11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U56508e11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U56508e11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U56508e11|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U56508e12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U56508e12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U56508e12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U56508e12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U56508e12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U56508e12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U56508e12|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W56508e13|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U56508e13|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U56508e13|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U56508e13|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56508e13|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U56508e13|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U56508e13|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U56508e13|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O56531c5e|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56531c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U56531c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U56531c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56531c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U56531c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U56531c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U56531c5f|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U56531c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U56531c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U56531c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U56531c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U56531c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U56531c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U56531c60|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W56531c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U56531c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U56531c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U56531c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56531c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U56531c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U56531c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U56531c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U56531c61|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U56531c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U56531c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U56531c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U56531c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W56531c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U56531c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U56531c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U56531c62|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U56531c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U56531c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U56531c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U56531c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U56531c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U56531c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U56531c63|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W56531c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U56531c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U56531c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U56531c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56531c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U56531c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U56531c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U56531c64|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O56531ee1|esr|~/public_html/cvs-fast-export/tests/*0|module||module U56531ee2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U56531ee2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U56531ee2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56531ee2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U56531ee2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U56531ee2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U56531ee2|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U56531ee3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U56531ee3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U56531ee3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U56531ee3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U56531ee3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U56531ee3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U56531ee3|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W56531ee4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U56531ee4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U56531ee4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U56531ee4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56531ee4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U56531ee4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U56531ee4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U56531ee4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U56531ee4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U56531ee5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U56531ee5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U56531ee5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U56531ee5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W56531ee5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U56531ee5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U56531ee5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U56531ee5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U56531ee6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U56531ee6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U56531ee6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U56531ee6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U56531ee6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U56531ee6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U56531ee6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W56531ee7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U56531ee7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U56531ee7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U56531ee7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U56531ee7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U56531ee7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U56531ee7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U56531ee7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default O565323a3|esr|~/public_html/cvs-fast-export/tests/*0|module||module U565323a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U565323a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U565323a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U565323a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3|default U565323a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3|default U565323a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2|default U565323a4|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3|default U565323a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U565323a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U565323a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U565323a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U565323a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U565323a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U565323a5|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W565323a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U565323a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.2.1|default U565323a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.2.1|default U565323a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U565323a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U565323a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.2.2|branch_B_MIXED_only U565323a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U565323a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.2.1|default U565323a6|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default U565323a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2.4.1|default U565323a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2.4.1|default U565323a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3.4.1|default U565323a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.3.2.1|default W565323a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2||branch_B_MIXED_only U565323a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.3.2.1|default U565323a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.2.2.1|default U565323a7|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.3.2.1|default U565323a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.1.1.1|default U565323a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.1.1.1|default U565323a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.1.1.1|default U565323a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.1.1.1|default U565323a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.1.1.1|default U565323a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1.1.1|default U565323a8|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.1.1.1|default W565323a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB||default U565323a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout|module|1.2|default U565323a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1|1.2|default U565323a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubA|1.3|default U565323a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub1/subsubB|1.2|default U565323a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2|1.2|default U565323a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub2/subsubA|1.1|default U565323a9|esr|~/public_html/cvs-fast-export/tests/t9602.checkout*6|module/sub3|1.2|default cvs-fast-export-1.35/tests/empty,v0000444000175000017500000000021112624620136015332 0ustar esresrhead ; access ; symbols ; locks ; strict; comment @# Pathological master without trunk from glide3x repository.@; desc @@ cvs-fast-export-1.35/tests/emptytag,v0000664000175000017500000000312512456732537016055 0ustar esresrhead 1.4; access; symbols yamt-pdpolicy:1.1.0.4; locks; strict; comment @# Reduced master from NetBSD containing an empty symbol.@; 1.4 date 2006.09.10.15.45.56; author plunky; state dead; branches; next 1.3; 1.3 date 2006.08.28.00.14.50; author christos; state Exp; branches; next 1.2; 1.2 date 2006.08.20.07.06.58; author plunky; state Exp; branches; next 1.1; 1.1 date 2006.07.26.10.38.51; author tron; state Exp; branches 1.1.2.1 1.1.4.1; next ; 1.1.2.1 date 2006.09.14.21.16.30; author riz; state dead; branches; next ; 1.1.4.1 date 2006.07.26.10.38.51; author yamt; state dead; branches; next 1.1.4.2; 1.1.4.2 date 2006.08.11.15.43.59; author yamt; state Exp; branches; next 1.1.4.3; 1.1.4.3 date 2006.09.03.15.23.56; author yamt; state Exp; branches; next 1.1.4.4; 1.1.4.4 date 2006.09.14.12.31.27; author yamt; state dead; branches; next ; desc @@ 1.4 log @32f882f6d9d435658b9d045cec6ebec0 @ text @content for 1.4 @ 1.3 log @dcc02b8f68044956a92e64506313b1be @ text @d1 1 a1 1 content for 1.3 @ 1.2 log @9e702d6fea48c1d3bb95c46b5beedfc2 @ text @d1 1 a1 1 content for 1.2 @ 1.1 log @72edc95d3d3d8b19f17b383c8b48e7be @ text @d1 1 a1 1 content for 1.1 @ 1.1.4.1 log @4eafb1326d47c4af7b9a8c0557d16fdd @ text @d1 1 a1 1 content for 1.1.4.1 @ 1.1.4.2 log @dcc6c11cf7931986275c70972415738c @ text @d1 1 a1 1 content for 1.1.4.2 @ 1.1.4.3 log @4ded2b4af9bcadc17a16a481bf7db843 @ text @d1 1 a1 1 content for 1.1.4.3 @ 1.1.4.4 log @4ded2b4af9bcadc17a16a481bf7db843 @ text @d1 1 a1 1 content for 1.1.4.4 @ 1.1.2.1 log @2190483e8079df73ca6844812d511f39 @ text @d1 1 a1 1 content for 1.1.2.1 @ cvs-fast-export-1.35/tests/t9601.err0000664000175000017500000000022012536065264015317 0ustar esresrcvs-fast-export: no commitids before 2004-02-09T15:43:16Z. t9601.checkout/added-imported.txt and t9601.git/added-imported.txt are not the same. cvs-fast-export-1.35/tests/branchy.tst0000664000175000017500000000405212446577666016231 0ustar esresr#!/usr/bin/env python ## A branchy repo with deletions and only valid tags import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.CVSRepository("branchy.repo") repo.init() repo.module("module") co = repo.checkout("module", "branchy.checkout") co.write("README", "The quick brown fox jumped over the lazy dog.\n") co.add("README") co.commit("This is a sample commit") co.write("README", "Now is the time for all good men to come to the aid of their country.\n") co.commit("This is another sample commit") co.write("doomed", "This is a doomed file. Its destiny is to be deleted.\n") co.add("doomed") co.commit("Create a doomed file") co.write("doomed", "The world will little note, nor long remember what we say here\n") co.commit("Add a spacer commit") co.tag("foo") # Ordinary, legal tag name co.write(".cvsignore","*.pyc\n") co.add(".cvsignore") co.commit("Check that .cvsignore -> .gitignore name translation works.") co.write(".cvsignore","*.pyc\n*.o\n") co.commit("Check that .cvsignore -> .gitignore name translation works on updates as well.") co.write("README", "And now for something completely different.\n") co.commit("The obligatory Monty Python reference") co.remove("doomed") co.commit("Testing file removal") co.write("README", "The file 'doomed' should not be visible at this revision.\n") co.commit("Only README should be visible here.") co.write("superfluous", "This is a superflous file, a sanity check for branch creation.\n") co.add("superfluous") co.commit("Should not generate an extra fileop after branching") co.branch("samplebranch") # This will point at the same commit as the generated samplebranch_root co.tag("random") co.write("README", "This is alternate content for README.\n") co.commit("Do we get branch detection right?") co.switch("HEAD") co.write("README", "I'm back in the saddle again.\n") co.commit("This commit should alter the master branch.") # The tilde should be stripped from the middle of this co.tag("ill~egal") repo.cleanup() # end cvs-fast-export-1.35/tests/t9604.py0000664000175000017500000000432612446577505015203 0ustar esresr#!/usr/bin/env python ## Testing for correct timestamp handling in author maps. import sys, testlifter, tempfile, os testlifter.verbose += sys.argv[1:].count("-v") uncorrected = """\ Rev 16 2006-10-29 07:00:01 +0000 Rev 15 2006-10-29 06:59:59 +0000 Rev 14 2006-04-02 08:00:01 +0000 Rev 13 2006-04-02 07:59:59 +0000 Rev 12 2005-12-01 00:00:00 +0000 Rev 11 2005-11-01 00:00:00 +0000 Rev 10 2005-10-01 00:00:00 +0000 Rev 9 2005-09-01 00:00:00 +0000 Rev 8 2005-08-01 00:00:00 +0000 Rev 7 2005-07-01 00:00:00 +0000 Rev 6 2005-06-01 00:00:00 +0000 Rev 5 2005-05-01 00:00:00 +0000 Rev 4 2005-04-01 00:00:00 +0000 Rev 3 2005-03-01 00:00:00 +0000 Rev 2 2005-02-01 00:00:00 +0000 Rev 1 2005-01-01 00:00:00 +0000 """ cc = testlifter.ConvertComparison(stem="t9604", module="module") cc.repo.retain = ("-k" in sys.argv[1:]) cc.compare_tree("branch", "master", True) cc.command_returns("cd t9604-git >/dev/null; git log --format='%s %ai'", uncorrected) cc.cleanup() authormap = """\ user1=User One user2=User Two CST6CDT user3=User Three EST5EDT user4=User Four MST7MDT """ corrected="""\ Rev 16 2006-10-29 01:00:01 -0600 User Two Rev 15 2006-10-29 01:59:59 -0500 User Two Rev 14 2006-04-02 03:00:01 -0500 User Two Rev 13 2006-04-02 01:59:59 -0600 User Two Rev 12 2005-11-30 17:00:00 -0700 User Four Rev 11 2005-10-31 19:00:00 -0500 User Three Rev 10 2005-09-30 19:00:00 -0500 User Two Rev 9 2005-09-01 00:00:00 +0000 User One Rev 8 2005-07-31 18:00:00 -0600 User Four Rev 7 2005-06-30 20:00:00 -0400 User Three Rev 6 2005-05-31 19:00:00 -0500 User Two Rev 5 2005-05-01 00:00:00 +0000 User One Rev 4 2005-03-31 17:00:00 -0700 User Four Rev 3 2005-02-28 19:00:00 -0500 User Three Rev 2 2005-01-31 18:00:00 -0600 User Two Rev 1 2005-01-01 00:00:00 +0000 User One """ afp = open(tempfile.mktemp(), "w") afp.write(authormap) afp.flush() cc = testlifter.ConvertComparison(stem="t9604", module="module", options="-A %s" % afp.name) cc.repo.retain = ("-k" in sys.argv[1:]) cc.compare_tree("branch", "master", True) cc.command_returns("cd t9604-git >/dev/null; git log --format='%s %ai %an'", corrected) os.remove(afp.name) afp.close() cc.cleanup() cvs-fast-export-1.35/tests/t9605.err0000664000175000017500000000007312536065303015323 0ustar esresrcvs-fast-export: no commitids before 2012-12-12T21:09:50Z. cvs-fast-export-1.35/tests/daughterbranch.chk0000664000175000017500000000221712536065263017501 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 46 The quick brown fox jumped over the lazy dog. commit refs/heads/master mark :2 committer foo 101200 +0000 data 24 This is a sample commit M 100644 :1 README M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 11 README 1.1 blob mark :3 data 63 This is a superflous file, a sanity check for branch creation. commit refs/heads/master mark :4 committer foo 102400 +0000 data 52 Should not generate an extra fileop after branching from :2 M 100644 :3 superfluous property cvs-revision 16 superfluous 1.1 reset refs/tags/samplebranch_root from :4 blob mark :5 data 51 I date myself with a Jefferson Airplane reference. commit refs/heads/master mark :6 committer foo 103600 +0000 data 51 This file should not appear on the daughter branch from :4 M 100644 :5 feedyourhead property cvs-revision 17 feedyourhead 1.1 reset refs/heads/master from :6 reset refs/heads/samplebranch from :4 done cvs-fast-export-1.35/tests/t9602.err0000664000175000017500000000017112536065273015325 0ustar esresrcvs-fast-export: no commitids before 2003-06-03T04:33:13Z. t9602 branch vendorbranch: vendorbranch unexpectedly missing. cvs-fast-export-1.35/tests/hashsymbol.chk0000664000175000017500000000222212624620213016653 0ustar esresrblob mark :1 data 27 hashsymbol content for 1.1 commit refs/heads/master mark :2 committer mw 741899980 +0000 data 33 da28248b4ec75efbe0ba7461142ed60d M 100644 :1 hashsymbol M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end blob mark :3 data 31 hashsymbol content for 1.1.1.1 commit refs/heads/master mark :4 committer mw 741899981 +0000 data 33 f8a1b63b883ce97d3c94a35c52e5f57a from :2 M 100644 :3 hashsymbol reset refs/tags/amiga-version#621 from :4 reset refs/tags/netbsd-0-9-patch-001 from :4 reset refs/tags/netbsd-0-9-RELEASE from :4 reset refs/tags/netbsd-0-9-BETA from :4 reset refs/tags/netbsd-0-9-ALPHA2 from :4 reset refs/tags/netbsd-0-9-ALPHA from :4 reset refs/tags/netbsd-0-9-base from :4 reset refs/tags/amiga_version_390 from :4 commit refs/heads/master mark :5 committer mycroft 760148666 +0000 data 33 de54d576de51109167df624abae26024 from :4 D hashsymbol reset refs/heads/master from :5 reset refs/heads/netbsd-0-9 from :4 done cvs-fast-export-1.35/tests/tagbug.chk0000664000175000017500000000133312536065263015767 0ustar esresr#reposurgeon sourcetype cvs blob mark :1 data 35 Not an obfuscated C contest entry. blob mark :2 data 46 The quick brown fox jumped over the lazy dog. commit refs/heads/master mark :3 committer foo 101800 +0000 data 13 First commit M 100644 :1 bar.c M 100644 :2 foo.c M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end property cvs-revision 20 bar.c 1.1 foo.c 1.1 commit refs/heads/master mark :4 committer foo 102400 +0000 data 14 Second commit from :3 D bar.c reset refs/tags/tag from :4 reset refs/heads/master from :4 done cvs-fast-export-1.35/tests/tagbug.tst0000664000175000017500000000101012446600133016013 0ustar esresr#!/usr/bin/env python ## Tricky tag corner case import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.CVSRepository("tagbug.repo") repo.init() repo.module("module") co = repo.checkout("module", "tagbug.checkout") co.write("foo.c", "The quick brown fox jumped over the lazy dog.\n") co.add("foo.c") co.write("bar.c", "Not an obfuscated C contest entry.\n") co.add("bar.c") co.commit("First commit") co.remove("bar.c") co.commit("Second commit") co.tag("tag") repo.cleanup() # end cvs-fast-export-1.35/tests/daughterbranch.tst0000664000175000017500000000177712435607267017564 0ustar esresr#!/usr/bin/env python ## Test for the daughter-branch bug # This was the description: # # * This applies to files added to the source branch *after* a daughter # branch was created: if previously no commit was made on the daughter # branch they will erroneously be added to the daughter branch in git. import testlifter repo = testlifter.CVSRepository("daughterbranch.repo") repo.init() repo.module("module") co = repo.checkout("module", "daughterbranch.checkout") co.write("README", "The quick brown fox jumped over the lazy dog.\n") co.add("README") co.commit("This is a sample commit") co.write("superfluous", "This is a superflous file, a sanity check for branch creation.\n") co.add("superfluous") co.commit("Should not generate an extra fileop after branching") co.branch("samplebranch") co.switch("HEAD") co.write("feedyourhead", "I date myself with a Jefferson Airplane reference.\n") co.add("feedyourhead") co.commit("This file should not appear on the daughter branch") repo.cleanup() # end cvs-fast-export-1.35/tests/hardlinks.chk0000664000175000017500000000470212624620213016466 0ustar esresrblob mark :1 data 386 AC_DEFUN(AC_C_STRINGIZE, [ AC_REQUIRE([AC_PROG_CPP]) AC_MSG_CHECKING([for preprocessor stringizing operator]) AC_CACHE_VAL(ac_cv_c_stringize, AC_EGREP_CPP([#teststring],[ #define x(y) #y char *s = x(teststring); ], ac_cv_c_stringize=no, ac_cv_c_stringize=yes)) if test "${ac_cv_c_stringize}" = yes then AC_DEFINE(HAVE_STRINGIZE) fi AC_MSG_RESULT([${ac_cv_c_stringize}]) ])dnl commit refs/heads/master mark :2 committer lhecking 908825865 +0000 data 40 New file, from deprecated acinclude.m4. M 100644 :1 hardlinks M 100644 inline .gitignore data 198 # CVS default ignores begin tags TAGS .make.state .nse_depinfo *~ #* .#* ,* _$* *$ *.old *.bak *.BAK *.orig *.rej .del-* *.a *.olb *.o *.obj *.so *.exe *.Z *.elc *.ln core # CVS default ignores end reset refs/tags/BETA_349_990106 from :2 reset refs/tags/BETA_349_981223 from :2 reset refs/tags/BETA_349_981222 from :2 reset refs/tags/BETA_349_981221 from :2 reset refs/tags/BETA_349_981217 from :2 reset refs/tags/BETA_349_981216 from :2 reset refs/tags/BETA_349_981215 from :2 reset refs/tags/BETA_349 from :2 reset refs/tags/BETA_348_981214 from :2 reset refs/tags/BETA_348_981210 from :2 reset refs/tags/BETA_348_981209 from :2 reset refs/tags/BETA_348_981207 from :2 reset refs/tags/BETA_348_981206 from :2 reset refs/tags/BETA_348_release from :2 reset refs/tags/BETA_348_981204 from :2 reset refs/tags/BETA_348_981203 from :2 reset refs/tags/BETA_348 from :2 reset refs/tags/BETA_347_981202 from :2 reset refs/tags/BETA_347_981201 from :2 reset refs/tags/BETA_347_981130 from :2 reset refs/tags/BETA_347_981126 from :2 reset refs/tags/BETA_347_981125 from :2 reset refs/tags/BETA_347_981123 from :2 reset refs/tags/BETA_347_pl7 from :2 reset refs/tags/BETA_347_981121 from :2 reset refs/tags/BETA_347_98112001 from :2 reset refs/tags/BETA_347_981120 from :2 reset refs/tags/BETA_347_981119 from :2 reset refs/tags/BETA_347_981117 from :2 reset refs/tags/BETA_347_981116 from :2 reset refs/tags/BETA_347_981112 from :2 reset refs/tags/BETA_347_981106 from :2 reset refs/tags/BETA_347_98110401 from :2 reset refs/tags/BETA_347_981104 from :2 reset refs/tags/BETA_347_981103 from :2 reset refs/tags/BETA_347_981028 from :2 reset refs/tags/BETA_347_981020 from :2 reset refs/tags/BETA_347_98101901 from :2 commit refs/heads/master mark :3 committer lhecking 916149931 +0000 data 9 Removed. from :2 D hardlinks reset refs/heads/master from :3 done cvs-fast-export-1.35/tests/twobranch.repo/0000775000175000017500000000000012621360122016745 5ustar esresrcvs-fast-export-1.35/tests/twobranch.repo/module/0000775000175000017500000000000012621360143020235 5ustar esresrcvs-fast-export-1.35/tests/twobranch.repo/module/README,v0000444000175000017500000000227512621360143021361 0ustar esresrhead 1.3; access; symbols samplebranch:1.1.0.2 samplebranch_root:1.1; locks; strict; comment @# @; 1.3 date 2015.11.13.13.06.43; author esr; state Exp; branches; next 1.2; commitid 1005645E06310950C49; 1.2 date 2015.11.13.13.06.35; author esr; state Exp; branches; next 1.1; commitid 1005645E05B108BCE36; 1.1 date 2015.11.13.13.06.28; author esr; state Exp; branches 1.1.2.1; next ; commitid 1005645E054107633C1; 1.1.2.1 date 2015.11.13.13.06.31; author esr; state Exp; branches; next 1.1.2.2; commitid 1005645E05710865546; 1.1.2.2 date 2015.11.13.13.06.39; author esr; state Exp; branches; next ; commitid 1005645E05F10913BD2; desc @@ 1.3 log @This commit should alter the master branch. @ text @I'm back in the saddle again. @ 1.2 log @The obligatory Monty Python reference @ text @d1 1 a1 1 And now for something completely different. @ 1.1 log @This is a sample commit @ text @d1 1 a1 1 The quick brown fox jumped over the lazy dog. @ 1.1.2.1 log @This is another sample commit @ text @d1 1 a1 1 Now is the time for all good men to come to the aid of their country. @ 1.1.2.2 log @We will put the dump theshold before this commit. @ text @d1 1 a1 1 This is random content for README. @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/0000775000175000017500000000000012624160405020111 5ustar esresrcvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#postadmin0000664000175000017500000000171212621360122022147 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/cvswrappers0000444000175000017500000000113212621360122022377 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/loginfo,v0000444000175000017500000000415512621360122021727 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#checkoutlist0000664000175000017500000000075712621360122022662 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#cvswrappers0000664000175000017500000000113212621360122022524 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/val-tags0000666000175000017500000000004312621360125021547 0ustar esresrsamplebranch_root y samplebranch y cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/postadmin0000444000175000017500000000171212621360122022022 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#rcsinfo0000664000175000017500000000121112621360122021606 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/verifymsg,v0000444000175000017500000000334512621360122022305 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/checkoutlist0000444000175000017500000000075712621360122022535 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/commitinfo,v0000444000175000017500000000275412621360122022441 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#postwatch0000664000175000017500000000175512621360122022174 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/posttag,v0000444000175000017500000000420612621360122021750 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#preproxy0000664000175000017500000000234312621360122022042 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/taginfo0000444000175000017500000000437712621360122021465 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#postproxy0000664000175000017500000000220112621360122022232 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/verifymsg0000444000175000017500000000277112621360122022045 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/history0000666000175000017500000000141012621360143021531 0ustar esresrO5645e052|esr|~/public_html/cvs-fast-export/tests/*0|module||module A5645e054|esr|~/public_html/cvs-fast-export/tests/twobranch.checkout|module|1.1|README M5645e057|esr|~/public_html/cvs-fast-export/tests/twobranch.checkout|module|1.1.2.1|README U5645e058|esr|~/public_html/cvs-fast-export/tests/twobranch.checkout|module|1.1|README M5645e05b|esr|~/public_html/cvs-fast-export/tests/twobranch.checkout|module|1.2|README U5645e05c|esr|~/public_html/cvs-fast-export/tests/twobranch.checkout|module|1.1.2.1|README M5645e05f|esr|~/public_html/cvs-fast-export/tests/twobranch.checkout|module|1.1.2.2|README U5645e060|esr|~/public_html/cvs-fast-export/tests/twobranch.checkout|module|1.2|README M5645e063|esr|~/public_html/cvs-fast-export/tests/twobranch.checkout|module|1.3|README cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/postwatch,v0000444000175000017500000000233112621360122022300 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/postadmin,v0000444000175000017500000000226612621360122022271 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/config0000444000175000017500000001004712621360122021272 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/config,v0000444000175000017500000001042312621360122021532 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/rcsinfo,v0000444000175000017500000000156512621360122021737 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/loginfo0000444000175000017500000000360112621360122021460 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/commitinfo0000444000175000017500000000240012621360122022163 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/posttag0000444000175000017500000000363212621360122021510 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/postproxy,v0000444000175000017500000000255512621360122022363 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/postproxy0000444000175000017500000000220112621360122022105 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/rcsinfo0000444000175000017500000000121112621360122021461 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/preproxy0000444000175000017500000000234312621360122021715 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/modules,v0000444000175000017500000000244512621360122021742 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#config0000664000175000017500000001004712621360122021417 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/notify0000444000175000017500000000163412621360122021337 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/checkoutlist,v0000444000175000017500000000133312621360122022766 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#commitinfo0000664000175000017500000000240012621360122022310 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/Emptydir/0000775000175000017500000000000012621360122021701 5ustar esresrcvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/notify,v0000444000175000017500000000221012621360122021570 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#taginfo0000664000175000017500000000437712621360122021612 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#verifymsg0000664000175000017500000000277112621360122022172 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/postwatch0000444000175000017500000000175512621360122022047 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/cvswrappers,v0000444000175000017500000000150612621360122022646 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/preproxy,v0000444000175000017500000000271712621360122022164 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/taginfo,v0000444000175000017500000000475312621360122021725 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.26; author esr; state Exp; branches; next ; commitid 1005645E0521070271B; desc @@ 1.1 log @initial checkin@ text @# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#notify0000664000175000017500000000163412621360122021464 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/modules0000444000175000017500000000207112621360122021473 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#posttag0000664000175000017500000000363212621360122021635 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#modules0000664000175000017500000000207112621360122021620 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/twobranch.repo/CVSROOT/.#loginfo0000664000175000017500000000360112621360122021605 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/README0000664000175000017500000001074512455733365014723 0ustar esresr= The cvs-fast-export test suite = You will need RCS and CVS installed to run these tests. Ensure there is no CVSROOT folder in any parent directory. There are mutiple groups of tests in this directory. == Auxiliary tools == visualize:: Visualize the contents of a test repository or master file using the -g option of cvs-fast-export and the dot(1) renderer. gitwassh:: Canonicalize a git fast-mport stream. == The .tst files == One group is generated by the *.tst files. These are Python scripts that use the framework in testlifter.py to create CVS or RCS repositories (extension .repo) using the local installation of CVS or RCS. During normal regression tests or rebuilds, cvs-fast-export is run against those repositories and the output compared to check files. The reason for this organization is to make it easier to modify and elaborate the tests by changing the generator scripts. The repo rebuilds are expensive - much slower than the cvs-fast-export runs. And they need to be done only when the generator scripts change, not on every change to the cvs-fast-export code. In order to speed up normal testing, the repos are left in place until explicitly cleaned. This group is mainly a stability test. The *.chk files are part of the repository and are rebuilt only seldom, when there is genuine reason for the behavior of the program to change. == The master files == These are regression tests for individual parsing edge cases that consist of individual masters (extension ,v) paired with .chk files that are git stream outputs. == Incremental-dump regression == This is a specifically crafted test to see if incremental dumping of a late section of a repository works. == Pathological repositories == These don't have regression tests yet. QED.testrepo:: Contains a branch cycle. missingbranch,v: Contains 1.2.2.1 branch but no 1.2.1.1, and 1.4.2.1 branch but no 1.4.1.1. Extracted from NetBSD src where this is a real case. No commit is generated corresponding to the 1.[24].2.1 revisions. == The t9600 group == The t960[1-4] files are tests taken from the git tree for testing the cvsimport facility, adapted for testing cvs-fast-export directly. The t9605 test was composed by Chris Rorvick using the git test framework but as of December 2013 has not been merged to the git tree. These are deliberately malformed repositories that exercise strange corner cases. Each repo has a custom-built script using the testlifter framework to check properties of the CVS repository against properties of the git conversion. The scripts perform tests equivalent to the Perl scripts in the originals. Summary of results: t9601: |======================================================================== | | cvsps | cvs-fast-export |import a module with a vendor branch | Succeeds | Succeeds |check master out of git repository | Succeeds | Succeeds |check a file imported once | Fails | Succeeds |check a file imported twice | Succeeds | Succeeds |check a file imported then modified on HEAD | Succeeds | Succeeds |...imported, modified, then imported again | Succeeds | Succeeds |check a file added to HEAD then imported | Succeeds | Fails | a vendor branch whose tag has been removed | Succeeds | Succeeds |======================================================================== t9602: |======================================================================== | | cvsps | cvs-fast-export |import module | Succeeds | Succeeds |test branch master | Succeeds | Succeeds |test branch vendorbranch | Succeeds | Succeeds |test_branch B_FROM_INITIALS | Fails | Succeeds |test_branch B_FROM_INITIALS_BUT_ONE | Fails | Fails |test_branch B_MIXED | Fails | Succeeds |test_branch B_SPLI | Succeeds | Succeeds |test branch vendortag | Fails | Succeeds |test tag T_ALL_INITIAL_FILES | Succeeds | Succeeds |test tag T_ALL_INITIAL_FILES_BUT_ONE | Fails | Succeeds |test_tag T_MIXED | Fails | Succeeds |======================================================================== t9603: cvsps fails this test; cvs-fast-export succeeds. t9604: cvsps and cvs-fast-export both succeed at this test. t9605: cvsps fails this test; cvs-fast-export succeeds. cvs-fast-export-1.35/tests/hack3.repo/0000775000175000017500000000000012621357775015773 5ustar esresrcvs-fast-export-1.35/tests/hack3.repo/module/0000775000175000017500000000000012621360013017233 5ustar esresrcvs-fast-export-1.35/tests/hack3.repo/module/foo.c,v0000444000175000017500000000155012621360013020421 0ustar esresrhead 1.2; access; symbols alternate:1.2.0.2 alternate_root:1.2; locks; strict; comment @ * @; 1.2 date 2015.11.13.13.05.09; author esr; state Exp; branches 1.2.2.1; next 1.1; commitid 1005645E0050EF3D830; 1.1 date 2015.11.13.13.05.03; author esr; state Exp; branches; next ; commitid 1005645DFFF0EEFE445; 1.2.2.1 date 2015.11.13.13.05.12; author esr; state Exp; branches; next 1.2.2.2; commitid 1005645E0080EFC5CED; 1.2.2.2 date 2015.11.13.13.05.15; author esr; state Exp; branches; next ; commitid 1005645E00B0EFEACCA; desc @@ 1.2 log @Third commit @ text @And now for something completely different. @ 1.2.2.1 log @Fourth commit @ text @d1 1 a1 1 Ceci n'est pas un sourcefile. @ 1.2.2.2 log @Fifth commit @ text @d1 1 a1 1 Twas brillig, and the slithy toves... @ 1.1 log @First commit @ text @d1 1 a1 1 The quick brown fox jumped over the lazy dog. @ cvs-fast-export-1.35/tests/hack3.repo/module/bar.c,v0000444000175000017500000000154512621360013020406 0ustar esresrhead 1.3; access; symbols alternate:1.3.0.2 alternate_root:1.3; locks; strict; comment @ * @; 1.3 date 2015.11.13.13.05.09; author esr; state Exp; branches 1.3.2.1; next 1.2; commitid 1005645E0050EF3D830; 1.2 date 2015.11.13.13.05.06; author esr; state Exp; branches; next 1.1; commitid 1005645E0020EF1A876; 1.1 date 2015.11.13.13.05.03; author esr; state Exp; branches; next ; commitid 1005645DFFF0EEFE445; 1.3.2.1 date 2015.11.13.13.05.15; author esr; state Exp; branches; next ; commitid 1005645E00B0EFEACCA; desc @@ 1.3 log @Third commit @ text @One is dead, one is mad, and I have forgotten. @ 1.3.2.1 log @Fifth commit @ text @d1 1 a1 1 ...did gyre and gimble in the wabe. @ 1.2 log @Second commit @ text @d1 1 a1 1 The world will little note, nor long remember... @ 1.1 log @First commit @ text @d1 1 a1 1 Not an obfuscated C contest entry. @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/0000775000175000017500000000000012624160405017113 5ustar esresrcvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#postadmin0000664000175000017500000000171212621357775021175 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/cvswrappers0000444000175000017500000000113212621357775021425 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/loginfo,v0000444000175000017500000000415512621357775020755 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#checkoutlist0000664000175000017500000000075712621357775021710 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#cvswrappers0000664000175000017500000000113212621357775021552 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/val-tags0000666000175000017500000000003512621360006020550 0ustar esresralternate_root y alternate y cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/postadmin0000444000175000017500000000171212621357775021050 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#rcsinfo0000664000175000017500000000121112621357775020634 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/verifymsg,v0000444000175000017500000000334512621357775021333 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/checkoutlist0000444000175000017500000000075712621357775021563 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/commitinfo,v0000444000175000017500000000275412621357775021467 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#postwatch0000664000175000017500000000175512621357775021222 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/posttag,v0000444000175000017500000000420612621357775020776 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#preproxy0000664000175000017500000000234312621357775021070 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/taginfo0000444000175000017500000000437712621357775020513 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#postproxy0000664000175000017500000000220112621357775021260 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/verifymsg0000444000175000017500000000277112621357775021073 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/history0000666000175000017500000000134012621360013020531 0ustar esresrO5645dffd|esr|~/public_html/cvs-fast-export/tests/*0|module||module A5645dfff|esr|~/public_html/cvs-fast-export/tests/hack3.checkout|module|1.1|bar.c A5645dfff|esr|~/public_html/cvs-fast-export/tests/hack3.checkout|module|1.1|foo.c M5645e002|esr|~/public_html/cvs-fast-export/tests/hack3.checkout|module|1.2|bar.c M5645e005|esr|~/public_html/cvs-fast-export/tests/hack3.checkout|module|1.3|bar.c M5645e005|esr|~/public_html/cvs-fast-export/tests/hack3.checkout|module|1.2|foo.c M5645e008|esr|~/public_html/cvs-fast-export/tests/hack3.checkout|module|1.2.2.1|foo.c M5645e00b|esr|~/public_html/cvs-fast-export/tests/hack3.checkout|module|1.3.2.1|bar.c M5645e00b|esr|~/public_html/cvs-fast-export/tests/hack3.checkout|module|1.2.2.2|foo.c cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/postwatch,v0000444000175000017500000000233112621357775021326 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/postadmin,v0000444000175000017500000000226612621357775021317 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/config0000444000175000017500000001004712621357775020320 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/config,v0000444000175000017500000001042312621357775020560 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/rcsinfo,v0000444000175000017500000000156512621357775020765 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/loginfo0000444000175000017500000000360112621357775020506 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/commitinfo0000444000175000017500000000240012621357775021211 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/posttag0000444000175000017500000000363212621357775020536 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/postproxy,v0000444000175000017500000000255512621357775021411 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/postproxy0000444000175000017500000000220112621357775021133 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/rcsinfo0000444000175000017500000000121112621357775020507 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/preproxy0000444000175000017500000000234312621357775020743 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/modules,v0000444000175000017500000000244512621357775020770 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#config0000664000175000017500000001004712621357775020445 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/notify0000444000175000017500000000163412621357775020365 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/checkoutlist,v0000444000175000017500000000133312621357775022014 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#commitinfo0000664000175000017500000000240012621357775021336 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/Emptydir/0000775000175000017500000000000012621357775020727 5ustar esresrcvs-fast-export-1.35/tests/hack3.repo/CVSROOT/notify,v0000444000175000017500000000221012621357775020616 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#taginfo0000664000175000017500000000437712621357775020640 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#verifymsg0000664000175000017500000000277112621357775021220 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/postwatch0000444000175000017500000000175512621357775021075 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/cvswrappers,v0000444000175000017500000000150612621357775021674 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/preproxy,v0000444000175000017500000000271712621357775021212 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/taginfo,v0000444000175000017500000000475312621357775020753 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.05.01; author esr; state Exp; branches; next ; commitid 1005645DFFD0EE09F64; desc @@ 1.1 log @initial checkin@ text @# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#notify0000664000175000017500000000163412621357775020512 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/modules0000444000175000017500000000207112621357775020521 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#posttag0000664000175000017500000000363212621357775020663 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#modules0000664000175000017500000000207112621357775020646 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/hack3.repo/CVSROOT/.#loginfo0000664000175000017500000000360112621357775020633 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/tagbug.repo/0000775000175000017500000000000012621360115016231 5ustar esresrcvs-fast-export-1.35/tests/tagbug.repo/module/0000775000175000017500000000000012621360122017514 5ustar esresrcvs-fast-export-1.35/tests/tagbug.repo/module/foo.c,v0000444000175000017500000000040212621360122020675 0ustar esresrhead 1.1; access; symbols tag:1.1; locks; strict; comment @ * @; 1.1 date 2015.11.13.13.06.23; author esr; state Exp; branches; next ; commitid 1005645E04F1035E0C0; desc @@ 1.1 log @First commit @ text @The quick brown fox jumped over the lazy dog. @ cvs-fast-export-1.35/tests/tagbug.repo/module/Attic/0000775000175000017500000000000012621360122020560 5ustar esresrcvs-fast-export-1.35/tests/tagbug.repo/module/Attic/bar.c,v0000444000175000017500000000057312621360122021733 0ustar esresrhead 1.2; access; symbols; locks; strict; comment @ * @; 1.2 date 2015.11.13.13.06.26; author esr; state dead; branches; next 1.1; commitid 1005645E0521039B915; 1.1 date 2015.11.13.13.06.23; author esr; state Exp; branches; next ; commitid 1005645E04F1035E0C0; desc @@ 1.2 log @Second commit @ text @Not an obfuscated C contest entry. @ 1.1 log @First commit @ text @@ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/0000775000175000017500000000000012624160405017373 5ustar esresrcvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#postadmin0000664000175000017500000000171212621360115021433 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/cvswrappers0000444000175000017500000000113212621360115021663 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/loginfo,v0000444000175000017500000000415512621360115021213 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#checkoutlist0000664000175000017500000000075712621360115022146 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#cvswrappers0000664000175000017500000000113212621360115022010 0ustar esresr# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/val-tags0000666000175000017500000000000612621360122021025 0ustar esresrtag y cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/postadmin0000444000175000017500000000171212621360115021306 0ustar esresr# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#rcsinfo0000664000175000017500000000121112621360115021072 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/verifymsg,v0000444000175000017500000000334512621360115021571 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/checkoutlist0000444000175000017500000000075712621360115022021 0ustar esresr# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/commitinfo,v0000444000175000017500000000275412621360115021725 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#postwatch0000664000175000017500000000175512621360115021460 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/posttag,v0000444000175000017500000000420612621360115021234 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#preproxy0000664000175000017500000000234312621360115021326 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/taginfo0000444000175000017500000000437712621360115020751 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#postproxy0000664000175000017500000000220112621360115021516 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/verifymsg0000444000175000017500000000277112621360115021331 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/history0000666000175000017500000000047512621360122021022 0ustar esresrO5645e04d|esr|~/public_html/cvs-fast-export/tests/*0|module||module A5645e04f|esr|~/public_html/cvs-fast-export/tests/tagbug.checkout|module|1.1|bar.c A5645e04f|esr|~/public_html/cvs-fast-export/tests/tagbug.checkout|module|1.1|foo.c R5645e052|esr|~/public_html/cvs-fast-export/tests/tagbug.checkout|module|1.2|bar.c cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/postwatch,v0000444000175000017500000000233112621360115021564 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/postadmin,v0000444000175000017500000000226612621360115021555 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# The "postadmin" file is called after the "admin" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/config0000444000175000017500000001004712621360115020556 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/config,v0000444000175000017500000001042312621360115021016 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/rcsinfo,v0000444000175000017500000000156512621360115021223 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/loginfo0000444000175000017500000000360112621360115020744 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/commitinfo0000444000175000017500000000240012621360115021447 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/posttag0000444000175000017500000000363212621360115020774 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/postproxy,v0000444000175000017500000000255512621360115021647 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/postproxy0000444000175000017500000000220112621360115021371 0ustar esresr# The "postproxy" file is called from a secondary server as soon as # the secondary server closes its connection to the primary server. # This script might, for example, be used to shut down a dial up # or VPN connection to the primary server's network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/rcsinfo0000444000175000017500000000121112621360115020745 0ustar esresr# The "rcsinfo" file is used to control templates with which the editor # is invoked on commit and import. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being made to, relative to the # $CVSROOT. For the first match that is found, then the remainder of the # line is the name of the file that contains the template. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/preproxy0000444000175000017500000000234312621360115021201 0ustar esresr# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/modules,v0000444000175000017500000000244512621360115021226 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#config0000664000175000017500000001004712621360115020703 0ustar esresr# Set 'SystemAuth' to 'no' if pserver shouldn't check system users/passwords. #SystemAuth=no # Set 'LocalKeyword' to specify a local alias for a standard keyword. #LocalKeyword=MYCVS=CVSHeader # Set 'KeywordExpand' to 'i' followed by a list of keywords to expand or # 'e' followed by a list of keywords to not expand. #KeywordExpand=iMYCVS,Name,Date,Mdocdate #KeywordExpand=eCVSHeader # Set 'TopLevelAdmin' to 'yes' to create a CVS directory at the top # level of the new working directory when using the 'cvs checkout' # command. #TopLevelAdmin=no # Put CVS lock files in this directory rather than directly in the repository. #LockDir=/var/lock/cvs # Set 'LogHistory' to 'all' or 'TOEFWUPCGMAR' to log all transactions to the # history file, or a subset as needed (ie 'TMAR' logs all write operations) #LogHistory=TOEFWUPCGMAR # Set 'RereadLogAfterVerify' to 'always' (the default) to allow the verifymsg # script to change the log message. Set it to 'stat' to force CVS to verify # that the file has changed before reading it (this can take up to an extra # second per directory being committed, so it is not recommended for large # repositories. Set it to 'never' (the previous CVS behavior) to prevent # verifymsg scripts from changing the log message. #RereadLogAfterVerify=always # Set 'UserAdminOptions' to the list of 'cvs admin' commands (options) # that users not in the '_cvsadmin' group are allowed to run. This # defaults to 'k', or only allowing the changing of the default # keyword expansion mode for files for users not in the '_cvsadmin' group. # This value is ignored if the '_cvsadmin' group does not exist. # # The following string would enable all 'cvs admin' commands for all # users: #UserAdminOptions=aAbceIklLmnNostuU # Set 'UseNewInfoFmtStrings' to 'no' if you must support a legacy system by # enabling the deprecated old style info file command line format strings. # Be warned that these strings could be disabled in any new version of CVS. UseNewInfoFmtStrings=yes # Set 'ImportNewFilesToVendorBranchOnly' to 'yes' if you wish to force # every 'cvs import' command to behave as if the '-X' flag was # specified. #ImportNewFilesToVendorBranchOnly=no # Set 'PrimaryServer' to the CVSROOT to the primary, or write, server when # establishing one or more read-only mirrors which serve as proxies for # the write server in write mode or redirect the client to the primary for # write requests. # # For example: # # PrimaryServer=:fork:localhost/cvsroot # Set 'MaxProxyBufferSize' to the the maximum allowable secondary # buffer memory cache size before the buffer begins being stored to disk, in # bytes. Must be a positive integer but may end in 'K', 'M', 'G', or 'T' (for # Kibi, Mebi, Gibi, & Tebi, respectively). If an otherwise valid number you # specify is greater than the SIZE_MAX defined by your system's C compiler, # then it will be resolved to SIZE_MAX without a warning. Defaults to 8M (8 # Mebibytes). The 'i' from 'Ki', 'Mi', etc. is omitted. # # High values for MaxProxyBufferSize may speed up a secondary server # with old hardware and a lot of available memory but can actually slow a # modern system down slightly. # # For example: # # MaxProxyBufferSize=1G # Set 'MaxCommentLeaderLength' to the maximum length permitted for the # automagically determined comment leader used when expanding the Log # keyword, in bytes. CVS's behavior when the automagically determined # comment leader exceeds this length is dependent on the value of # 'UseArchiveCommentLeader' set in this file. 'unlimited' is a valid # setting for this value. Defaults to 20 bytes. # # For example: # # MaxCommentLeaderLength=20 # Set 'UseArchiveCommentLeader' to 'yes' to cause CVS to fall back on # the comment leader set in the RCS archive file, if any, when the # automagically determined comment leader exceeds 'MaxCommentLeaderLength' # bytes. If 'UseArchiveCommentLeader' is not set and a comment leader # greater than 'MaxCommentLeaderLength' is calculated, the Log keyword # being examined will not be expanded. Defaults to 'no'. # # For example: # # UseArchiveCommentLeader=no cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/notify0000444000175000017500000000163412621360115020623 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/checkoutlist,v0000444000175000017500000000133312621360115022252 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# The "checkoutlist" file is used to support additional version controlled # administrative files in $CVSROOT/CVSROOT, such as template files. # # The first entry on a line is a filename which will be checked out from # the corresponding RCS file in the $CVSROOT/CVSROOT directory. # The remainder of the line is an error message to use if the file cannot # be checked out. # # File format: # # [][] # # comment lines begin with '#' @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#commitinfo0000664000175000017500000000240012621360115021574 0ustar esresr# The "commitinfo" file is used to control pre-commit checks. # The filter on the right is invoked with the repository and a list # of files to check. A non-zero exit of the filter program will # cause the commit to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{s} = file name, file name, ... # # If no format strings are present in the filter string, a default of # " %r %s" will be appended to the filter string, but this usage is # deprecated. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/Emptydir/0000775000175000017500000000000012621360115021165 5ustar esresrcvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/notify,v0000444000175000017500000000221012621360115021054 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#taginfo0000664000175000017500000000437712621360115021076 0ustar esresr# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#verifymsg0000664000175000017500000000277112621360115021456 0ustar esresr# The "verifymsg" file is used to allow verification of logging # information. It works best when a template (as specified in the # rcsinfo file) is provided for the logging procedure. Given a # template with locations for, a bug-id number, a list of people who # reviewed the code before it can be checked in, and an external # process to catalog the differences that were code reviewed, the # following test can be applied to the code: # # Making sure that the entered bug-id number is correct. # Validating that the code that was reviewed is indeed the code being # checked in (using the bug-id number or a separate review # number to identify this particular code set.). # # If any of the above test failed, then the commit would be aborted. # # Format strings present in the filter will be replaced as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %l = name of log file to be verified. # # If no format strings are present in the filter, a default " %l" will # be appended to the filter, but this usage is deprecated. # # Actions such as mailing a copy of the report to each reviewer are # better handled by an entry in the loginfo file. # # One thing that should be noted is the the ALL keyword is not # supported. There can be only one entry that matches a given # repository. cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/postwatch0000444000175000017500000000175512621360115021333 0ustar esresr# The "postwatch" file is called after any command finishes writing new # file attibute (watch/edit) information in a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/cvswrappers,v0000444000175000017500000000150612621360115022132 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# This file affects handling of files based on their names. # # The -m option specifies whether CVS attempts to merge files. # # The -k option specifies keyword expansion (e.g. -kb for binary). # # Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers) # # wildcard [option value][option value]... # # where option is one of # -f from cvs filter value: path to filter # -t to cvs filter value: path to filter # -m update methodology value: MERGE or COPY # -k expansion mode value: b, o, kkv, &c # # and value is a single-quote delimited value. # For example: #*.gif -k 'b' @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/preproxy,v0000444000175000017500000000271712621360115021450 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# The "preproxy" file is called form the secondary server as soon as # the secondary server determines that it will be proxying a write # command to a primary server and immediately before it opens a # connection to the primary server. This script might, for example, be # used to launch a dial up or VPN connection to the primary server's # network. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository (currently always ".") # %r = repository (path portion of $CVSROOT) # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/taginfo,v0000444000175000017500000000475312621360115021211 0ustar esresrhead 1.1; access ; symbols ; locks ; strict; comment @# @; 1.1 date 2015.11.13.13.06.21; author esr; state Exp; branches; next ; commitid 1005645E04D1025D763; desc @@ 1.1 log @initial checkin@ text @# The "taginfo" file is used to control pre-tag checks. # The filter on the right is invoked with the following arguments # if no format strings are present: # # $1 -- tagname # $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d # $3 -- tagtype "?" on delete, "T" for branch, "N" for static # $4 -- repository # $5-> file revision [file revision ...] # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # A non-zero exit of the filter program will cause the tag to be aborted. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". @ cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#notify0000664000175000017500000000163412621360115020750 0ustar esresr# The "notify" file controls where notifications from watches set by # "cvs watch add" or "cvs edit" are sent. The first entry on a line is # a regular expression which is tested against the directory that the # change is being made to, relative to the $CVSROOT. If it matches, # then the remainder of the line is a filter program that should contain # one occurrence of %s for the user to notify, and information on its # standard input. # # "ALL" or "DEFAULT" can be used in place of the regular expression. # # format strings are replaceed as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %s = user to notify # # For example: #ALL (echo Committed to %r/%p; cat) |mail %s -s "CVS notification" cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/modules0000444000175000017500000000207112621360115020757 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#posttag0000664000175000017500000000363212621360115021121 0ustar esresr# The "posttag" file is called after the "tag" command finishes # processing a directory. # # If any format strings are present in the filter, they will be replaced # as follows: # %b = branch mode = "?" (delete ops - unknown) | "T" (branch) # | "N" (not branch) # %o = operation = "add" | "mov" | "del" # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %t = tagname # %{sVv} = attribute list = file name, old version tag will be deleted # from, new version tag will be added to (or deleted from, but # this feature is deprecated. When either old or new revision is # unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sV} is a legal format string, but will only be replaced with file # name and old revision. it also generates multiple arguments for each file # being operated upon. i.e. if two files, file1 & file2, are having a tag # moved from version 1.1 to version 1.1.2.9, %{sVv} will generate the # following six arguments in this order: # file1, 1.1, 1.1.2.9, file2, 1.1, 1.1.2.9. # # The first entry on a line is a regular expression which is tested # against the directory that the change is being committed to, relative # to the $CVSROOT. For the first match that is found, then the remainder # of the line is the name of the filter to run. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name "ALL" appears as a regular expression it is always used # in addition to the first matching regex or "DEFAULT". cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#modules0000664000175000017500000000207112621360115021104 0ustar esresr# Three different line formats are valid: # key -a aliases... # key [options] directory # key [options] directory files... # # Where "options" are composed of: # -o prog Run "prog" on "cvs checkout" of module. # -e prog Run "prog" on "cvs export" of module. # -s status Assign a status to the module. # -t prog Run "prog" on "cvs rtag" of module. # -d dir Place module in directory "dir" instead of module name. # -l Top-level directory only -- do not recurse. # # NOTE: If you change any of the "Run" options above, you'll have to # release and re-checkout any working directories of these modules. # # And "directory" is a path to a directory relative to $CVSROOT. # # The "-a" option specifies an alias. An alias is interpreted as if # everything on the right of the "-a" had been typed on the command line. # # You can encode a module within a module by using the special '&' # character to interpose another module into the current module. This # can be useful for creating a module that consists of many directories # spread out over the entire source repository. cvs-fast-export-1.35/tests/tagbug.repo/CVSROOT/.#loginfo0000664000175000017500000000360112621360115021071 0ustar esresr# The "loginfo" file controls where "cvs commit" log information is # sent. The first entry on a line is a regular expression which must # match the directory that the change is being made to, relative to the # $CVSROOT. If a match is found, then the remainder of the line is a # filter program that should expect log information on its standard input. # # If the repository name does not match any of the regular expressions in this # file, the "DEFAULT" line is used, if it is specified. # # If the name ALL appears as a regular expression it is always used # in addition to the first matching regex or DEFAULT. # # If any format strings are present in the filter, they will be replaced # as follows: # %c = canonical name of the command being executed # %I = unique (randomly generated) commit ID # %R = the name of the referrer, if any, otherwise the value NONE # %p = path relative to repository # %r = repository (path portion of $CVSROOT) # %{sVv} = attribute list = file name, old version number (pre-checkin), # new version number (post-checkin). When either old or new revision # is unknown, doesn't exist, or isn't applicable, the string "NONE" # will be placed on the command line instead. # # Note that %{sVv} is a list operator and not all elements are necessary. # Thus %{sv} is a legal format string, but will only be replaced with # file name and new revision. # It also generates multiple arguments for each file being operated upon. # That is, if two files, file1 & file2, are being committed from 1.1 to # version 1.1.2.1 and from 1.1.2.2 to 1.1.2.3, respectively, %{sVv} will # generate the following six arguments in this order: # file1, 1.1, 1.1.2.1, file2, 1.1.2.2, 1.1.2.3. # # For example: #DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog cvs-fast-export-1.35/tests/exec.tst0000664000175000017500000000120412446577716015517 0ustar esresr#!/usr/bin/env python ## Test handling of executable bit import sys, testlifter testlifter.verbose += sys.argv[1:].count("-v") repo = testlifter.CVSRepository("exec.repo") repo.init() repo.module("module") co = repo.checkout("module", "exec.checkout") # Should have M 100755 co.write("exec", "Now is the time for all good shellscripts to come to the iid of their systems.\n") co.add("exec") co.outdo("chmod a+x exec") co.commit("Committing executable file") # Should have M 100644 co.write("nonexec", "The quick brown fox jumped over the lazy dog.\n") co.add("nonexec") co.commit("Committing nonexecutable file.") repo.cleanup()