Ho creato un repository utilizzando SVN e ho caricato progetti. Esistono più utenti che lavorano su questi progetti. Ma non tutti richiedono l'accesso a tutti i progetti. Voglio impostare le autorizzazioni utente per ciascun progetto.
Come posso raggiungere questo obiettivo?
Nella cartella svn\repos\YourRepo\conf troverai due file, authz e passwd. Questi sono i due che devi regolare.
Nel file passwd è necessario aggiungere alcuni nomi utente e password. Presumo che tu l'abbia già fatto poiché hai persone che lo usano:
[users]
User1=password1
User2=password2
Quindi si desidera assegnare le autorizzazioni di conseguenza con il file authz:
Crea i gruppi concettuali che desideri e aggiungi persone:
[groups]
allaccess = user1
someaccess = user2
Quindi scegli quale accesso hanno sia dalle autorizzazioni che dal livello del progetto.
Quindi diamo ai nostri ragazzi "tutti gli accessi" tutti gli accessi dalla radice:
[/]
@allaccess = rw
Ma dai ai nostri "alcuni accessi" l'accesso di sola lettura ad alcuni progetti di livello inferiore:
[/someproject]
@someaccess = r
Troverai anche una semplice documentazione nei file authz e passwd.
@Stephen Bailey
Per completare la risposta, è anche possibile delegare i diritti utente al project manager, tramite un semplice file di testo nel proprio repository.
Per fare ciò, si imposta il database SVN con un file authz
predefinito contenente quanto segue:
###########################################################################
# The content of this file always precedes the content of the
# $REPOS/admin/acl_descriptions.txt file.
# It describes the immutable permissions on main folders.
###########################################################################
[groups]
svnadmins = xxx,yyy,....
[/]
@svnadmins = rw
* = r
[/admin]
@svnadmins = rw
@projadmins = r
* =
[/admin/acl_descriptions.txt]
@projadmins = rw
Questo file authz
predefinito autorizza gli amministratori SVN a modificare un file di testo semplice visibile all'interno del repository SVN, chiamato '/ admin/acl_descriptions.txt', in cui gli amministratori SVN o i project manager modificherà e registrerà gli utenti.
Quindi imposta un hook pre-commit che rileverà se la revisione è composta da quel file (e solo da quel file).
In tal caso, lo script di questo hook convaliderà il contenuto del file di testo normale e verificherà se ciascuna riga è conforme alla sintassi SVN.
Quindi un hook post-commit aggiornerà il \conf\authz
file con concatenazione di:
authz
presentato sopra/admin/acl_descriptions.txt
La prima iterazione viene eseguita dall'amministratore SVN, che aggiunge:
[groups]
projadmins = zzzz
Commette la sua modifica e questo aggiorna il file authz
.
Quindi il project manager 'zzzz' può aggiungere, rimuovere o dichiarare qualsiasi gruppo di utenti e qualsiasi utente desideri. Commette il file e il file authz
viene aggiornato.
In questo modo, l'amministratore SVN non deve gestire individualmente tutti gli utenti per tutti i repository SVN.
Un gotcha che mi ha sorpreso:
[repos:/path/to/dir/] # this won't work
ma
[repos:/path/to/dir] # this is right
Non è necessario includere una barra finale nella directory o vedrai 403 per la richiesta OPTIONS.
È possibile utilizzare svn + ssh :, e quindi si basa sul controllo di accesso al repository in una determinata posizione.
Questo è il modo in cui ospito un repository di gruppi di progetti nella mia uni, dove non riesco a configurare nient'altro. Solo avere una directory di proprietà del gruppo ed eseguire svn-admin (o qualunque cosa fosse) significa che non avevo bisogno di fare alcuna configurazione.
Anche se suggerirei che l'approccio Apache è migliore, SVN Serve funziona bene ed è piuttosto semplice.
Supponendo che il tuo repository si chiami "my_repo" e sia archiviato in C:\svn_repos:
Crea un file chiamato "passwd" in "C:\svn_repos\my_repo\conf". Questo file dovrebbe apparire come:
[Users]
username = password
john = johns_password
steve = steves_password
In C:\svn_repos\my_repo\conf\svnserve.conf set:
[general]
password-db = passwd
auth-access=read
auth-access=write
Ciò costringerà gli utenti ad accedere per leggere o scrivere in questo repository.
Seguire questi passaggi per ciascun repository, includendo solo gli utenti appropriati nel file passwd
per ciascun repository.
Il modo migliore è configurare Apache e impostare l'accesso tramite esso. Controlla svn book per aiuto. Se non vuoi usare Apache, puoi anche fare un controllo minimalista dell'accesso usando svnserve.