2009-11-04 8 views
2

Dans un dépôt perforce, j'ai une zone contenant des branches stables et une zone contenant des branches instables. Je veux contrôler la capacité d'un utilisateur à créer de nouvelles branches (en utilisant p4 integra) dans la zone stable. Ainsi, par exemple mon dépôt est disposé comme si:Est-il possible de définir des autorisations dans Perforce de telle sorte qu'un utilisateur ne peut pas s'intégrer dans une certaine zone du dépôt?

//depot 
     /stable 
       stable_branch_1/... 
       stable_branch_2/... 
       ... (I want users to be stopped from integrating to here) 
     /unstable 
       unstable_branch_1/... 
       unstable_branch_2/... 
       ... (I want users to be able to integrate to here) 

Je suis conscient que dans les autorisations de p4 je peux définir quelque chose comme:

=branch  user  *   * -//depot/stable/... 

(c.f.) mais c'est l'exact opposé de ce dont j'ai besoin (c'est-à-dire interdit aux utilisateurs d'utiliser stable comme source pour les intégrations, plutôt qu'une cible).

Je suis très surpris qu'il ne semble pas possible de faire ce que je veux sans avoir recours à l'utilisation de déclencheurs, quelqu'un peut-il fournir des suggestions? Edit: Pour clarifier le fait que je ne veux pas que les utilisateurs continuent à écrire dans le dossier stable, je veux juste empêcher une opération d'intégration avec le dossier stable comme cible.

Répondre

3

Ok,
combinant la sagesse collective ici et de notre Perforce admin, je vous suggère ce qui suit:

write user * * -//depot/stable/... 
write user * *  //depot/stable/existing/branchA 
write user * *  //depot/stable/existing/branchB 

-à-dire enlever les droits d'écriture du dépôt stable et réattribution il encore. En outre, il est important de noter la différence entre =write et write. Le premier accorde exactement les droits d'écriture (et rien d'autre, pas de lecture, pas de synchronisation, pas de rien), le dernier accorde des droits d'écriture et tous les droits de niveau inférieur (par exemple, lecture, synchronisation).

+0

Toutes mes excuses, je na pas faire ce point dans le poste lui-même, je veux que les utilisateurs être en mesure de vérifier dans les branches existantes, mais ne pas être en mesure d'en créer de nouvelles. J'ai essayé de supporter le soutien et ils ont dit que ce n'était pas supporté, j'ai juste pensé que j'allais tendre la main pour demander parce que cela semblait être une étrange omission. – nfg

2

Si vous définissez des autorisations explicites sur chaque sous-branche dans votre région stable, vous devriez être en mesure de donner aux utilisateurs un accès complet aux succursales/projets existants que vous avez créés, mais ils ne seront pas en mesure de créer de nouveaux brances/projets

par exemple . Dans votre fichier d'autorisations (je ne sais pas la syntaxe et ne pas avoir Perforce sur cette machine)

# Do not give any permissions for //depot/stable 
write user_group * * //depot/stable/stable_Branch_1/... 
write user_group * * //depot/stable/stable_Branch_2/... 
write user_group * * //depot/stable/stable_Branch_3/... 

etc

Vos utilisateurs doivent maintenant ne pas être en mesure de créer de nouvelles branches/projets/dossiers au // depot/stable/... niveau mais ont les autorisations complètes ci-dessus. Vous ne pouvez pas les empêcher de s'intégrer dans les branches existantes. Que j'ai peur implique l'éducation des utilisateurs!

+0

+1 pour cela, je pense, en fonction du reste du fichier de protection, il serait nécessaire d'enlever explicitement les droits d'écriture sur le chemin // deport/stable et ensuite de les accorder de nouveau aux chemins spécifiques. – jhwist

2

L'ajout de cette protection à votre tableau empêche l'utilisateur d'intégrer dans//depot/stable tout en leur permettant d'intégrer de il:

 
=write user * * -//depot/stable/... 

Rappelez-vous, l'ordre est important. Perforce applique les autorisations dans l'ordre dans lequel elles sont répertoriées. Ce ...

 
=write user * * -//depot/stable/... 
write user * * //... 

...est pas différent de celui-ci:

 
write user * * //... 

En outre, Perforce génère une erreur plutôt unintuitive lorsqu'un utilisateur tente refusé d'intégrer dans la zone interdite. Au lieu de dire quelque chose de sensé comme: « Vous n'êtes pas autorisé à écrire dans ce dossier », il Déroule ce non-sens:

alt text http://img410.imageshack.us/img410/4579/p4deniedintegration.png