info-cvs
[Top][All Lists]
Advanced

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

Re: winCVS question


From: Robert Bresner
Subject: Re: winCVS question
Date: Thu, 21 Dec 2000 04:59:51 -0500

I've never used WinCVS, so cannot answer your question directly....

Saima Iqbal wrote:
>  The aim
> is to refrain from allowing the users to tag source in the whole
> tree at random.  

If that is indeed your goal then perhaps all you want to do is 
add a line to the $CVSROOT/CVSROOT/taginfo file that runs a script
of some kind that performs a check before going through with the tag.

We've recently added a line to taginfo that runs a perl script (attached)
that checks the user and what dir that user is trying to tag. The script
itself has -rwx------ permissions so the users cannot muck around with it.


--------------------

#!/usr/bin/perl -w
use strict;

my $cusr = getpwuid( $< );
my %VNames;

$| = 1; select STDERR; $| = 1; select STDOUT;

# Read the info from below __DATA__
while( <DATA> )  {
   next if /^\s*$/;
   chomp;
   my( $Name, $Mods ) = split /\|/, $_, 2;
   $VNames{$Name} = $Mods ? $Mods : '';
}

if( not exists $VNames{$cusr} )  {      # If not on list anywhere, punt
   print "NO SOUP FOR YOU!\n";
   print "Check with cvs administrators for details and/or permissions\n";
   exit(2);
}
else  {                         # If in list, check the list of mods allowed
   exit(0) if not $VNames{$cusr};       # empty list means ALL modules
   foreach my $Mod( (split /\,/, $VNames{$cusr}) )  {
      # print STDOUT "CHECKING FOR MOD PERMISSIONS ($Mod)\n";
      if( $ARGV[2] =~ /\b$Mod\b/ )  {
         exit(0);
      }
   }
   print "NO SOUP FOR YOU!\n";
   print "Check with cvs administrators for details and/or permissions\n";
   exit(2);
}

exit(0);

# Name|mods permitted to tag (Perl regex's permitted...)
# Empty mod list means FULL PERMISSIONS for the tree
__DATA__
developer|
userA|mod_A
userB|mod_B
user|mod_\w*



reply via email to

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