2009-05-19 16 views
3

J'ai configuré un référentiel SVN à partir de zéro, et j'ai réussi à étiqueter certaines de mes versions en utilisant la commande de copie SVN. J'ai utilisé le plugin d'authentification SSPI pour Apache, de sorte que nos développeurs viennent frapper le serveur avec leurs informations d'identification réseau, et tout fonctionne bien.Marquage et sécurité de Subversion

J'ai créé un fichier d'autorisation AuthZ, ajouté nos développeurs à des groupes dans le fichier et je leur ai accordé un accès en écriture à la racine. J'ai également accordé aux utilisateurs anonymes un accès en lecture seule à la racine.

Je puis verrouillé le/svn/avec: Exigent-groupe « CORP \ CKAN0BlahBlah »

Cela limite efficacement les nouveaux développeurs dans le groupe de sécurité accès en lecture seule jusqu'à ce qu'ils bénéficient d'un accès par la configuration aAuthZ fichier.

Maintenant, j'ai deux ou trois questions:

  1. Quelle est la bonne façon (autre que le système d'honneur) pour empêcher les utilisateurs de commiting changements à l'un des répertoires « tags »?

  2. Est-il possible d'utiliser SSPI passer les membres des groupes à AuthZ, plutôt que la liste des membres individuellement dans le fichier de configuration ?

Répondre

3

Pour Question n ° 1, j'ai développé pour cela:

@echo off 
SET SVNLOOK=C:\Program Files\CollabNet Subversion Server\svnlook.exe 
SET GREP=D:\SVN\Repo\hooks\grep.exe 
SET LOG=D:\SVN\Repo Logs.txt 

>>"%LOG%" echo ==== commit %1 %2 ==== 
>>"%LOG%" "%svnlook%" changed -t %2 %1 

("%svnlook%" changed -t %2 %1 | "%grep%" "^U.*/tags/") && (echo Cannot commit to tags.>&2 && exit 1) 
("%svnlook%" log -t %2 %1 | "%grep%" "[a-zA-Z0-9]") || (echo You must specify a comment.>&2 && exit 1) 

exit 0 

Grabbed l'outil grep de http://sourceforge.net/projects/unxutils


Pour Question n ° 2, la réponse est NON, vous ne pouvez pas vérifiez les groupes de sécurité AD dans le fichier de configuration AuthZ.

Merci pour votre aide, tout le monde.

+0

Je suis assez sûr que vous pourriez utiliser le findstr natif au lieu de grep ... – RedFilter

+0

Merci, je vais regarder à cela. –

+0

c'est un script Windows cool;) question: dans votre script, je peux ajouter de nouveaux fichiers aux tags .. connaissez-vous une solution pour éviter cela (je suis à la recherche d'une telle solution)? –

6

1 - Vous pouvez utiliser le hook de pré-validation pour empêcher les validations, voir SVN pre-commit hook for avoiding changes to tags subdirectories.

Edit: Pour ce faire, sous Windows, procédez comme suit:

Enregistrer cela comme un fichier nommé pré-commit.bat dans le dossier crochets de votre repo:

@echo off 
set REPOSITORY=%1 
echo %REPOSITORY% | find /I "tags" 
if errorlevel 1 goto done 
echo You tried to commit to %REPOSITORY% >&2 
echo Committing to tags is not allowed >&2 
exit 1 
:done 

Note, cela empêchera la validation de tout chemin de référentiel contenant la sous-chaîne tags. Modifiez selon vos besoins.

+0

Existe-t-il un moyen de faire cela sur Windows? –

+2

Les hooks sont du côté serveur, donc cela peut être fait avec une application compilée, un script shell, un fichier de commande, etc. qui est natif de la plateforme hôte. – crashmstr

+0

donc, j'ai cherché un script de pré-validation .bat et presque tous appellent un script Perl. Je ne pense pas que je puisse obtenir l'autorisation d'installer perl sur ce serveur, alors connaissez-vous une version pure de .bat? –

2

Il n'y a pas de "bonne" manière. Les tags sont une convention et les développeurs doivent apprendre et suivre. Sauf cela, un fail-safe peut être implémenté en utilisant des hooks Subversion. Voir la page this pour un joli tutoriel.

1

Cela me semble être une question d'éducation et de processus. Si vos développeurs comprennent le but de vos balises SVN, il semble beaucoup moins probable que des personnes (intentionnellement) effectuent des validations sur une balise. Ce que j'ai trouvé indispensable pour communiquer efficacement sur ces processus est une documentation écrite à jour. Mon équipe utilise un wiki pour stocker la documentation sur nos processus (en particulier, nous utilisons MediaWiki). L'approche wiki semble rendre les choses beaucoup plus accessibles et plus faciles à tenir à jour que de stocker des documents MS Office versionnés dans Sharepoint.

+0

Je suis l'un des développeurs, et je préférerais que cette implémentation soit une règle stricte. –

+0

Assez juste. Puis-je demander pourquoi? Évidemment, des accidents se produisent, et c'est un cas d'utilisation où une règle stricte est utile. Est-ce pourquoi tu le veux? –

+0

Oui. Et il se peut que certains de mes pairs ne me fassent pas confiance pour comprendre la politique. –

0

Comment utiliser le fichier svn-auth pour le définir? cela ressemblerait que:

[groups] 
ADMINS=<your ID> 
<rest of groups>=<all other IDs> 

[/] 
* = r 
<rest of groups> = rw 
@ADMINS = rw 

[/tags] 
<rest of groups> = r 

Cela permettra aux ADMINS un accès en lecture-écriture au répertoire tags, mais personne d'autre. Je ne connais pas le plugin d'authentification SSPI, donc mon exemple fourni ne fonctionne peut-être pas dans votre contexte.