From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20074 invoked by alias); 21 May 2004 03:51:03 -0000 Mailing-List: contact overseers-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: , Sender: overseers-owner@sources.redhat.com Received: (qmail 19839 invoked from network); 21 May 2004 03:50:58 -0000 Received: from unknown (209.128.65.135) by sourceware.org with QMTP; 21 May 2004 03:50:58 -0000 Received: (qmail 28289 invoked by uid 10); 21 May 2004 03:50:57 -0000 Received: (qmail 21781 invoked by uid 500); 21 May 2004 03:50:46 -0000 Mail-Followup-To: overseers@sources.redhat.com, fche@redhat.com To: "Frank Ch. Eigler" Cc: overseers@sources.redhat.com Subject: Re: cvs, ecn References: <20040520211435.GG25826@redhat.com> <20040521032903.GF18046@redhat.com> From: Ian Lance Taylor Date: Fri, 21 May 2004 04:14:00 -0000 In-Reply-To: <20040521032903.GF18046@redhat.com> Message-ID: User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-SW-Source: 2004-q2/txt/msg00331.txt.bz2 "Frank Ch. Eigler" writes: > > [...] > > Also, rather than try to integrate the patch, it's usually easier to > > just import a new version. Our changes are not all that extensive. > > [...] > > This sounds good to me. Is your set of fileattr changes available > someplace as a plain diff? Sure, here is the result of cvs diff -p -u -r cvs-1_11_1p1-ian-fileattr-mods-branchpoint -r cvs-1_11_1p1-ian-fileattr-mods-branch on the coolo-cvs repository. Ian Index: src/ChangeLog =================================================================== RCS file: /cvs/sourceware/coolo-cvs/src/ChangeLog,v retrieving revision 1.1.1.6 retrieving revision 1.1.1.6.2.1 diff -p -u -r1.1.1.6 -r1.1.1.6.2.1 --- src/ChangeLog 1 Apr 2002 09:18:32 -0000 1.1.1.6 +++ src/ChangeLog 7 Apr 2002 00:40:25 -0000 1.1.1.6.2.1 @@ -1,3 +1,111 @@ +2002-04-02 Jason Molenda (jason-cl@molenda.com) + + * commit.c (checkaddfile): Set the _expand attribute if someone is + re-adding a file and the attributes have changed. Fixes sanity.sh + tests binfiles3-9 and beyond. + + (checkaddfile): Set the _attic attribute if we're adding + on a branch, not just with a tag. Fixes sanity.sh failures + in rmadd-* series of tests. + + * rcs.c (RCS_isdead): Don't parse the RCS file if we're looking + at the head - the fileattr cache has enough information to know + if the head is dead. Jed. + + * sanity.sh (version-2r): Fix version string for remote testing. + (rcslib-symlink-10): Comment out this test. Check discussion above. + (devcom2-20): Update expected attributes. + +2002-04-06 Chris Faylor (cgf@redhat.com) + + * admin.c, checkin.c, commit.c, fileattr.c, fileattr.h, import,c + main.c, mkmodules.c, rcs.c, rcs.h, recurse.c, sanity.sh: Adapt + Ian's changes for cvs-1.11.1p1. + +Sat Feb 21 21:28:03 1998 Ian Lance Taylor + + * admin.c (admin_fileproc): Adjust the branch file attribute if we + change the default branch. + +Tue Feb 10 13:54:51 1998 Ian Lance Taylor + +* admin.c (admin_fileproc): Write an empty string if changing the + substitution mode to the default of -kkv. + +Sat Feb 7 16:54:23 1998 Ian Lance Taylor + + * fileattr.h: Document the _expand attribute. + * rcs.c (RCS_parse_with_attrs): Only use the cache if the _expand + attribute is set. When caching attributes, cache expand. + (RCS_reparsercsfile): Double check the expand attribute. + * import.c (add_rcs_file): Set the _expand attribute. + * admin.c (admin_fileproc): Set the _expand attribute if we change + the expansion mode. + * sanity.sh (devcom2, devcom3): Update for _expand attribute. + + * fileattr.c (fileattr_newfile): Don't do anything if the file + already had attributes. + * commit.c (checkaddfile): Only call fileattr_newfile before + adding a brand new RCS file. + +Mon Dec 15 00:00:09 1997 Ian Lance Taylor + + * admin.c: Include "fileattr.h". + (admin_fileproc): Set the _head fileattr after deleting a + revision. + * commit.c (remove_file): Don't increment the head version number + before storing it; it's now updated by RCS_checkin. + * rcs.c (RCS_reparsercsfile): Don't crash if the head has no + value. + * root.c (parse_cvsroot): Change error messages to match + testsuite. + * sanity.sh (crerepos): Change testsuite to match error messages. + +Sat Oct 11 18:30:41 1997 Ian Lance Taylor + + * sanity.sh (devcom2): Add _head attributes where appropriate. + +Fri Jul 4 17:18:55 1997 Ian Lance Taylor + + * mkmodules.c (init): Call fileattr_startdir. + * sanity.sh (devcom3): Add _head attributes where appropriate. + +Sat Jun 29 20:04:51 1996 Ian Lance Taylor + + * commit.c (commit_filesdoneproc): Call fileattr_write before + calling Update_Logfile. + +Thu Jun 20 11:22:45 1996 Ian Lance Taylor + + * rcs.c (RCS_reparsercsfile): Fix double check of branch + attribute. + +Mon Jun 17 15:11:09 1996 Ian Lance Taylor + + * fileattr.h: Document new attributes. + * rcs.c: Include fileattr.h. + (RCS_parse_with_attrs): New function. + (RCS_reparsercsfile): Double check head and branch fields. + * rcs.h (RCS_parse_with_attrs): Declare. + * recurse.c (do_file_proc): Call RCS_parse_with_attrs rather than + RCS_parse. + * import.c: Inclue fileattr.h. + (import_descend): Call fileattr_startdir, fileattr_write, and + fileattr_free. + (update_rcs_file): Set _head attribute. + (add_rcs_file): Set _head and _branch attributes. + * commit.c (remove_file): Clear _branch attribute if resetting + to default branch. Set _head and _attic attributes if head is + removed. + (fixbranch): Set _branch attribute. + (checkaddfile): Clear _attic attribute if file is moved out of + attic. Set _attic attribute if new file is created in attic. + (lock_RCS): Clear _branch attribute if resetting to default + branch. + * checkin.c (Checkin): Set _head attribute with new value. + * sanity.sh (devcom): Comment out devcom-b2 test, since attributes + now always exist. + 2001-04-27 Larry Jones * main.c (lookup_command_attribute): Lookup specified command, not Index: src/admin.c =================================================================== RCS file: /cvs/sourceware/coolo-cvs/src/admin.c,v retrieving revision 1.1.1.6 retrieving revision 1.1.1.6.2.1 diff -p -u -r1.1.1.6 -r1.1.1.6.2.1 --- src/admin.c 1 Apr 2002 09:18:32 -0000 1.1.1.6 +++ src/admin.c 2 Apr 2002 08:16:22 -0000 1.1.1.6.2.1 @@ -10,6 +10,7 @@ */ #include "cvs.h" +#include "fileattr.h" #ifdef CVS_ADMIN_GROUP #include #endif @@ -585,7 +586,11 @@ admin_fileproc (callerdat, finfo) } } if (status == 0) + { RCS_setbranch (rcs, branch); + fileattr_set (finfo->file, "_branch", + branch != NULL && *branch != '\0' ? branch : NULL); + } if (branch != NULL && branch != &admin_data->branch[2]) free (branch); } @@ -663,6 +668,7 @@ admin_fileproc (callerdat, finfo) free (rev1); if (rev2) free (rev2); + fileattr_set (finfo->file, "_head", rcs->head); } } if (admin_data->desc != NULL) @@ -675,7 +681,11 @@ admin_fileproc (callerdat, finfo) char *kflag = admin_data->kflag + 2; char *oldexpand = RCS_getexpand (rcs); if (oldexpand == NULL || strcmp (oldexpand, kflag) != 0) + { RCS_setexpand (rcs, kflag); + fileattr_set (finfo->file, "_expand", + strcmp (kflag, "kv") == 0 ? "" : kflag); + } } /* Handle miscellaneous options. TODO: decide whether any or all Index: src/checkin.c =================================================================== RCS file: /cvs/sourceware/coolo-cvs/src/checkin.c,v retrieving revision 1.1.1.3 retrieving revision 1.1.1.3.4.1 diff -p -u -r1.1.1.3 -r1.1.1.3.4.1 --- src/checkin.c 1 Apr 2002 08:52:26 -0000 1.1.1.3 +++ src/checkin.c 2 Apr 2002 08:16:22 -0000 1.1.1.3.4.1 @@ -118,6 +118,7 @@ Checkin (type, finfo, rcs, rev, tag, opt vers->options, vers->tag, vers->date, (char *) 0); history_write (type, NULL, vers->vn_rcs, finfo->file, finfo->repository); + fileattr_set (finfo->file, "_head", vers->srcfile->head); if (tocvsPath) if (unlink_file_dir (tocvsPath) < 0) Index: src/commit.c =================================================================== RCS file: /cvs/sourceware/coolo-cvs/src/commit.c,v retrieving revision 1.1.1.6 retrieving revision 1.1.1.6.2.2 diff -p -u -r1.1.1.6 -r1.1.1.6.2.2 --- src/commit.c 1 Apr 2002 09:18:33 -0000 1.1.1.6 +++ src/commit.c 2 Apr 2002 08:55:11 -0000 1.1.1.6.2.2 @@ -1281,6 +1281,7 @@ commit_fileproc (callerdat, finfo) { unlockrcs (finfo->rcs); fixbranch (finfo->rcs, sbranch); + fileattr_set (finfo->file, "_branch", sbranch); } (void) time (&last_register_time); @@ -1330,6 +1331,7 @@ commit_fileproc (callerdat, finfo) { unlockrcs (finfo->rcs); fixbranch (finfo->rcs, sbranch); + fileattr_set (finfo->file, "_branch", sbranch); } } else if (ci->status == T_REMOVED) @@ -1419,6 +1421,9 @@ commit_filesdoneproc (callerdat, err, re got_message = 0; + /* Update any new _head attributes, in case loginfo wants to run + CVS itself. */ + fileattr_write (); Update_Logfile (repository, saved_message, (FILE *) 0, ulist); @@ -1706,6 +1711,7 @@ remove_file (finfo, tag, message) return (1); } RCS_rewrite (finfo->rcs, NULL, NULL); + fileattr_set (finfo->file, "_branch", NULL); } /* check something out. Generally this is the head. If we have a @@ -1749,7 +1755,11 @@ remove_file (finfo, tag, message) old_path = xstrdup (finfo->rcs->path); if (!branch) + { RCS_setattic (finfo->rcs, 1); + fileattr_set (finfo->file, "_head", finfo->rcs->head); + fileattr_set (finfo->file, "_attic", ""); + } /* Print message that file was removed. */ cvs_output (old_path, 0); @@ -1938,6 +1948,7 @@ checkaddfile (file, repository, tag, opt used to. */ error (0, 0, "changing keyword expansion mode to %s", options); RCS_setexpand (rcsfile, options + 2); + fileattr_set (file, "_expand", options + 2); } if (!adding_on_branch) @@ -1962,6 +1973,7 @@ checkaddfile (file, repository, tag, opt retval = 1; goto out; } + fileattr_set (file, "_attic", NULL); } rev = RCS_getversion (rcsfile, tag, NULL, 1, (int *) NULL); @@ -1989,6 +2001,8 @@ checkaddfile (file, repository, tag, opt char *opt; + fileattr_newfile (file); + desc = NULL; descalloc = 0; desclen = 0; @@ -2084,6 +2098,9 @@ checkaddfile (file, repository, tag, opt goto out; } + /* We don't need to set any file attributes here, because we + will wind up calling Checkin, which will handle them. */ + /* put the new file back where it was */ rename_file (fname, file); free (fname); @@ -2169,7 +2186,8 @@ checkaddfile (file, repository, tag, opt } } - fileattr_newfile (file); + if (adding_on_branch && newfile) + fileattr_set (file, "_attic", ""); /* At this point, we used to set the file mode of the RCS file based on the mode of the file in the working directory. If we @@ -2236,6 +2254,8 @@ lock_RCS (user, rcs, rev, repository) free (branch); return (1); } + + fileattr_set (user, "_branch", NULL); } err = RCS_lock(rcs, NULL, 1); } @@ -2273,7 +2293,10 @@ lock_RCS (user, rcs, rev, repository) /* try to restore the branch if we can on error */ if (branch != NULL) + { fixbranch (rcs, branch); + fileattr_set (user, "_branch", branch); + } if (branch) free (branch); Index: src/fileattr.c =================================================================== RCS file: /cvs/sourceware/coolo-cvs/src/fileattr.c,v retrieving revision 1.1.1.4 retrieving revision 1.1.1.4.2.1 diff -p -u -r1.1.1.4 -r1.1.1.4.2.1 --- src/fileattr.c 1 Apr 2002 09:14:24 -0000 1.1.1.4 +++ src/fileattr.c 2 Apr 2002 08:16:22 -0000 1.1.1.4.2.1 @@ -483,6 +483,15 @@ fileattr_newfile (filename) /* No attributes existed previously. */ attrlist = getlist (); } + else + { + node = findnode (attrlist, filename); + if (node != NULL) + { + /* The file already had attributes. Don't change them. */ + return; + } + } node = getnode (); node->type = FILEATTR; Index: src/fileattr.h =================================================================== RCS file: /cvs/sourceware/coolo-cvs/src/fileattr.h,v retrieving revision 1.1.1.4 retrieving revision 1.1.1.4.2.1 diff -p -u -r1.1.1.4 -r1.1.1.4.2.1 --- src/fileattr.h 1 Apr 2002 09:03:06 -0000 1.1.1.4 +++ src/fileattr.h 2 Apr 2002 08:16:22 -0000 1.1.1.4.2.1 @@ -49,7 +49,20 @@ EDITOR > VAL { , EDITOR > VAL } where EDITOR is a username, and VAL is TIME+HOSTNAME+PATHNAME, where TIME is when the "cvs edit" command happened, - and HOSTNAME and PATHNAME are for the working directory. */ + and HOSTNAME and PATHNAME are for the working directory. + + _head: Head revision of file. This is a copy of the value of the head + keyword in the RCS file. + + _branch: Default branch of file. This is a copy of the value of the + branch keyword in the RCS file. + + _expand: RCS substition options for file. This is a copy of the + value of the expand keyword in the RCS file. If there is no expand + keyword, then this attribute is still present, with an empty value. + + _attic: If the attribute is present, the RCS file is in the Attic. + The value is unimportant. */ #define CVSREP_FILEATTR "CVS/fileattr" Index: src/import.c =================================================================== RCS file: /cvs/sourceware/coolo-cvs/src/import.c,v retrieving revision 1.1.1.6 retrieving revision 1.1.1.6.2.1 diff -p -u -r1.1.1.6 -r1.1.1.6.2.1 --- src/import.c 1 Apr 2002 09:18:34 -0000 1.1.1.6 +++ src/import.c 2 Apr 2002 08:16:22 -0000 1.1.1.6.2.1 @@ -17,6 +17,7 @@ */ #include "cvs.h" +#include "fileattr.h" #include "savecwd.h" #include @@ -413,6 +414,8 @@ import_descend (message, vtag, targc, ta int err = 0; List *dirlist = NULL; + fileattr_startdir (repository); + /* first, load up any per-directory ignore lists */ ign_add_file (CVSDOTIGNORE, 1); wrap_add_file (CVSDOTWRAPPER, 1); @@ -499,6 +502,9 @@ import_descend (message, vtag, targc, ta (void) CVS_CLOSEDIR (dirp); } + fileattr_write (); + fileattr_free (); + if (dirlist != NULL) { Node *head, *p; @@ -688,6 +694,8 @@ update_rcs_file (message, vfile, vtag, t letter = 'U'; add_log (letter, vfile); + fileattr_set (vfile, "_head", vers->srcfile->head); + freevers_ts (&vers); return (0); } @@ -1417,6 +1425,11 @@ userfile); if (tocvsPath) if (unlink_file_dir (tocvsPath) < 0) error (0, errno, "cannot remove %s", tocvsPath); + + fileattr_set (user, "_head", vhead); + fileattr_set (user, "_branch", vbranch); + fileattr_set (user, "_expand", local_opt == NULL ? "" : local_opt); + if (free_opt != NULL) free (free_opt); return (err); Index: src/main.c =================================================================== RCS file: /cvs/sourceware/coolo-cvs/src/main.c,v retrieving revision 1.1.1.6 retrieving revision 1.1.1.6.2.1 diff -p -u -r1.1.1.6 -r1.1.1.6.2.1 --- src/main.c 1 Apr 2002 09:18:35 -0000 1.1.1.6 +++ src/main.c 2 Apr 2002 08:16:22 -0000 1.1.1.6.2.1 @@ -541,6 +541,7 @@ main (argc, argv) case 'v': (void) fputs ("\n", stdout); version (0, (char **) NULL); + (void) fputs ("(with local hacks)", stdout); (void) fputs ("\n", stdout); (void) fputs ("\ Copyright (c) 1989-2001 Brian Berliner, david d `zoo' zuhn, \n\ Index: src/mkmodules.c =================================================================== RCS file: /cvs/sourceware/coolo-cvs/src/mkmodules.c,v retrieving revision 1.1.1.6 retrieving revision 1.1.1.6.2.1 diff -p -u -r1.1.1.6 -r1.1.1.6.2.1 --- src/mkmodules.c 1 Apr 2002 09:18:35 -0000 1.1.1.6 +++ src/mkmodules.c 2 Apr 2002 08:16:22 -0000 1.1.1.6.2.1 @@ -878,6 +878,8 @@ init (argc, argv) /* Make Emptydir so it's there if we need it */ mkdir_if_needed (CVSNULLREPOS); + fileattr_startdir ("."); + /* 80 is long enough for all the administrative file names, plus "/" and so on. */ info = xmalloc (strlen (adm) + 80); Index: src/rcs.c =================================================================== RCS file: /cvs/sourceware/coolo-cvs/src/rcs.c,v retrieving revision 1.1.1.6 retrieving revision 1.1.1.6.2.2 diff -p -u -r1.1.1.6 -r1.1.1.6.2.2 --- src/rcs.c 1 Apr 2002 09:18:35 -0000 1.1.1.6 +++ src/rcs.c 2 Apr 2002 08:55:12 -0000 1.1.1.6.2.2 @@ -11,6 +11,7 @@ #include #include "cvs.h" #include "edit.h" +#include "fileattr.h" #include "hardlink.h" int preserve_perms = 0; @@ -291,6 +292,73 @@ RCS_parse (file, repos) } /* + * Parse an RCS file if we know that we can fetch file attributes. This + * skips reading the file if the attributes are available. + */ + +RCSNode * +RCS_parse_with_attrs (file, repos) + const char *file; + const char *repos; +{ + char *expand; + RCSNode *rcs; + + expand = fileattr_get0 (file, "_expand"); + if (expand != NULL) + { + char *rcsfile; + + /* We have head and branch attributes for this file, so we + don't need to actually open it. */ + rcs = (RCSNode *) xmalloc (sizeof (RCSNode)); + memset ((char *) rcs, 0, sizeof (RCSNode)); + rcs->refcount = 1; + + rcsfile = xmalloc (strlen (repos) + strlen (file) + + sizeof (RCSEXT) + sizeof (CVSATTIC) + 10); + if (fileattr_get (file, "_attic") == NULL) + (void) sprintf (rcsfile, "%s/%s%s", repos, file, RCSEXT); + else + { + (void) sprintf (rcsfile, "%s/%s/%s%s", repos, CVSATTIC, file, + RCSEXT); + rcs->flags |= INATTIC; + } + rcs->path = rcsfile; + + rcs->head = fileattr_get0 (file, "_head"); + rcs->branch = fileattr_get0 (file, "_branch"); + if (*expand != '\0') + rcs->expand = expand; + else + free (expand); + + rcs->flags |= PARTIAL | VALID; + + return rcs; + } + + /* For backward compatibility for repositories which don't have + head and branch attributes stored yet, just call RCS_parse, and + then store the attributes. */ + rcs = RCS_parse (file, repos); + + if (rcs != NULL) + { + fileattr_set (file, "_head", rcs->head); + if (rcs->branch != NULL) + fileattr_set (file, "_branch", rcs->branch); + if (rcs->flags & INATTIC) + fileattr_set (file, "_attic", ""); + fileattr_set (file, "_expand", + rcs->expand != NULL ? rcs->expand : ""); + } + + return rcs; +} + +/* * Parse a specific rcsfile. */ RCSNode * @@ -462,6 +530,37 @@ RCS_reparsercsfile (rdata, pfp, rcsbufp) gotkey = 0; + if (STREQ (RCSHEAD, key) + && (value == NULL + ? rdata->head != NULL + : (rdata->head == NULL + || ! STREQ (value, rdata->head)))) + { + error (1, 0, "head attribute does not match file for `%s'", + rcsfile); + } + + if (STREQ (RCSBRANCH, key) + && (value == NULL + ? rdata->branch != NULL + : (rdata->branch == NULL + || strncmp (value, rdata->branch, + strlen (rdata->branch)) != 0))) + { + error (1, 0, "branch attribute does not match file for `%s'", + rcsfile); + } + + if (STREQ (RCSEXPAND, key) + && (value == NULL + ? rdata->expand != NULL + : (rdata->expand == NULL + || ! STREQ (value, rdata->expand)))) + { + error (1, 0, "expand attribute does not match file for `%s'", + rcsfile); + } + /* Skip head, branch and expand tags; we already have them. */ if (STREQ (key, RCSHEAD) || STREQ (key, RCSBRANCH) @@ -3295,6 +3394,9 @@ RCS_isdead (rcs, tag) Node *p; RCSVers *version; + if (STREQ (tag, rcs->head)) + return (rcs->flags & INATTIC); + if (rcs->flags & PARTIAL) RCS_reparsercsfile (rcs, (FILE **) NULL, (struct rcsbuffer *) NULL); Index: src/rcs.h =================================================================== RCS file: /cvs/sourceware/coolo-cvs/src/rcs.h,v retrieving revision 1.1.1.6 retrieving revision 1.1.1.6.2.1 diff -p -u -r1.1.1.6 -r1.1.1.6.2.1 --- src/rcs.h 1 Apr 2002 09:18:38 -0000 1.1.1.6 +++ src/rcs.h 2 Apr 2002 08:16:25 -0000 1.1.1.6.2.1 @@ -186,6 +186,7 @@ enum rcs_delta_op {RCS_ANNOTATE, RCS_FET * exported interfaces */ RCSNode *RCS_parse PROTO((const char *file, const char *repos)); +RCSNode *RCS_parse_with_attrs PROTO((const char *file, const char *repos)); RCSNode *RCS_parsercsfile PROTO((char *rcsfile)); void RCS_fully_parse PROTO((RCSNode *)); void RCS_reparsercsfile PROTO((RCSNode *, FILE **, struct rcsbuffer *)); Index: src/recurse.c =================================================================== RCS file: /cvs/sourceware/coolo-cvs/src/recurse.c,v retrieving revision 1.1.1.6 retrieving revision 1.1.1.6.2.1 diff -p -u -r1.1.1.6 -r1.1.1.6.2.1 --- src/recurse.c 1 Apr 2002 09:18:36 -0000 1.1.1.6 +++ src/recurse.c 2 Apr 2002 08:16:25 -0000 1.1.1.6.2.1 @@ -801,7 +801,7 @@ do_file_proc (p, closure) if (frfile->frame->dosrcs && repository) { - finfo->rcs = RCS_parse (finfo->file, repository); + finfo->rcs = RCS_parse_with_attrs (finfo->file, repository); /* OK, without W_LOCAL the error handling becomes relatively simple. The file names came from readdir() on the Index: src/sanity.sh =================================================================== RCS file: /cvs/sourceware/coolo-cvs/src/sanity.sh,v retrieving revision 1.1.1.6 retrieving revision 1.1.1.6.2.2 diff -p -u -r1.1.1.6 -r1.1.1.6.2.2 --- src/sanity.sh 1 Apr 2002 09:18:42 -0000 1.1.1.6 +++ src/sanity.sh 2 Apr 2002 08:55:15 -0000 1.1.1.6.2.2 @@ -1588,7 +1588,7 @@ for what in $tests; do dotest version-1 "${testcvs} --version" \ ' Concurrent Versions System (CVS) [0-9.]*.* - +(with local hacks) Copyright (c) [-0-9]* Brian Berliner, david d .zoo. zuhn, Jeff Polk, and other authors @@ -1599,8 +1599,8 @@ Specify the --help option for further in if $remote; then dotest version-2r "${testcvs} version" \ -'Client: Concurrent Versions System (CVS) [0-9.]* (client/server) -Server: Concurrent Versions System (CVS) [0-9.]* (client/server)' +'Client: Concurrent Versions System (CVS) [0-9.]*.* (client/server) +Server: Concurrent Versions System (CVS) [0-9.]*.* (client/server)' else dotest version-2 "${testcvs} version" \ 'Concurrent Versions System (CVS) [0-9.]*.*' @@ -6046,11 +6046,12 @@ done" # OK, why this message happens twice is relatively clear # (the check_* and rtag_* calls to start_recursion). # Why it happens a third time I didn't try to find out. - dotest rcslib-symlink-10 \ -"${testcvs} -q rtag -b -r the_tag brtag first-dir" \ -"${PROG} [a-z]*: could not read RCS file for file2 -${PROG} [a-z]*: could not read RCS file for first-dir/file2 -${PROG} [a-z]*: could not read RCS file for first-dir/file2" +### FIXME Jason Molenda +# dotest rcslib-symlink-10 \ +#"${testcvs} -q rtag -b -r the_tag brtag first-dir" \ +#"${PROG} [a-z]*: could not read RCS file for file2 +#${PROG} [a-z]*: could not read RCS file for first-dir/file2 +#${PROG} [a-z]*: could not read RCS file for first-dir/file2" cd .. cd .. @@ -12325,7 +12326,9 @@ U first-dir/abc' dotest devcom-b0 "${testcvs} watch off" '' dotest devcom-b1 "${testcvs} watch remove" '' # Test that CVS 1.6 and earlier can handle the repository. - dotest_fail devcom-b2 "test -d ${CVSROOT_DIRNAME}/first-dir/CVS" + # This test no longer works, because of the new _head, .etc, + # attributes. + # dotest_fail devcom-b2 "test -d ${CVSROOT_DIRNAME}/first-dir/CVS" # Now test watching just some, not all, files. dotest devcom-some0 "${testcvs} watch on abc" '' @@ -12407,10 +12410,10 @@ U first-dir/w3' dotest devcom2-16 "${testcvs} editors w4" '' # Make sure there are no droppings lying around dotest devcom2-17 "cat ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr" \ -"Fw1 _watched= -Fw2 _watched= -Fw3 _watched= -Fnw1 _watched= +"Fw1 _watched=;_expand=;_head=1.1 +Fw2 _watched=;_expand=;_head=1.1 +Fnw1 _expand=;_head=1.1;_watched= +Fw3 _expand=;_head=1.1;_watched= D _watched=" cd .. @@ -12426,10 +12429,10 @@ U first${PLUS}dir/w3" # Make sure there are no droppings lying around dotest devcom2-20 "cat ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr" \ -"Fw1 _watched= -Fw2 _watched= -Fw3 _watched= -Fnw1 _watched= +"Fw1 _watched=;_expand=;_head=1.1 +Fw2 _watched=;_expand=;_head=1.1 +Fnw1 _expand=;_head=1.1;_watched= +Fw3 _expand=;_head=1.1;_watched= D _watched=" cd ../.. @@ -12456,8 +12459,8 @@ D _watched=" # OK, since we are about to delve into CVS's internals, make # sure that we seem to be correct about how they work. dotest devcom3-5 "cat ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr" \ -"Fw1 _watched= -Fw2 _watched=" +"Fw1 _watched=;_expand=;_head=1.1 +Fw2 _watched=;_expand=;_head=1.1" # Now write a few more lines, just as if we were a newer version # of CVS implementing some new feature. cat <<'EOF' >>${CVSROOT_DIRNAME}/first-dir/CVS/fileattr @@ -12470,7 +12473,8 @@ EOF # Note that writing these lines in another order would be OK # too. dotest devcom3-7 "cat ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr" \ -"Fw2 _watched= +"Fw1 _expand=;_head=1.1 +Fw2 _watched=;_expand=;_head=1.1 G@#..!@#=& Enew line here" @@ -12484,8 +12488,8 @@ Enew line here" echo 'Fw2 duplicate=' >>${CVSROOT_DIRNAME}/first-dir/CVS/fileattr dotest devcom3-8 "${testcvs} watch on w1" '' dotest devcom3-9 "cat ${CVSROOT_DIRNAME}/first-dir/CVS/fileattr" \ -"Fw2 _watched= -Fw1 _watched= +"Fw1 _expand=;_head=1.1;_watched= +Fw2 _watched=;_expand=;_head=1.1 Enew line here G@#..!@#=&"