[This patch was made official on 14 Oct 1998. Makes sense to me. The issue should be whether the server can identify who is committing, and the user on the client side has no necessary relationship to that. -kingdon] Date: Sun, 15 Feb 1998 22:25:45 +0100 (MET) To: bug-cvs@gnu.org From: eivind@freebsd.org >Submitter-Id: net >Originator: Eivind Eklund >Organization: net >Confidential: no >Synopsis: 'cvs commit' as root to a remote rep. don't work (w/fix) >Severity: non-critical >Priority: medium >Category: cvs >Class: sw-bug >Release: cvs-1.9.24 >Environment: System: FreeBSD bitbox.follo.net 3.0-CURRENT FreeBSD 3.0-CURRENT #20: Mon Feb 9 05:38:46 MET 1998 eivind@bitbox.follo.net:/disks/a/usr/src/sys/compile/BITBOX i386 >Description: 'cvs commit' doesn't understand how to deal with root using remote CVS repositories. When root use a remote repository, the identity problem is at the remote end, not the local end. >How-To-Repeat: Check out and do modifications to a remote CVS repository as root, and then try to commit changes. You'll get rejected, even though it is possible to identify the person doing the commit in the remote end. Some people think this is a feature, not a bug, but it is inconsistent with how committing as root with a local repository work. >Fix: Apply and commit the following patch. cvs diff: Diffing . Index: commit.c =================================================================== RCS file: /home/ncvs/src/contrib/cvs/src/commit.c,v retrieving revision 1.4 diff -u -r1.4 commit.c --- commit.c 1998/01/26 03:23:53 1.4 +++ commit.c 1998/02/15 21:17:50 @@ -339,8 +339,11 @@ /* FIXME: Shouldn't this check be much more closely related to the readonly user stuff (CVSROOT/readers, &c). That is, why should root be able to "cvs init", "cvs import", &c, but not "cvs ci"? */ - if (geteuid () == (uid_t) 0) - { + if (geteuid () == (uid_t) 0 +#ifdef CLIENT_SUPPORT + && !client_active +#endif /* CLIENT_SUPPORT */ + ) { struct passwd *pw; if ((pw = (struct passwd *) getpwnam (getcaller ())) == NULL)