Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 2 Dec 1998 02:25:09 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        freebsd-current@FreeBSD.ORG, freebsd-hackers@FreeBSD.ORG
Subject:   simple cvs mod to handle shared checked-out source trees
Message-ID:  <199812021025.CAA13404@apollo.backplane.com>

next in thread | raw e-mail | index | archive | help
    I would like to submit the following new option to CVS for
    review.  The new option, -g, forces a umask of 00x which is
    necessary when multiple users share a common checked-out source tree.
    If there are no significant objects, I will commit it.

    Note that this is different from multiple users operating out of the
    same CVSROOT.  

    There are several common cases where you might want to have multiple users
    sharing a common checked-out source tree.  For example, in our management
    of DNS records we allow certain staff members to make modifications to
    primary zone files.  We do not want to have to duplicate the 30,000+ zone
    files for each user yet we DO want to keep those files under CVS control.

    The same problem occurs in our management of many other portions of our
    infrastructure.

    In anycase, to use the -g option effective, the user simply creates
    a ~/.cvsrc config file containing the line shown below, then runs CVS
    commands as per normal.

    --- cut here ---
    cvs -g
    --- cut here ---

    The only other way to do it is for the user to set his
    umask to, for example, 007.  The problem with doing this
    is that the user's entire shell session then operates
    with that umask, which can be exceedingly dangerous.

    But CVS operations can be made group-writeable-safe trivially
    simply by being in a private group due by chgrp'ing the
    directory structure.  Thus, having the cvs program set the
    umask (when given the -g option) can be made safe.

    (not included below are manual and error message diffs
    that also describe the new option).

					-Matt

tick:/usr/src/contrib/cvs# diff -c src/LINK/main.c src/main.c
*** src/LINK/main.c     Tue Apr  7 16:19:50 1998
--- src/main.c  Wed Dec  2 01:59:31 1998
***************
*** 479,485 ****
      opterr = 1;
  
      while ((c = getopt_long
!             (argc, argv, "+QqrwtnRlvb:T:e:d:Hfz:s:xa", long_options, &option_i
ndex))
             != EOF)
      {
        switch (c)
--- 479,485 ----
      opterr = 1;
  
      while ((c = getopt_long
!             (argc, argv, "+QqgrwtnRlvb:T:e:d:Hfz:s:xa", long_options, &option_
index))
             != EOF)
      {
        switch (c)
***************
*** 511,516 ****
--- 511,522 ----
                break;
            case 'w':
                cvswrite = 1;
+               break;
+           case 'g':
+               /*
+                * full group write perms
+                */
+               umask(umask(077) & 007);
                break;
            case 't':


    Matthew Dillon  Engineering, HiWay Technologies, Inc. & BEST Internet 
                    Communications & God knows what else.
    <dillon@backplane.com> (Please include original email in any response)    

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



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