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


From: Derek Robert Price
Subject: [Cvs-cvs] ccvs/src ChangeLog classify.c sanity.sh
Date: Mon, 28 Aug 2006 20:00:38 +0000

CVSROOT:        /cvsroot/cvs
Module name:    ccvs
Changes by:     Derek Robert Price <dprice>     06/08/28 20:00:38

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

Log message:
        Merge changes from 1.11.x.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/ChangeLog?cvsroot=cvs&r1=1.3483&r2=1.3484
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/classify.c?cvsroot=cvs&r1=1.39&r2=1.40
http://cvs.savannah.gnu.org/viewcvs/ccvs/src/sanity.sh?cvsroot=cvs&r1=1.1166&r2=1.1167

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/cvs/ccvs/src/ChangeLog,v
retrieving revision 1.3483
retrieving revision 1.3484
diff -u -b -r1.3483 -r1.3484
--- ChangeLog   27 Aug 2006 01:12:16 -0000      1.3483
+++ ChangeLog   28 Aug 2006 20:00:37 -0000      1.3484
@@ -2,6 +2,13 @@
 
        * sanity.sh (ls-d-init-11): Verify output of CVS run.
 
+       [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.39
retrieving revision 1.40
diff -u -b -r1.39 -r1.40
--- classify.c  27 Aug 2006 01:08:28 -0000      1.39
+++ classify.c  28 Aug 2006 20:00:37 -0000      1.40
@@ -27,6 +27,47 @@
 static void sticky_ck (struct file_info *finfo, int aflag,
                              Vers_TS * vers);
 
+
+
+static inline bool
+keywords_may_change (int aflag, Vers_TS *vers)
+{
+    bool 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 = true;
+    else
+       retval = false;
+
+    return retval;
+}
+
+
+
 /*
  * Classify the state of a file.
  *
@@ -311,15 +352,14 @@
                 */
                /* 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)
-                   ret = T_CHECKOUT;
+               if (keywords_may_change (aflag, vers))
+                   ret = T_PATCH;
                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.1166
retrieving revision 1.1167
diff -u -b -r1.1166 -r1.1167
--- sanity.sh   27 Aug 2006 01:12:17 -0000      1.1166
+++ sanity.sh   28 Aug 2006 20:00:37 -0000      1.1167
@@ -3440,8 +3440,14 @@
          dotest basica-8a4 "${testcvs} -q ci -m valid -r 3.1.2" \
 "$CVSROOT_DIRNAME/first-dir/sdir/ssdir/ssfile,v  <--  ssfile
 new revision: 3\.1\.2\.1; previous revision: 3\.1"
+
+         # 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 ./" "U ssfile"
+         dotest basica-8a5 "$testcvs -q up -A ./" 'U ssfile'
+         dotest basica-8a6 "cmp ssfile $TESTDIR/ssfile.sav"
+         rm $TESTDIR/ssfile.sav
 
          cd ../..
          dotest basica-8b "${testcvs} -q diff -r1.2 -r1.3"
@@ -5481,7 +5487,7 @@
 "$CVSROOT_DIRNAME/first-dir/tfile,v  <--  tfile
 initial revision: 1\.1"
          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
@@ -5555,7 +5561,7 @@
 
          dokeep
          cd ../../..
-         rm -r 1
+         rm -rf 1
          modify_repo rm -rf $CVSROOT_DIRNAME/first-dir
          ;;
 
@@ -6590,7 +6596,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
@@ -6830,9 +6838,10 @@
 ${PLUS} first revision"
 
          # now back to the trunk
-         dotest death2-21 "${testcvs} -q update -A" \
-"U file2
-U file4"
+         dotest death2-21 "$testcvs -q update -A" \
+'U file1
+U file2
+U file4'
 
          # test merging with a dead file
          dotest death2-22 "${testcvs} -q co first-dir" \
@@ -7061,7 +7070,7 @@
 "$testcvs -q ci -r mynonbranch -m add file4" \
 "$SPROG \[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'
          fi # !$proxy
 
          # Oops - CVS isn't distinguishing between a branch tag and
@@ -7127,9 +7136,10 @@
 initial revision: 1\.1"
 
          # lose the branch
-         dotest rmadd-29 "${testcvs} -q up -A" \
-"${SPROG} update: \`file3' is no longer in the repository
-${SPROG} update: \`file4' is no longer in the repository"
+         dotest rmadd-29 "$testcvs -q up -A" \
+"U file1
+$SPROG update: \`file3' is no longer in the repository
+$SPROG update: \`file4' is no longer in the repository"
 
          # -f disables recursion
          dotest rmadd-30 "${testcvs} -q ci -f -r9 -m." \
@@ -7642,9 +7652,12 @@
 T file2
 T file3
 T file4'
-         dotest branches-5 "${testcvs} update -r br1" \
-"${SPROG} update: Updating \.
-M file1"
+         dotest branches-5 "$testcvs update -r br1" \
+"$SPROG 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" \
@@ -7658,7 +7671,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" \
@@ -7670,8 +7687,10 @@
 2:br1
 3:ancest
 4:brbr'
-         dotest branches-11 "${testcvs} -q update -r br1" \
+         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
@@ -7681,8 +7700,10 @@
          dotest branches-12.2 "${testcvs} -q ci -m change-on-br1" \
 "$CVSROOT_DIRNAME/first-dir/file4,v  <--  file4
 new revision: 1\.2\.2\.2; previous revision: 1\.2\.2\.1"
-         dotest branches-13 "${testcvs} -q update -A" 'U file1
+         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
@@ -8363,18 +8384,82 @@
 
          # make sure we get the appropriate warnings when updating       
          dotest branches4-6 "${testcvs} update -r xxx" \
-"${SPROG} update: Updating \.
-${SPROG} update: Updating branches
-${SPROG} update: Updating mixed
-${SPROG} update: warning: xxx is a branch tag in some files and a revision tag 
in others\.
-${SPROG} update: Updating mixed2
-${SPROG} update: warning: xxx is a branch tag in some files and a revision tag 
in others\.
-${SPROG} update: Updating versions"
+"$SPROG update: Updating \.
+$SPROG update: Updating branches
+U branches/file1
+U branches/file2
+U branches/file3
+U branches/file4
+$SPROG update: Updating mixed
+U mixed/file1
+$SPROG update: warning: xxx is a branch tag in some files and a revision tag 
in others\.
+U mixed/file2
+U mixed/file3
+U mixed/file4
+$SPROG update: Updating mixed2
+U mixed2/file1
+$SPROG update: warning: xxx is a branch tag in some files and a revision tag 
in others\.
+U mixed2/file2
+U mixed2/file3
+U mixed2/file4
+$SPROG update: Updating versions
+U versions/file1
+U versions/file2
+U versions/file3
+U versions/file4"
 
          # make sure we don't get warned in quiet modes
-         dotest branches4-7 "${testcvs} -q update -A"
-         dotest branches4-8 "${testcvs} -q update -r xxx"
-         dotest branches4-9 "${testcvs} -q update -A"
+         dotest branches4-7 "$testcvs -q update -A" \
+'U branches/file1
+U branches/file2
+U branches/file3
+U branches/file4
+U mixed/file1
+U mixed/file2
+U mixed/file3
+U mixed/file4
+U mixed2/file1
+U mixed2/file2
+U mixed2/file3
+U mixed2/file4
+U versions/file1
+U versions/file2
+U versions/file3
+U versions/file4'
+         dotest branches4-8 "$testcvs -q update -r xxx" \
+'U branches/file1
+U branches/file2
+U branches/file3
+U branches/file4
+U mixed/file1
+U mixed/file2
+U mixed/file3
+U mixed/file4
+U mixed2/file1
+U mixed2/file2
+U mixed2/file3
+U mixed2/file4
+U versions/file1
+U versions/file2
+U versions/file3
+U versions/file4'
+         dotest branches4-9 "$testcvs -q update -A" \
+'U branches/file1
+U branches/file2
+U branches/file3
+U branches/file4
+U mixed/file1
+U mixed/file2
+U mixed/file3
+U mixed/file4
+U mixed2/file1
+U mixed2/file2
+U mixed2/file3
+U mixed2/file4
+U versions/file1
+U versions/file2
+U versions/file3
+U versions/file4'
          dotest branches4-10 "${testcvs} -Q update -r xxx"
 
          # make sure the Tag files are correct
@@ -8392,7 +8477,7 @@
          dokeep
          cd ../..
          modify_repo rm -rf $CVSROOT_DIRNAME/first-dir
-         rm -r branches4
+         rm -rf branches4
          ;;
 
 
@@ -8530,8 +8615,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" \
-"${SPROG} update: Updating \.
-${SPROG} update: warning: new-born \`$file' has disappeared"
+"$SPROG update: Updating \.
+$SPROG update: warning: new-born \`$file' has disappeared
+U unused-file"
          dotest update-p-undead-1 "$testcvs update" \
 "${SPROG} update: Updating \.
 U $file"
@@ -8581,7 +8667,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" \
@@ -9294,7 +9382,7 @@
          dotest multibranch-5 "${testcvs} tag -b br2" \
 "${SPROG} 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" \
 "$CVSROOT_DIRNAME/first-dir/file1,v  <--  file1
@@ -9462,10 +9550,12 @@
 ============================================================================="
 
                # update into the vendor branch.
-               dotest import-102 "${testcvs} update -rvendor-branch" \
-"${SPROG} update: Updating .
+               dotest import-102 "$testcvs update -rvendor-branch" \
+"$SPROG update: Updating .
 U imported-f1
-U imported-f2"
+U imported-f2
+U imported-f3
+U imported-f4"
 
                # remove file4 on the vendor branch
                rm imported-f4
@@ -9480,9 +9570,10 @@
 new revision: delete; previous revision: 1\.1\.1\.1"
 
                # update to main line
-               dotest import-105 "${testcvs} -q update -A" \
-"${SPROG} update: \`imported-f1' is no longer in the repository
-U imported-f2"
+               dotest import-105 "$testcvs -q update -A" \
+"$SPROG update: \`imported-f1' is no longer in the repository
+U imported-f2
+U imported-f3"
 
                # second import - file4 deliberately unchanged
                cd ../import-dir
@@ -9526,16 +9617,20 @@
                done
 
                # check vendor branch for file4
-               dotest import-110 "${testcvs} -q update -rvendor-branch" \
-"U imported-f1
-U imported-f2"
+               dotest import-110 "$testcvs -q update -rvendor-branch" \
+'U imported-f1
+U 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" \
-"${SPROG} update: \`imported-f1' is no longer in the repository
-U imported-f2"
+               dotest import-112 "$testcvs -q update -A" \
+"$SPROG update: \`imported-f1' is no longer in the repository
+U imported-f2
+U imported-f3
+U imported-f4"
 
                cd ..
 
@@ -9733,7 +9828,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" \
@@ -10224,8 +10324,9 @@
 "${testcvs} tag -b TESTTOTRON file1" \
 'T file1'
          dotest branch-after-import-4 \
-"${testcvs} -q update -r TESTTOTRON" \
-"${SPROG} update: \`file2' is no longer in the repository"
+"$testcvs -q update -r TESTTOTRON" \
+"U file1
+$SPROG update: \`file2' is no longer in the repository"
 
          cp ../imp-dir/file2 .
          dotest branch-after-import-5 \
@@ -10612,7 +10713,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).
@@ -10749,7 +10854,7 @@
 "$CVSROOT_DIRNAME/first-dir/file1,v  <--  file1
 initial revision: 1\.1"
          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" \
@@ -10857,7 +10962,7 @@
 "$CVSROOT_DIRNAME/first-dir/file1,v  <--  file1
 initial revision: 1\.1"
          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" \
 "$CVSROOT_DIRNAME/first-dir/file1,v  <--  file1
@@ -11377,7 +11482,8 @@
 initial revision: 1\.1"
 
          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" \
 "$CVSROOT_DIRNAME/$module/$file,v  <--  $file
@@ -11623,7 +11729,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" \
@@ -16142,7 +16252,9 @@
 initial revision: 1\.1"
          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" \
 "$CVSROOT_DIRNAME/first-dir/file1,v  <--  file1
@@ -16152,7 +16264,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" \
 "$CVSROOT_DIRNAME/first-dir/file2,v  <--  file2
@@ -18164,7 +18278,8 @@
 "$CVSROOT_DIRNAME/ignore-on-branch/file2,v  <--  file2
 new revision: 1\.1\.2\.2; previous revision: 1\.1\.2\.1"
          dotest ignore-on-branch-6 "$testcvs -q up -rbranch2" \
-"${SPROG} update: \`file2' is no longer in the repository"
+"U file1
+$SPROG update: \`file2' is no longer in the repository"
          dotest ignore-on-branch-7 "$testcvs -q up -jbranch" \
 "$SPROG update: scheduling addition from revision 1\.1\.2\.2 of \`file2'\."
 
@@ -18538,7 +18653,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" \
 "${SPROG} add: scheduling file .binfile\.dat. for addition on branch .br.
@@ -18785,7 +18903,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
@@ -18796,8 +18918,9 @@
 new revision: 1\.1\.2\.1; previous revision: 1\.1
 $CVSROOT_DIRNAME/first-dir/brmod-wdmod,v  <--  brmod-wdmod
 new revision: 1\.1\.2\.1; previous revision: 1\.1"
-           dotest mcopy-6 "${testcvs} -q update -A" \
-"U brmod
+           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" \
@@ -20125,7 +20248,7 @@
          dotest taginfo-4 "${testcvs} add file1" \
 "${SPROG} add: scheduling file .file1. for addition
 ${SPROG} add: use .${SPROG} commit. to add this file permanently"
-         dotest taginfo-5 "${testcvs} -q ci -m add-it" \
+         dotest taginfo-5 "$testcvs -q ci -m add-it" \
 "$CVSROOT_DIRNAME/first-dir/file1,v  <--  file1
 initial revision: 1\.1" \
 "$CVSROOT_DIRNAME/first-dir/file1,v  <--  file1
@@ -20148,7 +20271,7 @@
 Filling in old defaults ('%t %o %p %{sv}'), but please be aware that this
 usage is deprecated\.
 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" \
 "$CVSROOT_DIRNAME/first-dir/file1,v  <--  file1
@@ -20404,7 +20527,10 @@
 "T file 2
 W file1 : br already exists on branch 1\.1\.2\.1 : NOT MOVING tag to branch 
1\.1\.0\.4
 T sdir/file3"
-         dotest taginfo-newfmt-10 "${testcvs} -q update -r br" "U file1"
+         dotest taginfo-newfmt-10 "$testcvs -q update -r br" \
+'U file 2
+U file1
+U sdir/file3'
          echo add more text on branch >>file1
          dotest taginfo-newfmt-11 "${testcvs} -q ci -m modify-on-br" \
 "${TESTDIR}/cvsroot/first-dir/file1,v  <--  file1
@@ -21097,22 +21223,20 @@
          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
-         # expansion of the Name keyword.
-         dotest serverpatch-6 "${testcvs} -q update -A first-dir" ''
+         # Remove the tag.  Prior to 1.11.23 & 1.12.13, this left the tag
+         # string in the expansion of the Name keyword.
+         dotest serverpatch-6 "$testcvs -q update -A first-dir" \
+'U first-dir/file1'
 
          # Modify and check in the first copy.
          cd ../1/first-dir
          echo '2' >> file1
          dotest serverpatch-7 "$testcvs -Q ci -mx file1"
 
-         # 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 & 1.12.13, 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' \
-"$CPROG update: checksum failure after patch to \`file1'; will refetch
-$CPROG client: refetching unpatchable files
-U file1"
+         dotest serverpatch-8 "$testcvs -q update" 'U file1'
 
          dokeep
          cd ../..
@@ -23025,7 +23149,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" \
 "$CVSROOT_DIRNAME/first-dir/file2,v  <--  file2
@@ -23837,7 +23961,8 @@
          (sleep 5; rmdir "$TESTDIR/locks/CVSROOT/#cvs.val-tags.lock")&
          dotest lockfiles-22 "$testcvs -q up -r newtag first-dir" \
 "$SPROG update: \[[0-9:]*\] waiting for $username's lock in 
$CVSROOT_DIRNAME/CVSROOT
-$SPROG update: \[[0-9:]*\] obtained lock in $CVSROOT_DIRNAME/CVSROOT"
+$SPROG update: \[[0-9:]*\] obtained lock in $CVSROOT_DIRNAME/CVSROOT
+U first-dir/sdir/ssdir/file1"
 
          cd CVSROOT
          dotest lockfiles-cleanup-1 "$testcvs -q up -pr1.1 config >config" ""
@@ -24674,7 +24799,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" \
 "${SPROG} add: scheduling file .ac. for addition on branch .br.
@@ -24696,7 +24823,7 @@
          # Restore umask.
          umask $save_umask
          unset CVSUMASK
-         rm -r 1
+         rm -rf 1
          modify_repo rm -rf $CVSROOT_DIRNAME/first-dir
          ;;
 
@@ -25328,7 +25455,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] "'\$'"
@@ -25348,7 +25475,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: ${RCSKEYDATE} "'\$'"
@@ -25368,7 +25495,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"'\$'"
@@ -25388,7 +25515,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}
 ${RCSKEYDATE}
@@ -25434,10 +25561,10 @@
          dotest keyword-19 "${testcvs} -q tag tag1" "T file1"
          echo "change" >> file1
          dotest keyword-20 "$testcvs -Q ci -m mod2 file1"
-         dotest keyword-21 "$testcvs -q update -r tag1" "U file1" \
-"$CPROG update: checksum failure after patch to \`file1'; will refetch
-$CPROG client: refetching unpatchable files
-U file1"
+
+         # Prior to 1.11.23 & 1.12.13, 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 "'\$'
 
@@ -25789,7 +25916,7 @@
          # See "rmadd" for a list of other tests of cvs ci -r.
          dotest keywordname-init-4 "$testcvs -Q ci -r 1.3 -m add"
 
-         dotest keywordname-init-6 "${testcvs} -q up -A"
+         dotest keywordname-init-6 "${testcvs} -Q up -A"
          dotest keywordname-init-7 "${testcvs} -q tag -b br" \
 "T file1
 T file2"
@@ -25802,51 +25929,54 @@
          # 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" \
-"$CPROG update: checksum failure after patch to \`file1'; will refetch
-$CPROG client: refetching unpatchable files
-U file1"
-         dotest keywordname-update-2 "cat file1" '\$'"Name: br "'\$'
-         dotest keywordname-update-3 "cat file2" '\$'"Name:  "'\$'
+         # Prior to 1.11.23 & 1.12.13, 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 & 1.12.13.
+         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" \
-"$CPROG update: checksum failure after patch to \`file1'; will refetch
-$CPROG client: refetching unpatchable files
-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" \
-"$CPROG update: checksum failure after patch to \`file1'; will refetch
-$CPROG client: refetching unpatchable files
-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" "U file1" \
-"$CPROG update: checksum failure after patch to \`file1'; will refetch
-$CPROG client: refetching unpatchable files
-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 ../..
 
@@ -25922,14 +26052,17 @@
          sed -e 's/our/the best of and the worst of/' file1 >f; mv f file1
          dotest keyword2-8 "$testcvs -Q ci -m change"
 
-         dotest keyword2-9 "${testcvs} -q update -r branch" 'U 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"
 
          # Okay, first a conflict in file1 - should be okay with binfile.dat
          dotest keyword2-11 "$testcvs -q update -A -j branch" \
-"U file1
+"U binfile\.dat
+U file1
 Merging differences between 1\.1 and 1\.1\.2\.1 into \`file1'
 $CPROG update: conflicts during merge
 C file1"
@@ -25970,7 +26103,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
@@ -26037,7 +26172,9 @@
 new revision: 1\.3; previous revision: 1\.2"
          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" \
 "$CVSROOT_DIRNAME/first-dir/file1,v  <--  file1
@@ -26049,7 +26186,9 @@
 "$CVSROOT_DIRNAME/first-dir/file1,v  <--  file1
 new revision: 1\.3\.2\.2; previous revision: 1\.3\.2\.1"
          # With no sticky tags, HEAD is the head of the trunk.
-         dotest head-trunk-setup "${testcvs} -q update -A" "U file1"
+         dotest head-trunk-setup "$testcvs -q update -A" \
+'U file1
+U file2'
          dotest head-trunk-update "${testcvs} -q update -r HEAD -p file1" \
 "imported contents
 add a line on trunk
@@ -26070,7 +26209,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" "U file1"
+         dotest head-br1-setup "$testcvs -q update -r br1" \
+'U file1
+U file2'
          dotest head-br1-update "${testcvs} -q update -r HEAD -p file1" \
 "imported contents
 add a line on trunk
@@ -26081,7 +26222,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" "U file1"
+         dotest head-brtag-setup "$testcvs -q update -r brtag" \
+'U file1
+U file2'
          dotest head-brtag-update "${testcvs} -q update -r HEAD -p file1" \
 "imported contents
 add a line on trunk
@@ -26094,8 +26237,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" \
-"U file1"
+         dotest head-trunktag-setup "$testcvs -q update -r trunktag" \
+'U 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" \
@@ -26666,7 +26810,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" \
@@ -26907,7 +27053,9 @@
 initial revision: 1\.1"
          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" \
@@ -26917,9 +27065,10 @@
 new revision: 1\.1\.2\.1; previous revision: 1\.1
 $CVSROOT_DIRNAME/first-dir/Attic/file3,v  <--  file3
 new revision: 1\.1\.2\.1; previous revision: 1\.1"
-         dotest admin-10 "${testcvs} -q update -A" \
+         dotest admin-10 "$testcvs -q update -A" \
 "U file1
-${SPROG} update: \`file3' is no longer in the repository"
+U file2
+$SPROG update: \`file3' is no longer in the repository"
 
          # Check that we can administer files in the repository that
          # aren't in the working directory.
@@ -28010,7 +28159,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" \
 "$SPROG commit: warning: commitinfo line contains no format strings:




reply via email to

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