bug-cvs
[Top][All Lists]
Advanced

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

Re: rlog fails for collabnet CVS servers


From: Mark D. Baushke
Subject: Re: rlog fails for collabnet CVS servers
Date: Mon, 30 Aug 2004 09:56:51 -0700

cvs@smartcvs.com writes:

> Am I right to report this bug in this mailing list?

Well, that is a good question. The collabnet folks are not really the
same as the folks that commit to cvshome or talk about bugs on the
bug-cvs@gnu.org list.

cvs 1.11.18 will be the version that fixes this problem. It has not
yet been released.

The collabnet folks are running 'cvs 1.11.15-scast-vc-1.5.2' which has
some set of patches they apparently based from cvs 1.11.15. I do not
know if/when they will upgrade their servers.

The cvs 1.11.17.1 version of CVS now available from the cvshome.org
repository has fixed the problem with the patch below.

Derek is the fellow that typically chats with the collabnet folks, maybe
he can have them apply a patch to their version of the code... If any of
your customers are having problems with cvs 1.11.17, the patch below...

           -- Mark

ChangeLog entry:

2004-08-24  Derek Price <derek@ximbiot.com>

        * recurse.c (start_recursion): Don't shorten //. to / (use //).

2004-08-24  Derek Price <derek@ximbiot.com>

        * recurse.c (start_recursion): Strip trailing CWD indirections on
        repository.
        * sanity.sh (rstar-toplevel): Update to account for new behavior.
        (Report from Dan Peterson <dbpete@aol.com>.)

Index: recurse.c
===================================================================
RCS file: /cvs/ccvs/src/recurse.c,v
retrieving revision 1.77.4.3
retrieving revision 1.77.4.6
diff -u -p -r1.77.4.3 -r1.77.4.6
--- recurse.c   20 Mar 2004 18:14:57 -0000      1.77.4.3
+++ recurse.c   25 Aug 2004 02:31:12 -0000      1.77.4.6
@@ -134,6 +134,25 @@ start_recursion (fileproc, filesdoneproc
     frame.aflag = aflag;
     frame.locktype = locktype;
     frame.dosrcs = dosrcs;
+
+    /* If our repository_in has a trailing "/.", remove it before storing it
+     * for do_recursion().
+     *
+     * FIXME: This is somewhat of a hack in the sense that many of our callers
+     * painstakingly compute and add the trailing '.' we now remove.
+     */
+    while (repository_in && strlen (repository_in) >= 2
+           && repository_in[strlen (repository_in) - 2] == '/'
+           && repository_in[strlen (repository_in) - 1] == '.')
+    {
+       /* Beware the case where the string is exactly "/." or "//.".
+        * Paths with a leading "//" are special on some early UNIXes.
+        */
+       if (strlen (repository_in) == 2 || strlen (repository_in) == 3)
+           repository_in[strlen (repository_in) - 1] = '\0';
+       else
+           repository_in[strlen (repository_in) - 2] = '\0';
+    }
     frame.repository = repository_in;
 
     expand_wild (argc, argv, &argc, &argv);
 
Index: sanity.sh
===================================================================
RCS file: /cvs/ccvs/src/sanity.sh,v
retrieving revision 1.752.2.129
retrieving revision 1.752.2.130
diff -u -p -r1.752.2.129 -r1.752.2.130
--- sanity.sh   24 Aug 2004 17:58:43 -0000      1.752.2.129
+++ sanity.sh   25 Aug 2004 01:42:50 -0000      1.752.2.130
@@ -14111,14 +14111,14 @@ ${PROG} commit: Rebuilding administrativ
 
 
        rstar-toplevel)
-         # FIXCVS:
-         # This test confirms a bug that exists in the r* commands currently
-         # when run against the top-level project.
+         # This test used to confirm a bug that existed in the r* commands
+         # run against the top-level project prior to CVS 1.11.18 & 1.12.10.
          #
-         # The assertion failure is something like:
+         # The assertion failure was something like:
          # do_recursion: Assertion \`strstr (repository, \"/\./\") == ((void 
\*)0)' failed\..*"
-         dotest_fail rstar-toplevel-1 "$testcvs rlog ." \
-"${DOTSTAR}ssertion.*failed${DOTSTAR}" "${DOTSTAR}failed assertion${DOTSTAR}"
+         dotest rstar-toplevel-1 "$testcvs -q rlog ." \
+"
+RCS file: $CVSROOT_DIRNAME/CVSROOT$DOTSTAR"
 
          if $keep; then
            echo Keeping ${TESTDIR} and exiting due to --keep


> --
> Cheers,
> Tom
> 
> 
> cvs@smartcvs.com schrieb:
> > Hi,
> > I believe, collabnet CVS servers use GNU CVS, so I mention this
> > problem here.
> > When I send a rlog command, I just get the following error message
> > from the CVS server:
> > lock.c:222: failed assertion `strncmp (repository,
> > current_parsed_root->directory, strlen
> > (current_parsed_root->directory)) == 0'
> > cvs [rlog aborted]: received abort signal
> > cvs [rlog aborted]: received abort signal
> > lock.c:222: failed assertion `strncmp (repository,
> > current_parsed_root->directory, strlen
> > (current_parsed_root->directory)) == 0'
> > This seems to be caused by the fact, that the repository is mounted
> > from different computers and the repository path, which the client
> > knows of (CVS/Root + CVS/Repository) is not the same on the original
> > machine.
> > This bug renders a lot of cool features of the latest SmartCVS
> > useless for these CVS servers.
> > -- 
> > Cheers,
> > Tom




reply via email to

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