5 votes

Git : Travail d'équipe à travers les branches sans permission de pousser

Je travaille actuellement pour une équipe Scrum qui utilise un référentiel git partagé avec une autre équipe Scrum. Pour simplifier, nous appellerons mon équipe Scrum Autobot et l'autre Decepticon.

L'équipe Decepticon a un accès complet en lecture et écriture au référentiel, et est responsable du cadre de travail.

L'équipe Autobot peut seulement lire, mais pas écrire. En général, il n'y a pas de problème si les membres de l'équipe travaillent de manière indépendante. Cependant, des cas se présentent où il serait utile de lire et écrire sur la branche d'autres membres de l'équipe. Jusqu'à présent, Autobot n'a pas obtenu l'accès en écriture de la part de Decepticon (la solution facile) donc une solution de contournement est nécessaire.

Un exemple d'utilisation: supposons que Optimus (pour continuer la métaphore des transformers) a fait ce qui suit:

#!/bin/bash
optimus@workstation0:~/git/work_project/> git branch sdev /sprint/dev --track
optimus@workstation0:~/git/work_project/> git checkout sdev
optimus@workstation0:~/git/work_project/> touch important_file.py
optimus@workstation0:~/git/work_project/> git add important_file.py
optimus@workstation0:~/git/work_project/> git commit -m "Fichier important ajouté."

Maintenant, Rodimus doit aider Optimus en éditant important_file.py. Il crée sa propre branche et tire directement de la branche de Optimus, puis essaie de pousser :

#!/bin/bash
rodimus@workstation1:~/git/work_project/> git branch sdev /sprint/dev --track
rodimus@workstation1:~/git/work_project/> git pull ~optimus/git/work_project sdev
rodimus@workstation1:~/git/work_project/> echo "'''TODO: Ajouter du contenu''' > important_file.py
rodimus@workstation1:~/git/work_project/> git commit -m "Ajout du TODO".
rodimus@workstation1:~/git/work_project/> git push ~optimus/git/work_project sdev

Et des erreurs surviennent. Quelle est la procédure appropriée pour cela? Il n'est pas souhaitable d'avoir un deuxième référentiel, mais cela est faisable si nécessaire.

3voto

VonC Points 414372

Mise à jour 2014 (3 ans plus tard)

Comme mentionné par Adrien Be dans les commentaires

Stash a implémenté des autorisations au niveau des branches

Voir "Utilisation des autorisations de branche"

https://confluence.atlassian.com/download/attachments/313460915/STASH20_branch_perm_adv.png?version=4&modificationDate=1376470584184&api=v2&effects=border-simple,blur-border


Réponse originale (juillet 2011)

La solution habituelle est un second dépôt où :

  • l'Équipe Autobot peut pousser vers
  • l'Équipe Decepticon peut régulièrement récupérer et voir s'il y a quelque chose à fusionner

Mais cela nécessiterait un second dépôt.

Une autre solution serait, avec un framework d'autorisation comme Gitolite, donner accès en écriture à une branche Autobot.
Cela ne nécessite qu'un seul dépôt, mais avec un serveur (ssh ou apache) capable d'authentifier l'utilisateur poussant vers ledit dépôt (car le protocole local n'a pas d'authentification).

Ainsi, les deux solutions ne sont pas une correction facile.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X