Cómo personalizar las reglas de acceso al repository de Collabnet Subversion Edge para prohibir a los usuarios eliminar files (sin eliminar)

Algunos desarrolladores en mi equipo se han vuelto locos … a veces borran un file. Me han asignado que les impida hacer eso. Hasta ahora he intentado seguir (Google es mi mejor amigo)

En "Reglas de acceso al repository", he

######################SVN Groups################### [groups] Admins:adm,bdm DevGrp:abc,bob,rob Choreograher:bob Database:abc ##############Folder-Specific-Access-Rules######### [temp:/trunk/] @Admins=rw [temp:/trunk/applications/branches/development/internal/branches] @DevGrp=rw [temp:/trunk/applications/branches/development/choreographer/trunk] @Choreograher=rw [temp:/trunk/applications/branches/development/databse/trunk] @Database=rw 

Ahora necesito revocar los derechos de eliminación de todos los grupos (excepto los administradores, por supuesto) de svn completo. Leí sobre https://github.com/qazwart/SVN-Precommit-Kitchen-Sink-Hook pero no sé cómo tener dos files diferentes (uno del propio file de Collabnet, donno donde itz almacenó y otro como pre-commit-hook) para controlar las reglas de acceso.

Simplemente intenté agregar new-pre-commit-hook.pl a mi list de ganchos, después de cambiar los siguientes detalles

 SVNLOOK_DEFAULT => '/opt/csvn/bin/svnlook', SVN_REPO_DEFAULT => '/opt/csvn/data/repositories/hooktest/', ..... use constant { # Control File Type (package Control) FILE_IN_REPO => "R", FILE_ON_SERVER => "/opt/csvn/data/repositories/hooktest/hooks/access-control.ini", }; ..... use constant VALID_ACCESSES => qw(ro rw ao nd na); .... if ( $case eq "ignore" ? $file_name =~ /$regex/i : $file_name =~ /$regex/ ) { if ( $access eq "rw" ) { $permitted = 1; } elsif ( $access eq "ro" ) { $permitted = 0; $description = $file_rule->Description; } elsif ( $access eq "ao" ) { $permitted = $change_type eq ADDED ? 1 : 0; $description = $file_rule->Description if not $permitted; } elsif ( $access eq "na" ) { $permitted = $change_type ne ADDED ? 1 : 0; $description = $file_rule->Description if not $permitted; } elsif ( $access eq "nd" ) { $permitted = $change_type ne DELETED ? 1 : 0; $description = $file_rule->Description if not $permitted; } } 

Intenté con la carpeta de tags primero.

Archivo de control: access-control.ini

 #SVN Permission Control File ##====================Legends====================## # Abbr. Description # ro read-only # rw read-write # ao add-only # nd no-delete # na no-add ##==============SVN Groups=======================## [group superadmins] users = adm,bdm [group developers] users = abc,bob,rob [group all] users = adm,bdm,abc,bob,rob ##===========Folder Specific Permissions=========## [file] file =/tags/** access = ro users = @all [file] file =/tags/*/* access = ao users = @superadmins [file] file =/tags/** access = ro users = @superadmins 

Pero no funcionó. Soy ingenuo con Perl y SVN. Por favor ayuda. Sistema operativo: Versión 6.3 del server Red Hat Enterprise Linux (Santiago) Acerca de Subversion Edge: Versión: 3.2.2

SVN Edge le ayuda a configurar y administrar un server Subversion estándar que incluye los binarys. La function Reglas de acceso es parte de Subversion, como se documenta aquí:

http://svnbook.networking-bean.com/en/1.7/svn.serverconfig.pathbasedauthz.html

Querrá utilizar esta function para controlar quién puede leer y escribir en su repository. Eso es en lo que respecta a la function Subversion.

Lo que desea hacer es desglosar aún más la operación de escritura para controlar quién puede eliminar, que es simplemente una forma de escritura. Subversion te permite hacer eso insertando un gancho precompromiso. Aquéllos están documentados aquí:

http://svnbook.networking-bean.com/en/1.7/svn.reposadmin.create.html#svn.reposadmin.create.hooks

Parece que encontraste un gancho que puede hacer lo que quieras. SVN Edge le permite cargar scripts de gancho en la carpeta de enganches del repository a través del browser web. Si el script hook necesita un file de configuration, como es el caso aquí, también puede cargar ese file. Solo necesita parchar el gancho según sea necesario para poder encontrar los binarys SVN, así como también el file de configuration que carga. El gancho se ejecutará solo DESPUÉS de que las reglas de acceso SVN incorporadas hayan permitido que alguien con acceso de escritura supere su control.

Por lo tanto, debe otorgarle a un usuario acceso de escritura utilizando las Reglas de acceso SVN, y luego quitarle el acceso de escritura si está intentando hacer algo que no quiere que le permita hacer.

Esa es una gran pregunta. No. El control de Subversion Repository solo le permite especificar si alguien puede leer el repository, o leer y realizar commits en el repository. Para tener permissions más finos, deberá escribir un enlace de precompilation de Subversion que permitirá a los usuarios modificar, pero no eliminar, los files / directorys. ¡Si solo alguien hubiera escrito un gancho de compromiso previo!

¡Espera un segundo! Escribí un gancho de precompromiso .

Este enganche particular permite los siguientes permissions:

  • lectura-escritura : permite al usuario leer y confirmar los cambios en el file.
  • de solo lectura : evitar que el usuario realice ningún cambio en el file.
  • no-delete : permite a los usuarios realizar cambios, pero no eliminar el file.
  • solo-agregar : permite a un usuario agregar un directory a través de svn cp , pero no puede editar el file una vez agregado. Esto fue creado específicamente con tags en mente.
  • no-add : permite a los usuarios realizar cambios (e incluso eliminar el file, pero no pueden agregar este file).

Tenga en count que no hay permiso que impida el acceso de lectura . Eso solo se puede controlar a través de los controles de acceso al repository. Después de todo, un enlace precompromiso solo puede funcionar si el file ya se ha desprotegido.

Estos permissions se pueden establecer a través de grupos de usuarios (incluidos los grupos LDAP y grupos de Windows Active Directory), y los files pueden coincidir con expresiones regulares de Perl o Ant globbing.

El gancho también puede verificar si hay nombres de file prohibidos, si se han establecido las properties correctas del file y si las properties de revisión (incluido el post de confirmación, svn:log están configuradas correctamente). Los valores de las properties se pueden comparar con cadenas o expresiones regulares.