[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
cvs -d commit can miss some files
From: |
Simon Walton |
Subject: |
cvs -d commit can miss some files |
Date: |
Fri, 20 Sep 2002 17:39:37 -0700 |
If the -d option is used with cvs commit to override CVS/Root,
then modified files in the directory that cvs is invoked
from may get missed by the commit.
This is because the routine arg_should_not_be_sent_to_server()
in client.c is erroneously throwing out the filename
because CVS/Root does not match the server that it is
connected to.
This patch fixes that by giving the command-line
cvs root priority over the value returned by Name_Root().
I'm not sure if this is the best way to fix it; perhaps
Name_Root() should be changed instead. This fix seemed
safer however.
Simon Walton
Index: ChangeLog
===================================================================
RCS file: /home/cvsroot/tools/cvs/ChangeLog,v
retrieving revision 1.7
diff -u -r1.7 ChangeLog
--- ChangeLog 2002/09/11 15:16:12 1.7
+++ ChangeLog 2002/09/21 00:23:54
@@ -1,3 +1,8 @@
+2002-09-20 Simon Walton <simonw@lucent.com>
+
+ * Fix missed files in commit with -d global option
+ if -d value was different to working copy's.
+
2002-09-11 Jim Meyering <meyering@lucent.com>
* (all auto*-generated files): Regenerate using automake-1.6 and
Index: src/client.c
===================================================================
RCS file: /home/cvsroot/tools/cvs/src/client.c,v
retrieving revision 1.11
diff -u -r1.11 client.c
--- src/client.c 2002/09/11 12:49:03 1.11
+++ src/client.c 2002/09/21 00:23:54
@@ -247,7 +247,8 @@
{
/* We're at the beginning of the string. Look at the
CVSADM files in cwd. */
- this_root = Name_Root ((char *) NULL, (char *) NULL);
+ this_root = CVSroot_cmdline ? xstrdup(CVSroot_cmdline) :
+ Name_Root ((char *) NULL, (char *) NULL);
}
/* Now check the value for root. */
Index: src/sanity.sh
===================================================================
RCS file: /home/cvsroot/tools/cvs/src/sanity.sh,v
retrieving revision 1.17
diff -u -r1.17 sanity.sh
--- src/sanity.sh 2002/09/17 19:45:49 1.17
+++ src/sanity.sh 2002/09/21 00:23:54
@@ -707,7 +707,7 @@
# Multiple root directories and low-level protocol tests.
tests="${tests} multiroot multiroot2 multiroot3 multiroot4"
tests="${tests} rmroot reposmv pserver server server2 client"
- tests="${tests} fork"
+ tests="${tests} fork commit-d"
else
tests="$*"
fi
@@ -24331,6 +24331,31 @@
cd ../..
rm -rf 1
rm -rf ${CVSROOT_DIRNAME}/$module
+ ;;
+
+ commit-d)
+ # Check that top-level commits work when CVS/Root
+ # is overridden by cvs -d.
+
+ mkdir -p 1/subdir; cd 1
+ touch file1 subdir/file2
+ dotest commit-d-1 "$testcvs -Q import -m. c-d-c X Y" ""
+ dotest commit-d-2 "$testcvs -Q co c-d-c" ""
+ cd c-d-c
+ echo change >>file1; echo another change >>subdir/file2
+ # Changing working root, then override with -d
+ echo nosuchhost:/cvs > CVS/Root
+ dotest commit-d-3 "$testcvs -Q -d $CVSROOT commit -m." \
+"Checking in file1;
+${TESTDIR}/cvsroot/c-d-c/file1,v <-- file1
+new revision: 1.2; previous revision: 1.1
+done
+Checking in subdir/file2;
+${TESTDIR}/cvsroot/c-d-c/subdir/file2,v <-- file2
+new revision: 1.2; previous revision: 1.1
+done"
+ cd ../..
+ rm -rf 1 cvsroot/c-d-c
;;
*)
Index: src/version.c
===================================================================
RCS file: /home/cvsroot/tools/cvs/src/version.c,v
retrieving revision 1.26
diff -u -r1.26 version.c
--- src/version.c 2002/09/11 12:49:06 1.26
+++ src/version.c 2002/09/21 00:23:54
@@ -18,7 +18,8 @@
char *config_string = " (client/server)\n"
" + loginfo-pipe patch\n"
" + update -p patch\n"
- " + commit-add-missing patch\n";
+ " + commit-add-missing patch\n"
+ " + cvs -d patch\n";
#else
char *config_string = " (client)\n";
- cvs -d commit can miss some files,
Simon Walton <=