Est-il possible de verrouiller des fichiers ou des répertoires individuels sur fork lors de l’utilisation de git?

Nous sums une équipe de plus de 60 développeurs travaillant sur le même produit et nous passons de SVN à Git et GitHub. Nous avons un processus dans SVN où les fichiers individuels sont verrouillés et chaque fois qu’un développeur veut valider du code, il doit le faire déverrouiller par le propriétaire du fichier. Trois d’entre nous sont propriétaires de plus de 150 fichiers. Le délocking est précédé d’une revue de code.

Dans Github, nous prévoyons d’utiliser le modèle Fork-Clone – chaque projet sur lequel travaille un groupe va faire un fork, chaque développeur va faire un clone de fork, écrire le code & commit à l’origine, le lead du fonctionnalité effectuera une requête de tirage vers l’amont.

Bien que cela semble aller bien, le problème est que lorsqu’un gros projet est livré, il apporte beaucoup de modifications à la révision et augmente ainsi la charge pour les propriétaires de fichiers. En outre, cela pourrait se produire dans les cycles de développement ultérieurs et le projet pourrait donc être compromis.

Une méthode que nous pensions pouvoir fonctionner est d’avoir des crochets lorsque la poussée de git est effectuée sur l’origine (fork). Il peut y avoir une dernière révision en amont.

Cependant, nous n’avons pas pu trouver d’extensions github ou de hooks identiques. Existe-t-il un moyen rapide (lire, extension existante) pour faire cela avec Github ou devrions-nous utiliser les mêmes hooks que nous utiliserions avec git?

Ce cas d’utilisation est l’une des raisons pour lesquelles Git est tellement mieux que SVN -> rebase ! Si vous suivez un bon stream de production, vous vous rebassez en amont avant de soumettre vos demandes de tirage. Vous n’avez pas besoin de vous soucier du locking et du piétinement de fichiers sur les commits et les conflits de fusion d’une autre personne, une rebase met de côté votre travail, applique les commits à distance et applique ensuite votre travail.

Je pense qu’il suffit de repenser votre processus et de compter sur les forces de git versus force pour ajuster un workflow Subversion au-dessus de git. Votre modèle “fork-clone” peut également nécessiter un autre aspect. Le plus souvent, chaque développeur a son propre fork, vous pouvez partager des repos via des télécommandes entre les équipes si vous le souhaitez. Mais les consortingbuteurs partageant la même origine mettent en place de mauvaises habitudes.

Gitflow est un stream de production très populaire, et Github a lui-même quelques bons conseils et partage son stream de travail .

Aucune chance, si le fichier n’est pas fusible et que vous ayez besoin de le verrouiller, utilisez une solution centralisée au lieu de GIT, c’est-à-dire SVN ou ClearCase.

Si vous utilisez git LFS (supporté par certains fournisseurs d’hébergement git, comme GitHub), vous pouvez utiliser le locking de fichiers .

Marquez un type de fichier comme verrouillable en modifiant le fichier .gitatsortingbutes :

 *.docx lockable # Make MS Word files lockable 

Et verrouillez-le avec:

 $ git lfs lock example.docx 

Vous pouvez déverrouiller vos fichiers avec git lfs unlock example.docx et ceux de quelqu’un d’autre en ajoutant --force .

Git ne fournit aucune fonctionnalité de locking, car elle est décentralisée. Toutefois, si vous hébergez votre code sur GitLab Enterprise Edition Premium , vous pouvez utiliser l’interface Web pour verrouiller des fichiers ou des dossiers individuels , en réalisant exactement ce que vous souhaitez.

Si vous ne souhaitez pas héberger votre projet sur le serveur de quelqu’un d’autre (son site Web), vous pouvez également télécharger GitLab et l’héberger sur votre propre serveur Web.

Pas exactement de locking, mais Github a introduit un concept appelé ” Propriétaires de code “. Vous permet de restreindre une partie de votre code pour autoriser uniquement les commits après examen par les propriétaires du code

Il n’y a aucun moyen de le faire dans Git. Comme d’autres l’ont dit, si le document est “fusible”, vous pouvez essayer de le reformuler, en changeant votre façon d’agir. Dans notre cas, nous avons une convention: si vous avez VRAIMENT besoin de la verrouiller, renommez-la. Mais nous ne faisons que de telles choses dans les documents de bureau, etc.
Cette dissortingbution ne donne pas de solution, c’est une solution de contournement (mais stackoverflow ne me permet pas d’append ceci en tant que commentaire).