2011-11-10 4 views
0

Trouvé l'un des hooks de pré-validation SVN utiles dans SVN pre-commit hook for avoiding changes to tags subdirectories par mcdon.Validation des utilisateurs dans le hook de pré-validation SVN

Je souhaite ajouter la vérification de validation sur l'utilisateur avant de valider. Puis-je faire quelque chose comme ci-dessous?

@echo off 
REM user1, user2, user3 are example 
set VALID_USERS=user1,user2,user3 

set SVNROOT="C:\Program Files\CollabNet Subversion Server\svnlook.exe" 
set REPOS=%1% 
set TXN=%2% 

%SVNROOT% author %REPOS% -t %TXN% | findstr /r "^%VALID_USERS%$" >nul 
if %errorlevel% EQU 0 (
    echo This is an invalid user 1>&2 
    exit 1 
) else (
    echo This is valid user 1>&2 
    exit 0 
) 

Le script de pré-validation ci-dessus a échoué car tous les utilisateurs peuvent valider leurs fichiers. En outre, la commande 'echo' ne fonctionne pas car je ne vois aucune instruction d'écho ci-dessus. Quelqu'un peut-il aider?

Répondre

1

Je ne comprends pas pourquoi vous devriez vouloir un crochet de pré-validation pour cela, donc je vous donne un croquis de ce que nous utilisons lorsque nous travaillons sur des étiquettes.

  1. Nous utilisons la Subversion path-based authorization et des règles comme ça:

    [/tags] 
    * = r 
    @R_SVN_ADMINS = rw 
    

    afin que les administrateurs sont autorisés à créer et modifier les tags.

  2. Si nécessaire, nous ajoutons pour chaque balise une règle pour éviter la modification:

    [/tags/r1.0] 
    @R_SVN_ADMINS = r 
    
  3. Une autre solution consiste à modifier les règles dans le premier point après la création, de sorte que les étiquettes ne sont en lecture seule.

Cela fonctionne pour nous parce que les étiquettes sont rarement créées, et nous n'en avons pas beaucoup. Nous ne avons pas besoin de crochets pour interdire quelque chose ...

+0

Merci pour votre réponse mliebelt. J'ai pensé à utiliser le hook pré-commit pour empêcher l'utilisateur de supprimer le fichier/dossier dans le répertoire/trunk. – tanlccc

+0

Ensuite, vous devriez reformuler votre question (et peut-être le titre) pour informer les gens de votre problème ... – mliebelt

+0

@mliebelt, l'autorisation ci-dessus fonctionne-t-elle également pour l'authentification basée sur LDAP? Je veux dire que les utilisateurs du LDAP peuvent accéder aux repos, mais ne peuvent pas définir les permissions de lecture et d'écriture pour tous. Je ne suis pas en mesure d'utiliser "limite" car il n'y a aucun groupe créé dans LDAP. Veuillez suggérer. – anand

0

a trouvé le travail de solution suivante:

REM  Block deletion of folder/file in trunk 
%SVNLOOK% changed %REPOS% -t %TXN% | findstr /r "^D.*trunk/.*$" >nul 
if %errorlevel%==0 (goto DeleteInTrunkError) 

REM  DeleteInTrunkError 
REM ------------------------ 
:DeleteTrunkTagsError 
echo. 1>&2 
echo Trunk Delete Error: 1>&2 
echo  Only Administrator can delete in the trunk folder. 1>&2 
echo Commit details: 1>&2 
%SVNROOT% changed %REPOS% -t %TXN% 1>&2 
exit 1 
Questions connexes