Contrôle d'accès GIT

Bonjour,

Je commence à apprendre l’utilisation de GIT et je me pose une question concernant le contrôle d’accès.

Imaginons que j’ai un développeur qui vient temporairement travailler sur un projet (stagiaire, freelance) qui a un dépôt GIT, j’aimerai lui donner accès à une partie du dépôt, quelques fichiers et dossiers (lecture et/ou écriture), c’est possible?

Sinon, comment faite vous? Séparation du projet en plusieurs dépôt?

Merci.

Plusieurs cas s’exposent à nous:

  • Le controle Read/Write
  • Le controle Read
  • Le controle Write

Workflow Forking (W)

En appliquant ce workflow tu peux facilement contrôler l’écriture des développeurs. Pour faire simple, il existe qu’un repo officiel et chaque développeurs fork ce repo. Lorsqu’ils ont fini leurs features ils peuvent pusher sur leur fork mais doivent faire une demande de pull-request pour que les modifications soient prises en compte et bien évidement seul le project maintainer peut accepter le pull-request.

Plus d’information sur https://www.atlassian.com/git/tutorials/comparing-workflows/forking-workflow

Séparer le code source en plusieurs repos (R/W)

En séparant ton code en plusieurs repo, tu peux contrôler tous les aspect des droits : read & write. Cependant il faut réfléchir ensuite au bonne solution pour faire interagir tes repos ensemble.

La première idée est souvent d’utiliser la feature built-in de git-submodule néanmoins j’ai eu des retours d’expérience assez compliquées lorsque commence a avoir des merges entre les modules. Un article intéressant sur les alternatives que je te conseille http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/.

Deux solutions sortent du lots : git-subtree et git-repo


J’attends de voir si d’autre personne a des solutions car je pense qu’il doit en exister d’autre.

2 J'aimes

Merci pour ton retour, c’est très intéressant.
J’espérai quelque chose d’un peu plus simple, comme .gitignore mais pour les utilisateurs.

Tout dépend du langage de programmation mais il est toujours intéressant de découper au maximum ton code pour créer des modules. Ensuite il suffit d’utiliser un gestionnaire de package style maven, composer, etc (donc plus besoin de submodule git) pour gérer tes dépendances.

Néanmoins cela est loin de la possibilité de pouvoir avoir une granularité fichier pour ta gestion de contrôle et cela nécessite que chaque module soit indépendant (programmation modulaire).

Tu peux aussi utiliser Gitolite. C’est tellement simple que même moi j’ai réussi à l’utiliser.
un exemple de tuto https://www.sheevaboite.fr/articles/installer-serveur-git-auto-heberge-gitolite-partie-3

Merci pour le tuto.
Par contre Gitolite permet de gérer les accès aux dépôts, mais pas de gérer les accès à l’intérieur d’une dépôt (dossiers, fichiers) :)

La tu me pose une colle j’ai jamais eu besoin d’aller aussi loin pour l’instant. La tu peux déjà créer un repo privé et invité des gens avec des droits dessus en ayant leur clé RSA publique c’est déjà pas mal. Maintenant, Gitolite simplifie le contrôle de l’accès d’une installation Git. Derrière sa reste du Git classique, normalement tout ce que tu savais faire avec Git reste valide.

Human Coders - Le centre de formation recommandé par les développeur·se·s pour les développeur·se·s