cvs-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Cvs-cvs] ccvs/src ChangeLog classify.c sanity.sh [cvs1-11-x-branch]


From: Derek Robert Price
Subject: [Cvs-cvs] ccvs/src ChangeLog classify.c sanity.sh [cvs1-11-x-branch]
Date: Fri, 25 Aug 2006 20:27:05 +0000

CVSROOT:        /cvsroot/cvs
Module name:    ccvs
Branch:         cvs1-11-x-branch
Changes by:     Derek Robert Price <dprice>     06/08/25 20:27:03

Modified files:
        src            : ChangeLog classify.c sanity.sh 

Log message:
        [bug #17168]
        * classify.c (Classify_file): Mark files with potential keyword
        substitution changes as needing update.
        * sanity.sh: Update to compensate.
        (keyword, keywordname, serverpatch): Update to compensate, removing
        the last few "checksum failed" tests.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/ChangeLog?cvsroot=cvs&only_with_tag=cvs1-11-x-branch&r1=1.2336.2.468&r2=1.2336.2.469
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/classify.c?cvsroot=cvs&only_with_tag=cvs1-11-x-branch&r1=1.25.4.4&r2=1.25.4.5
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/sanity.sh?cvsroot=cvs&only_with_tag=cvs1-11-x-branch&r1=1.752.2.203&r2=1.752.2.204

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/ChangeLog,v
retrieving revision 1.2336.2.468
retrieving revision 1.2336.2.469
diff -u -b -r1.2336.2.468 -r1.2336.2.469
--- ChangeLog   25 Aug 2006 17:16:38 -0000      1.2336.2.468
+++ ChangeLog   25 Aug 2006 20:27:01 -0000      1.2336.2.469
@@ -1,5 +1,12 @@
 2006-08-25  Derek Price  <address@hidden>
 
+       [bug #17168]
+       * classify.c (Classify_file): Mark files with potential keyword
+       substitution changes as needing update.
+       * sanity.sh: Update to compensate.
+       (keyword, keywordname, serverpatch): Update to compensate, removing
+       the last few "checksum failed" tests.
+
        * classify.c (Classify_File): Remove hacks which worked around checksum
        failures from bug #17032.
 

Index: classify.c
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/classify.c,v
retrieving revision 1.25.4.4
retrieving revision 1.25.4.5
diff -u -b -r1.25.4.4 -r1.25.4.5
--- classify.c  25 Aug 2006 17:16:39 -0000      1.25.4.4
+++ classify.c  25 Aug 2006 20:27:02 -0000      1.25.4.5
@@ -17,6 +17,50 @@
 static void sticky_ck PROTO ((struct file_info *finfo, int aflag,
                              Vers_TS * vers));
 
+
+
+static inline int keywords_may_change PROTO ((int aflag, Vers_TS * vers));
+static inline int
+keywords_may_change (aflag, vers)
+    int aflag;
+    Vers_TS * vers;
+{
+    int retval;
+
+    if (/* Options are different...  */
+       strcmp (vers->entdata->options, vers->options)
+       /* ...or...  */
+       || (/* ...clearing stickies...  */
+           aflag
+           /* ...and...  */
+           && (/* ...there used to be a tag which subs in Name keys...  */
+               (vers->entdata->tag && !isdigit (vers->entdata->tag[0]))
+               /* ...or there used to be a keyword mode which may be
+                * changed by -A...
+                */
+               || (strlen (vers->entdata->options)
+                   && strcmp (vers->entdata->options, "-kkv")
+                   && strcmp (vers->entdata->options, "-kb"))))
+       /* ...or...  */
+       || (/* ...this is not commit...  */
+           strcmp (cvs_cmd_name, "commit")
+           /* ...and...  */
+           && (/* ...the tag is changing in a way that affects Name keys...  */
+               (vers->entdata->tag && vers->tag
+                && strcmp (vers->entdata->tag, vers->tag)
+                && !(isdigit (vers->entdata->tag[0])
+                     && isdigit (vers->entdata->tag[0])))
+               || (!vers->entdata->tag && vers->tag
+                   && !isdigit (vers->tag[0])))))
+       retval = 1;
+    else
+       retval = 0;
+
+    return retval;
+}
+
+
+
 /*
  * Classify the state of a file
  */
@@ -297,16 +341,13 @@
                 */
                /* TODO: decide whether we need to check file permissions
                   for a mismatch, and return T_CONFLICT if so. */
-               if (vers->entdata->options &&
-                   strcmp (vers->entdata->options, vers->options) != 0)
+               if (keywords_may_change (aflag, vers))
                    ret = T_CHECKOUT;
                else if (vers->ts_conflict)
                    ret = T_CONFLICT;
                else
-               {
-                   sticky_ck (finfo, aflag, vers);
                    ret = T_UPTODATE;
-               }
+               sticky_ck (finfo, aflag, vers);
            }
            else if (No_Difference (finfo, vers))
            {

Index: sanity.sh
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/sanity.sh,v
retrieving revision 1.752.2.203
retrieving revision 1.752.2.204
diff -u -b -r1.752.2.203 -r1.752.2.204
--- sanity.sh   24 Aug 2006 17:33:25 -0000      1.752.2.203
+++ sanity.sh   25 Aug 2006 20:27:02 -0000      1.752.2.204
@@ -2311,8 +2311,14 @@
 ${CVSROOT_DIRNAME}/first-dir/sdir/ssdir/ssfile,v  <--  ssfile
 new revision: 3\.1\.2\.1; previous revision: 3\.1
 done"
+
+         # Verify that this file remains unchanged since up -A should not
+         # change the contents here.
+         cp ssfile $TESTDIR/ssfile.sav
          # now get rid of the sticky tag and go back to the trunk
-         dotest basica-8a5 "${testcvs} -q up -A ./" "[UP] ssfile"
+         dotest basica-8a5 "$testcvs -q up -A ./" '[UP] ssfile'
+         dotest basica-8a6 "cmp ssfile $TESTDIR/ssfile.sav"
+         rm $TESTDIR/ssfile.sav
 
          cd ../..
          dotest basica-8b "${testcvs} -q diff -r1.2 -r1.3"
@@ -4149,7 +4155,7 @@
 initial revision: 1\.1
 done"
          dotest files-5 "${testcvs} -q tag -b C" "T tfile"
-         dotest files-6 "${testcvs} -q update -r C" ""
+         dotest files-6 "$testcvs -q update -r C" "U tfile"
          mkdir dir
          dotest files-7 "${testcvs} add dir" \
 "Directory ${CVSROOT_DIRNAME}/first-dir/dir added to the repository
@@ -5435,7 +5441,9 @@
 T file4'
 
          # Switch over to the branch.
-         dotest death2-6 "${testcvs} -q update -r branch" ''
+         dotest death2-6 "$testcvs -q update -r branch" \
+'U file1
+U file4'
 
          # Delete the file on the branch.
          rm file1
@@ -5735,9 +5743,10 @@
 ${PLUS} first revision"
 
          # now back to the trunk
-         dotest death2-21 "${testcvs} -q update -A" \
-"U file2
-[UP] file4"
+         dotest death2-21 "$testcvs -q update -A" \
+'U file1
+U file2
+[UP] file4'
 
          # test merging with a dead file
          dotest death2-22 "${testcvs} -q co first-dir" \
@@ -6000,7 +6009,7 @@
 "${testcvs} -q ci -r mynonbranch -m add file4" \
 "${PROG} \[commit aborted\]: no such tag mynonbranch"
          # Now make CVS write val-tags for real.
-         dotest rmadd-20 "${testcvs} -q update -r mynonbranch file1" ""
+         dotest rmadd-20 "$testcvs -q update -r mynonbranch file1" 'U file1'
          # Oops - CVS isn't distinguishing between a branch tag and
          # a non-branch tag.
          dotest rmadd-21 \
@@ -6084,9 +6093,10 @@
 done"
 
          # lose the branch
-         dotest rmadd-29 "${testcvs} -q up -A" \
-"${PROG} update: file3 is no longer in the repository
-${PROG} update: file4 is no longer in the repository"
+         dotest rmadd-29 "$testcvs -q up -A" \
+"U file1
+$PROG update: file3 is no longer in the repository
+$PROG update: file4 is no longer in the repository"
 
          # -f disables recursion
          dotest rmadd-30 "${testcvs} -q ci -f -r9 -m." \
@@ -6656,9 +6666,12 @@
 T file2
 T file3
 T file4'
-         dotest branches-5 "${testcvs} update -r br1" \
-"${PROG} update: Updating \.
-M file1"
+         dotest branches-5 "$testcvs update -r br1" \
+"$PROG update: Updating \.
+M file1
+U file2
+U file3
+U file4"
          echo 2:br1 >file2
          echo 4:br1 >file4
          dotest branches-6 "${testcvs} -q ci -m modify" \
@@ -6678,7 +6691,11 @@
 T file2
 T file3
 T file4'
-         dotest branches-8 "${testcvs} -q update -r brbr" ''
+         dotest branches-8 "$testcvs -q update -r brbr" \
+'U file1
+U file2
+U file3
+U file4'
          echo 1:brbr >file1
          echo 4:brbr >file4
          dotest branches-9 "${testcvs} -q ci -m modify" \
@@ -6694,9 +6711,11 @@
 2:br1
 3:ancest
 4:brbr'
-         dotest branches-11 "${testcvs} -q update -r br1" \
-'[UP] file1
-[UP] file4'
+         dotest branches-11 "$testcvs -q update -r br1" \
+'U file1
+U file2
+U file3
+U file4'
          dotest branches-12 "cat file1 file2 file3 file4" '1:br1
 2:br1
 3:ancest
@@ -6707,9 +6726,11 @@
 ${CVSROOT_DIRNAME}/first-dir/file4,v  <--  file4
 new revision: 1\.2\.2\.2; previous revision: 1\.2\.2\.1
 done"
-         dotest branches-13 "${testcvs} -q update -A" '[UP] file1
-[UP] file2
-[UP] file4'
+         dotest branches-13 "${testcvs} -q update -A" \
+'U file1
+U file2
+U file3
+U file4'
          dotest branches-14 "cat file1 file2 file3 file4" '1:ancest
 2:ancest
 3:ancest
@@ -7243,8 +7264,9 @@
          # to return to the state of being on the trunk with a $file
          # that we can then remove.
          dotest update-p-undead-0 "$testcvs update -A" \
-"${PROG} update: Updating \.
-${PROG} update: warning: new-born $file has disappeared"
+"$PROG update: Updating \.
+$PROG update: warning: new-born $file has disappeared
+U unused-file"
          dotest update-p-undead-1 "$testcvs update" \
 "${PROG} update: Updating \.
 U $file"
@@ -7303,7 +7325,9 @@
          # Now create a branch and commit a revision there.
          dotest tagf-5 "${testcvs} -q tag -b br" "T file1
 T file2"
-         dotest tagf-6 "${testcvs} -q update -r br" ""
+         dotest tagf-6 "$testcvs -q update -r br" \
+'U file1
+U file2'
          echo brmod >> file1
          echo brmod >> file2
          dotest tagf-7 "${testcvs} -q ci -m modify" \
@@ -8063,7 +8087,7 @@
          dotest multibranch-5 "${testcvs} tag -b br2" \
 "${PROG} tag: Tagging \.
 T file1"
-         dotest multibranch-6 "${testcvs} -q update -r br1" ''
+         dotest multibranch-6 "$testcvs -q update -r br1" 'U file1'
          echo on-br1 >file1
          dotest multibranch-7 "${testcvs} -q ci -m modify-on-br1" \
 "Checking in file1;
@@ -8235,10 +8259,12 @@
 ============================================================================="
 
                # update into the vendor branch.
-               dotest import-102 "${testcvs} update -rvendor-branch" \
-"${PROG} update: Updating .
-[UP] imported-f1
-[UP] imported-f2"
+               dotest import-102 "$testcvs update -rvendor-branch" \
+"$PROG update: Updating .
+U imported-f1
+[UP] imported-f2
+U imported-f3
+U imported-f4"
 
                # remove file4 on the vendor branch
                rm imported-f4
@@ -8255,9 +8281,10 @@
 done"
 
                # update to main line
-               dotest import-105 "${testcvs} -q update -A" \
-"${PROG} update: imported-f1 is no longer in the repository
-[UP] imported-f2"
+               dotest import-105 "$testcvs -q update -A" \
+"$PROG update: imported-f1 is no longer in the repository
+[UP] imported-f2
+U imported-f3"
 
                # second import - file4 deliberately unchanged
                cd ../import-dir
@@ -8302,16 +8329,20 @@
                done
 
                # check vendor branch for file4
-               dotest import-110 "${testcvs} -q update -rvendor-branch" \
-"[UP] imported-f1
-[UP] imported-f2"
+               dotest import-110 "$testcvs -q update -rvendor-branch" \
+'U imported-f1
+[UP] imported-f2
+U imported-f3
+U imported-f4'
 
                dotest import-111 "test -f imported-f4" ''
 
                # update to main line
-               dotest import-112 "${testcvs} -q update -A" \
-"${PROG} update: imported-f1 is no longer in the repository
-[UP] imported-f2"
+               dotest import-112 "$testcvs -q update -A" \
+"$PROG update: imported-f1 is no longer in the repository
+[UP] imported-f2
+U imported-f3
+U imported-f4"
 
                cd ..
 
@@ -8499,7 +8530,12 @@
          echo modify >>cdir/cfile
          dotest importc-5 \
 "${testcvs} -q rtag -b -r release wip_test first-dir" ""
-         dotest importc-6 "${testcvs} -q update -r wip_test" "M cdir/cfile"
+         dotest importc-6 "$testcvs -q update -r wip_test" \
+'U adir/sub1/file1
+U adir/sub1/ssdir/ssfile
+U adir/sub2/file2
+U bdir/subdir/file1
+M cdir/cfile'
 
          # This used to fail in local mode
          dotest importc-7 "${testcvs} -q ci -m modify -r wip_test" \
@@ -8776,8 +8812,9 @@
 "${testcvs} tag -b TESTTOTRON file1" \
 'T file1'
          dotest branch-after-import-4 \
-"${testcvs} -q update -r TESTTOTRON" \
-"${PROG} update: file2 is no longer in the repository"
+"$testcvs -q update -r TESTTOTRON" \
+"U file1
+$PROG update: file2 is no longer in the repository"
 
          cp ../imp-dir/file2 .
          dotest branch-after-import-5 \
@@ -9238,7 +9275,11 @@
 T file3
 T file4
 T file7"
-         dotest join-27 "${testcvs} -q update -r br2" ""
+         dotest join-27 "$testcvs -q update -r br2" \
+'U file2
+U file3
+U file4
+U file7'
          # The handling of file8 and file9 here look fishy to me.  I don't
          # see why it should be different from the case where we merge to
          # the trunk (e.g. join-23).
@@ -9385,7 +9426,7 @@
 initial revision: 1\.1
 done"
          dotest join2-5 "${testcvs} -q tag -b br1" "T file1"
-         dotest join2-6 "${testcvs} -q update -r br1" ""
+         dotest join2-6 "$testcvs -q update -r br1" 'U file1'
          echo 'modify on branch' >>file1
          touch bradd
          dotest join2-6a "${testcvs} add bradd" \
@@ -9502,7 +9543,7 @@
 initial revision: 1\.1
 done"
          dotest join3-5 "${testcvs} -q tag -b br1" "T file1"
-         dotest join3-6 "${testcvs} -q update -r br1" ""
+         dotest join3-6 "$testcvs -q update -r br1" 'U file1'
          echo 'br1:line1' >>file1
          dotest join3-7 "${testcvs} -q ci -m modify" \
 "Checking in file1;
@@ -10174,7 +10215,8 @@
 done"
 
          dotest join-readonly-conflict-4 "$testcvs tag -b B $file" "T $file"
-         dotest join-readonly-conflict-5 "$testcvs -q update -rB $file" ''
+         dotest join-readonly-conflict-5 "$testcvs -q update -rB $file" \
+"U $file"
          echo branch B > $file
          dotest join-readonly-conflict-6 "$testcvs -q ci -m . $file" \
 "Checking in $file;
@@ -10507,7 +10549,11 @@
          #
          # FIXCVS: This update should merge the removal to the trunk.  It does
          # not.
-         dotest join-rm-5 "$testcvs -q up -A" "U a"
+         dotest join-rm-5 "$testcvs -q up -A" \
+'U a
+U c
+U e
+U f'
 
          # and verify that there is no sticky tag
          dotest join-rm-6 "$testcvs status a" \
@@ -15141,7 +15187,9 @@
 done"
          dotest editor-5 "${testcvs} -q tag -b br" "T file1
 T file2"
-         dotest editor-6 "${testcvs} -q update -r br" ''
+         dotest editor-6 "$testcvs -q update -r br" \
+'U file1
+U file2'
          echo modify >>file1
          dotest editor-7 "${testcvs} -e ${TESTDIR}/editme -q ci" \
 "Checking in file1;
@@ -15153,7 +15201,9 @@
          # without being on the branch, because there is not a revision
          # already on the branch.  If there were a revision on the branch,
          # CVS would correctly give an up-to-date check failed.
-         dotest editor-8 "${testcvs} -q update -A" "U file1"
+         dotest editor-8 "$testcvs -q update -A" \
+'U file1
+U file2'
          echo add a line >>file2
          dotest editor-9 "${testcvs} -q -e ${TESTDIR}/editme ci -rbr file2" \
 "Checking in file2;
@@ -16596,7 +16646,8 @@
 new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1
 done"
          dotest ignore-on-branch-6 "$testcvs -q up -rbranch2" \
-"${PROG} update: file2 is no longer in the repository"
+"U file1
+$PROG update: file2 is no longer in the repository"
          dotest ignore-on-branch-7 "$testcvs -q up -jbranch" 'U file2'
 
          cd ../..
@@ -16967,7 +17018,10 @@
          dotest binfiles2-2 "${testcvs} -q tag -b br" 'T brmod
 T brmod-trmod
 T brmod-wdmod'
-         dotest binfiles2-3 "${testcvs} -q update -r br" ''
+         dotest binfiles2-3 "$testcvs -q update -r br" \
+'U brmod
+U brmod-trmod
+U brmod-wdmod'
          cp ../binfile binfile.dat
          dotest binfiles2-4 "${testcvs} add -kb binfile.dat" \
 "${PROG} add: scheduling file .binfile\.dat. for addition on branch .br.
@@ -17250,7 +17304,11 @@
 T brmod
 T brmod-trmod
 T brmod-wdmod'
-           dotest mcopy-3 "${testcvs} -q update -r br" ''
+           dotest mcopy-3 "$testcvs -q update -r br" \
+'U .cvswrappers
+U brmod
+U brmod-trmod
+U brmod-wdmod'
            echo 'modify brmod on br' >brmod
            echo 'modify brmod-trmod on br' >brmod-trmod
            echo 'modify brmod-wdmod on br' >brmod-wdmod
@@ -17267,10 +17325,11 @@
 ${CVSROOT_DIRNAME}/first-dir/brmod-wdmod,v  <--  brmod-wdmod
 new revision: 1\.1\.2\.1; previous revision: 1\.1
 done"
-           dotest mcopy-6 "${testcvs} -q update -A" \
-"[UP] brmod
-[UP] brmod-trmod
-[UP] brmod-wdmod"
+           dotest mcopy-6 "$testcvs -q update -A" \
+'U .cvswrappers
+U brmod
+U brmod-trmod
+U brmod-wdmod'
            dotest mcopy-7 "cat brmod brmod-trmod brmod-wdmod" \
 "brmod initial contents
 brmod-trmod initial contents
@@ -18193,7 +18252,7 @@
 done"
          dotest taginfo-6 "${testcvs} -q tag tag1" "T file1"
          dotest taginfo-7 "${testcvs} -q tag -b br" "T file1"
-         dotest taginfo-8 "${testcvs} -q update -r br" ""
+         dotest taginfo-8 "$testcvs -q update -r br" 'U file1'
          echo add text on branch >>file1
          dotest taginfo-9 "${testcvs} -q ci -m modify-on-br" \
 "Checking in file1;
@@ -18343,9 +18402,10 @@
          dotest serverpatch-5 "${testcvs} -q co -r tag first-dir" \
 'U first-dir/file1'
 
-         # Remove the tag.  This will leave the tag string in the
+         # Remove the tag.  Prior to 1.11.23, this left the tag string in the
          # expansion of the Name keyword.
-         dotest serverpatch-6 "${testcvs} -q update -A first-dir" ''
+         dotest serverpatch-6 "$testcvs -q update -A first-dir" \
+'U first-dir/file1'
 
          # Modify and check in the first copy.
          cd ../1/first-dir
@@ -18356,16 +18416,11 @@
 new revision: 1\.2; previous revision: 1\.1
 done"
 
-         # Now update the second copy.  When using remote CVS, the
-         # patch will fail, forcing the file to be refetched.
+         # Now update the second copy.  Prior to 1.11.23, the patch would fail
+         # using remote CVS, forcing the file to be refetched.
          cd ../../2/first-dir
          dotest serverpatch-8 "${testcvs} -q update" \
-'U file1' \
-"P file1
-${PROG} update: checksum failure after patch to \./file1; will refetch
-${PROG} client: refetching unpatchable files
-${PROG} update: warning: file1 was lost
-U file1"
+'[UP] file1'
 
          cd ../..
          rm -r 1 2
@@ -20217,7 +20272,7 @@
 
          # Check in a revision on the branch to force CVS to
          # interpret every revision in the file.
-         dotest rcs-6a "${testcvs} -q update -r branch file2" ""
+         dotest rcs-6a "$testcvs -q update -r branch file2" 'U file2'
          echo "next branch revision" > file2
          dotest rcs-6b "${testcvs} -q ci -m mod file2" \
 "Checking in file2;
@@ -20961,7 +21016,8 @@
          (sleep 5; rmdir "$TESTDIR/locks/CVSROOT/#cvs.val-tags.lock")&
          dotest lockfiles-22 "$testcvs -q up -r newtag first-dir" \
 "$PROG update: \[[0-9:]*\] waiting for $username's lock in 
$CVSROOT_DIRNAME/CVSROOT
-$PROG update: \[[0-9:]*\] obtained lock in $CVSROOT_DIRNAME/CVSROOT"
+$PROG update: \[[0-9:]*\] obtained lock in $CVSROOT_DIRNAME/CVSROOT
+U first-dir/sdir/ssdir/file1"
 
          cd CVSROOT
          echo "# nobody here but us comments" >config
@@ -21680,7 +21736,9 @@
          # set the same way (it is a different code path in CVS).
          dotest modes-11 "${testcvs} -q tag -b br" 'T aa
 T ab'
-         dotest modes-12 "${testcvs} -q update -r br" ''
+         dotest modes-12 "$testcvs -q update -r br" \
+'U aa
+U ab'
          touch ac
          dotest modes-13 "${testcvs} add ac" \
 "${PROG} add: scheduling file .ac. for addition on branch .br.
@@ -22429,7 +22487,7 @@
 1\.1 locked
 done"
 
-         dotest keyword-7 "${testcvs} update -kkv file1" "U file1"
+         dotest keyword-7 "$testcvs update -kkv file1" 'U file1'
          dotest keyword-8 "cat file1" \
 '\$'"Author: ${username} "'\$'"
 "'\$'"Date: [0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9] 
[0-9][0-9]:[0-9][0-9]:[0-9][0-9] "'\$'"
@@ -22449,7 +22507,7 @@
 xx add
 xx"
 
-         dotest keyword-9 "${testcvs} update -kkvl file1" "U file1"
+         dotest keyword-9 "$testcvs update -kkvl file1" '[UP] file1'
          dotest keyword-10 "cat file1" \
 '\$'"Author: ${username} "'\$'"
 "'\$'"Date: [0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9] 
[0-9][0-9]:[0-9][0-9]:[0-9][0-9] "'\$'"
@@ -22469,7 +22527,7 @@
 xx add
 xx"
 
-         dotest keyword-11 "${testcvs} update -kk file1" "U file1"
+         dotest keyword-11 "${testcvs} update -kk file1" '[UP] file1'
          dotest keyword-12 "cat file1" \
 '\$'"Author"'\$'"
 "'\$'"Date"'\$'"
@@ -22489,7 +22547,7 @@
 xx add
 xx"
 
-         dotest keyword-13 "${testcvs} update -kv file1" "U file1"
+         dotest keyword-13 "$testcvs update -kv file1" '[UP] file1'
          dotest keyword-14 "cat file1" \
 "${username}
 [0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]
@@ -22543,16 +22601,10 @@
 ${CVSROOT_DIRNAME}/first-dir/file1,v  <--  file1
 new revision: 1\.3; previous revision: 1\.2
 done"
-         # FIXCVS - These unpatchable files are happening because the tag
-         # associated with the current base version of the file in the
-         # sandbox is not available in these cases.  See the note in the
-         # patch_file function in update.c.
-         dotest keyword-21 "${testcvs} -q update -r tag1" "U file1" \
-"P file1
-${PROG} update: checksum failure after patch to \./file1; will refetch
-${PROG} client: refetching unpatchable files
-${PROG} update: warning: file1 was lost
-U file1"
+
+         # Prior to 1.11.23, remote CVS would fail the patch checksum test
+         # and refetch the file here, failing this test.
+         dotest keyword-21 "$testcvs -q update -r tag1" 'U file1'
 
          dotest keyword-22 "cat file1" '\$'"Name: tag1 "'\$'
 
@@ -22824,8 +22876,17 @@
 ${CVSROOT_DIRNAME}/first-dir/file2,v  <--  file2
 initial revision: 1\.3
 done"
+         dotest keywordname-init-5b "cat file1" \
+'\$''Name:  \$'
+         dotest keywordname-init-5c "cat file2" \
+'\$''Name:  \$'
+
+         dotest keywordname-init-6 "$testcvs -q up -A"
+         dotest keywordname-init-6b "cat file1" \
+'\$''Name:  \$'
+         dotest keywordname-init-6c "cat file2" \
+'\$''Name:  \$'
 
-         dotest keywordname-init-6 "${testcvs} -q up -A"
          dotest keywordname-init-7 "${testcvs} -q tag -b br" \
 "T file1
 T file2"
@@ -22842,59 +22903,53 @@
          # There used to be a bug where static tags would be substituted for
          # Name keywords but not branch tags.
          #
-         # FIXCVS - BUG
-         # Why shouldn't the non-update case not cause a substitution?
-         # An update -kk or -A will unsub and sub keywords without updates
-         # being required.
-         # FIXCVS - see note above keyword-21
-         dotest keywordname-update-1 "${testcvs} -q up -rbr" "U file1" \
-"P file1
-${PROG} update: checksum failure after patch to \./file1; will refetch
-${PROG} client: refetching unpatchable files
-${PROG} update: warning: file1 was lost
-U file1"
-         dotest keywordname-update-2 "cat file1" '\$'"Name: br "'\$'
-         dotest keywordname-update-3 "cat file2" '\$'"Name:  "'\$'
+         # Prior to 1.11.23, there also used to be a bug where keyword
+         # substitutions were not performed unless the file was otherwise
+         # updated.  When this bug was present, keywordname-update-1 would
+         # report a patch checksum failure and refetch file1 in client/server
+         # mode and no `br' would have been substituted into Name's value for
+         # file2, meaning keywordname-update-3 would also fail.
+         dotest keywordname-update-1 "$testcvs -q up -rbr" \
+'U file1
+U file2'
+         dotest keywordname-update-2 "cat file1" '\$''Name: br \$'
+
+         # For the same reason keywordname-update-1 would fail above, no `br'
+         # would have been substituted into Name's value here prior to
+         # 1.11.23.
+         dotest keywordname-update-3 "cat file2" '\$''Name: br \$'
 
          # Now verify that updating to the trunk leaves no substitution for
          # $Name
          dotest keywordname-update-4 "${testcvs} -q tag firsttag" \
 "T file1
 T file2"
-         # FIXCVS - see note above keyword-21
-         dotest keywordname-update-5 "${testcvs} -q up -A" "U file1" \
-"P file1
-${PROG} update: checksum failure after patch to \./file1; will refetch
-${PROG} client: refetching unpatchable files
-${PROG} update: warning: file1 was lost
-U file1"
+         # This used to fail in the same manner as keywordname-update-1.
+         dotest keywordname-update-5 "$testcvs -q up -A" \
+'U file1
+U file2'
          dotest keywordname-update-6 "cat file1" \
-'\$'"Name:  "'\$'"
-new data"
-         dotest keywordname-update-7 "cat file2" '\$'"Name:  "'\$'
-
-         # But updating to a static tag does cause a substitution
-         # FIXCVS - see same note above
-         dotest keywordname-update-8 "${testcvs} -q up -rfirsttag" "U file1" \
-"P file1
-${PROG} update: checksum failure after patch to \./file1; will refetch
-${PROG} client: refetching unpatchable files
-${PROG} update: warning: file1 was lost
-U file1"
-         dotest keywordname-update-9 "cat file1" '\$'"Name: firsttag "'\$'
-         dotest keywordname-update-10 "cat file2" '\$'"Name:  "'\$'
+'\$''Name:  \$
+new data'
+         dotest keywordname-update-7 "cat file2" '\$''Name:  \$'
+
+         # This used to fail in the same manner as keywordname-update-1.
+         dotest keywordname-update-8 "$testcvs -q up -rfirsttag" \
+'U file1
+U file2'
+         dotest keywordname-update-9 "cat file1" '\$''Name: firsttag \$'
+
+         # This used to fail in the same manner as keywordname-update-3.
+         dotest keywordname-update-10 "cat file2" '\$''Name: firsttag \$'
 
          # And reverify the trunk update when the change is actually removed.
-         dotest keywordname-update-11 "${testcvs} -q up -A" "[UP] file1" \
-"P file1
-${PROG} update: checksum failure after patch to ./file1; will refetch
-${PROG} client: refetching unpatchable files
-${PROG} update: warning: file1 was lost
-U file1"
+         dotest keywordname-update-11 "$testcvs -q up -A" \
+'U file1
+U file2'
          dotest keywordname-update-12 "cat file1" \
-'\$'"Name:  "'\$'"
-new data"
-         dotest keywordname-update-13 "cat file2" '\$'"Name:  "'\$'
+'\$''Name:  \$
+new data'
+         dotest keywordname-update-13 "cat file2" '\$''Name:  \$'
 
          cd ../..
 
@@ -22988,7 +23043,9 @@
 new revision: 1\.2; previous revision: 1\.1
 done"
 
-         dotest keyword2-9 "${testcvs} -q update -r branch" '[UP] file1'
+         dotest keyword2-9 "$testcvs -q update -r branch" \
+'U binfile\.dat
+[UP] file1'
 
          echo "what else do we have?" >>file1
          dotest keyword2-10 "${testcvs} -q ci -m change" \
@@ -22998,9 +23055,10 @@
 done"
 
          # Okay, first a conflict in file1 - should be okay with binfile.dat
-         dotest keyword2-11 "${testcvs} -q update -A -j branch" \
-"U file1
-RCS file: ${CVSROOT_DIRNAME}/first-dir/file1,v
+         dotest keyword2-11 "$testcvs -q update -A -j branch" \
+"U binfile\.dat
+U file1
+RCS file: $CVSROOT_DIRNAME/first-dir/file1,v
 retrieving revision 1\.1
 retrieving revision 1\.1\.2\.1
 Merging differences between 1\.1 and 1\.1\.2\.1 into file1
@@ -23049,7 +23107,9 @@
          dotest keyword2-17 "${testcvs} -q tag -b branch2" \
 "T binfile\.dat
 T file1"
-         dotest keyword2-18 "${testcvs} -q update -r branch2" ''
+         dotest keyword2-18 "$testcvs -q update -r branch2" \
+'U binfile\.dat
+U file1'
 
          ${AWK} 'BEGIN { printf "address@hidden", 2, 10, 137, 13, 10 }' \
            </dev/null | ${TR} '@' '\000' >>binfile.dat
@@ -23116,7 +23176,9 @@
 done"
          dotest head-6 "${testcvs} -q tag -b br1" "T file1
 T file2"
-         dotest head-7 "${testcvs} -q update -r br1" ""
+         dotest head-7 "$testcvs -q update -r br1" \
+'U file1
+U file2'
          echo 'modify on branch' >>file1
          dotest head-8 "${testcvs} -q ci -m modify" \
 "Checking in file1;
@@ -23132,7 +23194,9 @@
 new revision: 1\.3\.2\.2; previous revision: 1\.3\.2\.1
 done"
          # With no sticky tags, HEAD is the head of the trunk.
-         dotest head-trunk-setup "${testcvs} -q update -A" "[UP] file1"
+         dotest head-trunk-setup "$testcvs -q update -A" \
+'[UP] file1
+U file2'
          dotest head-trunk-update "${testcvs} -q update -r HEAD -p file1" \
 "imported contents
 add a line on trunk
@@ -23158,7 +23222,9 @@
 ${PLUS} modify on branch after brtag"
 
          # With a branch sticky tag, HEAD is the head of the trunk.
-         dotest head-br1-setup "${testcvs} -q update -r br1" "[UP] file1"
+         dotest head-br1-setup "$testcvs -q update -r br1" \
+'[UP] file1
+U file2'
          dotest head-br1-update "${testcvs} -q update -r HEAD -p file1" \
 "imported contents
 add a line on trunk
@@ -23169,7 +23235,9 @@
 
          # With a nonbranch sticky tag on a branch,
          # HEAD is the head of the trunk
-         dotest head-brtag-setup "${testcvs} -q update -r brtag" "[UP] file1"
+         dotest head-brtag-setup "$testcvs -q update -r brtag" \
+'[UP] file1
+U file2'
          dotest head-brtag-update "${testcvs} -q update -r HEAD -p file1" \
 "imported contents
 add a line on trunk
@@ -23182,8 +23250,9 @@
 
          # With a nonbranch sticky tag on the trunk, HEAD is the head
          # of the trunk, I think.
-         dotest head-trunktag-setup "${testcvs} -q update -r trunktag" \
-"[UP] file1"
+         dotest head-trunktag-setup "$testcvs -q update -r trunktag" \
+'[UP] file1
+U file2'
          dotest head-trunktag-check "cat file1" "imported contents
 add a line on trunk"
          dotest head-trunktag-update "${testcvs} -q update -r HEAD -p file1" \
@@ -23740,7 +23809,9 @@
          dotest multibranch2-6 "${testcvs} -q tag -b B" "T file1
 T file2"
 
-         dotest multibranch2-7 "${testcvs} -q update -r B" ''
+         dotest multibranch2-7 "$testcvs -q update -r B" \
+'U file1
+U file2'
          echo branch-B >file1
          echo branch-B >file2
          dotest multibranch2-8 "${testcvs} -q ci -m modify-on-B" \
@@ -23983,7 +24054,9 @@
 done"
          dotest admin-7 "${testcvs} -q tag -b br" "T file1
 T file2"
-         dotest admin-8 "${testcvs} -q update -r br" ""
+         dotest admin-8 "$testcvs -q update -r br" \
+'U file1
+U file2'
          echo 'add a line on the branch' >> file1
          echo 'add a file on the branch' >> file3
          dotest admin-9a "${testcvs} -q add file3" \
@@ -23999,9 +24072,10 @@
 ${CVSROOT_DIRNAME}/first-dir/Attic/file3,v  <--  file3
 new revision: 1\.1\.2\.1; previous revision: 1\.1
 done"
-         dotest admin-10 "${testcvs} -q update -A" \
+         dotest admin-10 "$testcvs -q update -A" \
 "U file1
-${PROG} update: file3 is no longer in the repository"
+U file2
+$PROG update: file3 is no longer in the repository"
 
          # Check that we can administer files in the repository that
          # aren't in the working directory.
@@ -25103,7 +25177,7 @@
 "mv a-lock,v ${CVSROOT_DIRNAME}/first-dir/a-lock,v" ""
          chmod 444 ${CVSROOT_DIRNAME}/first-dir/a-lock,v
          dotest reserved-17 "${testcvs} -q tag -b br a-lock" "T a-lock"
-         dotest reserved-18 "${testcvs} -q update -r br a-lock" ""
+         dotest reserved-18 "$testcvs -q update -r br a-lock" 'U a-lock'
          echo edit it >>a-lock
          dotest reserved-19 "${testcvs} -q ci -m modify a-lock" \
 "Checking in a-lock;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]