2017-08-29 3 views
0

Je suis en train de chercher un moyen efficace d'utiliser le workflow GIT avec des permissions d'accès avancées. Le flux de travail est le suivant: http://nvie.com/posts/a-successful-git-branching-model/ mais une alternative plus simple peut être prise afin de comprendre l'exigence réelle qui est décrite dans le paragraphe suivant. Ce dont j'ai besoin est de configurer chaque développeur avec des permissions de fichier/répertoire (peut ne pas inclure l'autorisation "list" mais seulement lire et écrire si aucune autorisation "read" signifie que le DEV ne verra pas le fichier/répertoire du tout). De cette façon, je serai en mesure de partager une partie suffisante mais limitée de logiciels avec un développeur. La deuxième chose importante est qu'il devrait toujours être en mesure d'envoyer des demandes d'extraction pour la fusion, mais seulement avec l'ajout et/ou la modification de la source dans les répertoires/fichiers autorisés. Pour agréger la question: est-il possible d'utiliser GIT Workflow donné avec la possibilité de partager partiellement le référentiel et d'utiliser tout le potentiel du référentiel GIT? Les modules Git et les sous-arbres ne sont pas efficaces et semblent être utilisés dans d'autres cas parce qu'ils vont sacrifier la puissance du dépôt.Est-il possbile de réaliser GIT Workflow avec un contrôle d'accès avancé?

Répondre

1

Les autorisations au niveau du répertoire ne sont pas prises en charge dans git. L'accès est généralement contrôlé par quelque chose en dehors de git (ACL du système de fichiers, authentification du serveur web, permissions gérées par GitHub, GitLab, TFS, Bitbucket, ...) mais même là, un commit est une unité plus ou moins atomique et je n'ai jamais entendu parler de tout hôte git qui va essayer de fournir un contrôle d'accès dans un commit.

Si vous souhaitez que différents utilisateurs aient accès à différentes parties du projet, la seule solution que je puisse envisager est d'utiliser plusieurs repos. Si vous pouvez diviser cela le long des lignes de répertoire, vous pourrez peut-être configurer quelque chose avec des sous-arborescences ou des sous-modules afin que vous puissiez faire en sorte que votre repo "accès complet" tienne tout automatiquement. Ce ne sera pas transparent, mais vous pouvez probablement faire fonctionner quelque chose.

Si ce genre de division n'est pas réalisable, alors le problème est beaucoup plus grand. Dans ce scénario, la version X du projet complet est nécessairement un commit séparé par rapport à la version X du sous-ensemble de fichiers disponibles pour le développeur. Votre repo «accès complet» peut conserver les deux ensembles de validations, mais la synchronisation des changements entre les deux est toujours un exercice très important.

Vous pouvez imposer n'importe quel type de contrôles que vous voulez sur votre référentiel (en utilisant des crochets); mais si la règle est que le développeur ne peut pas voir ou même être conscient de certains fichiers, ce n'est pas quelque chose que vous ferez facilement avec git.

+0

Votre commentaire confirme mon point de vue. J'ai plus de temps avant de prendre une décision finale et je vais laisser la question ouverte jusqu'à ce que. Je vous remercie. – kanevbgbe

+0

Connaissez-vous un outil/chaîne d'outils pour y parvenir quel que soit git, même git peut être remplacé par un autre outil SCM, si un meilleur ajustement sur le but? – kanevbgbe