Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Jul 2002 17:12:40 +0200 (CEST)
From:      Bill Fenner <fenner@research.att.com>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   bin/40227: CVS client doesn't upload new files created by "cvs update -j"
Message-ID:  <200207051512.g65FCe5O013447@nectar.attlabs.att.com>

next in thread | raw e-mail | index | archive | help

>Number:         40227
>Category:       bin
>Synopsis:       CVS client doesn't upload new files created by "cvs update -j"
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Jul 05 08:20:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     Bill Fenner
>Release:        FreeBSD 4.6-STABLE i386
>Organization:
AT&T Labs - Research
>Environment:
System: FreeBSD nectar.attlabs.att.com 4.6-STABLE FreeBSD 4.6-STABLE #0: Sat Jun 22 11:58:01 PDT 2002 root@nectar.attlabs.att.com:/usr/obj/usr/src/sys/GENERIC i386



Concurrent Versions System (CVS) 1.11.1p1-FreeBSD (client/server)

Copyright (c) 1989-2001 Brian Berliner, david d `zoo' zuhn, 
                        Jeff Polk, and other authors

CVS may be copied only under the terms of the GNU General Public License,
a copy of which can be found with the CVS distribution kit.

Specify the --help option for further information about CVS
	
>Description:
	

I was updating contrib software via my normal steps:

1. cvs co -rRELENG_4 foo
2. cvs update -jr1 -jr2 foo
3. <fix conflicts>
4. <build and test>
5. fcvs commit foo

When I did this with tcpdump, I got weird cvs server errors for each
new file that "cvs update" created:

Checking in contrib_tcpdump/ieee802_11.h;
/home/ncvs/src/contrib/tcpdump/ieee802_11.h,v  <--  ieee802_11.h
cvs server: ieee802_11.h: No such file or directory
cvs [server aborted]: error diffing ieee802_11.h
cvs commit: saving log message in /tmp/cvsed1Xq0

I went through this painful process for each new file in the tcpdump
import, and got really frustrated - frustrated enough to dive into
the CVS code.

Luckily, I had another MFC to do - libpcap.  I watched the CVS client/server
communication and saw that CVS thought that the new files were unmodified
so didn't need to be uploaded, even though they were also new.  This is
a bug in "cvs update" -- if it creates a new file, it should not put the
timestamp in.  It can be worked around in the cvs client code - it should
upload all new files, even if the timestamp on them is the same.


>How-To-Repeat:
	

Use cvs update -jfoo -jbar in a way that creates a new file on a branch.
Commit using remote CVS.

>Fix:

	

This is the cvs client workaround.

Index: client.c
===================================================================
RCS file: /home/ncvs/src/contrib/cvs/src/client.c,v
retrieving revision 1.2.2.3
diff -u -r1.2.2.3 client.c
--- client.c	28 Oct 2001 21:32:07 -0000	1.2.2.3
+++ client.c	5 Jul 2002 14:37:41 -0000
@@ -5226,7 +5226,8 @@
     }
     else if (vers->ts_rcs == NULL
 	     || args->force
-	     || strcmp (vers->ts_user, vers->ts_rcs) != 0)
+	     || strcmp (vers->ts_user, vers->ts_rcs) != 0
+	     || (vers->vn_user && *vers->vn_user == '0'))
     {
 	if (args->no_contents
 	    && supported_request ("Is-modified"))

I haven't looked at the merge code to see if it would be easy to
do the fix there (too|instead).

>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200207051512.g65FCe5O013447>