Un workflow Git correct pour la twig d’entités partagées?

J’essaie de trouver le bon workflow pour cette situation:

Sur le repo partagé, nous avons ces twigs:

-master -feature 

La twig de fonctionnalité est une twig partagée , car de nombreux développeurs travaillent ensemble sur une nouvelle fonctionnalité. Ils poussent activement leurs modifications à la twig des fonctionnalités.

J’essaie d’éviter le «conflit d’enfer» pour le jour où cette fonctionnalité sera finalement fusionnée en master . Actuellement, je vois quelques options:

1) Fusionner activement le maître en fonctionnalité et le faire souvent. Cependant, cela n’est pas recommandé dans les docs git, et je commence à voir pourquoi. Lorsque j’essaie cela, il semble que je répare les mêmes conflits encore et encore.

2) Utilisez le rebase d’une manière ou d’une autre. J’ai lu à ce sujet, mais il semble que cela ne fonctionnera pas puisque la twig de fonctionnalité est réellement partagée. Il suffit d’un seul développeur pour faire 2 rebases, et d’autres développeurs pourraient avoir des conflits avec un historique incompatible.

3) Transformez la twig des fonctionnalités en une twig d’intégration et demandez aux développeurs d’utiliser leurs propres twigs d’entités indépendantes avec un rebasage pour garder les choses saines.

4) Quelque chose de complètement différent?

Pour une twig partagée, j’irais avec # 3 et l’utiliserais comme une twig “d’intégration” pour consolider leur travail.
Les développeurs devraient utiliser rebase pour relire en permanence leur twig private par-dessus la feature avant de fusionner leur travail pour qu’ils soient:

  • résoudre localement tout conflit de fusion (dans leur propre repo)
  • faire la fusion finale (de leur twig private à feature ) une opération sortingviale (normalement en avance rapide)

(comme décrit dans ” git rebase vs. merge ” réponse)

L’idée est que, une fois feature twig doit être fusionnée dans master , plus aucune consortingbution n’est acceptée sur l’ feature (la twig est “gelée”), et vous pouvez la rebaser en premier sur le master ou la fusionner directement en master .
Et puis, vous lancez une nouvelle twig (qui peut démarrer en parallèle de la twig précédente si nécessaire)

Vous pouvez utiliser rerere pour gérer les conflits de fusion que vous voyez plusieurs fois.

(Je ne suis pas très intéressé par les options 1, 2 ou 3, alors j’essaie de trouver un meilleur workflow; je décris donc ci-dessous comment je pense aborder le problème dans l’espoir que quelqu’un me conseille)

  1. Transformez la twig de fonctionnalités dans une queue de correctifs à l’aide de l’un des outils de la queue de correctifs git.
  2. Utiliser un référentiel git distinct pour contrôler la version de la queue des correctifs
  3. Utilisez les approches habituelles de git pour collaborer sur la queue des correctifs.

Il peut être judicieux que les utilisateurs réinstallent localement la queue des correctifs dans une twig.

Workflow Git pour la twig Feature

Le processus est le suivant: –

Première fois:

 git pull git checkout -b sprint-4 git pull origin sprint-4 
  • Les commandes ci-dessus vont extraire tous les fichiers de git

  • Fera une twig avec le nom sprint-4 sur notre machine locale.

  • Tirera les fichiers du serveur vers notre twig sprint-4.

Pour chaque nouvelle fonctionnalité: –

 git checkout -b , example: git checkout -n fer-181 git push -u origin :, example git push -u origin fer-181:fer-181 
  • Créez une twig distante pour cette twig locale sur le serveur.
  • Poussera les fichiers de notre twig locale vers la twig distante.

Quotidien: (sur votre twig)

 git pull git merge dev 
  • résoudre les conflits le cas échéant
  • faites votre travail pour la journée

    git push origine

La fonctionnalité est complète:

 git pull git merge dev 

résoudre les conflits le cas échéant

 git checkout dev git merge  git push origin dev 
  • Les commandes ci-dessus fusionneront les fichiers de la twig principale dans notre twig de fonctions.
  • Résolvez les conflits dans notre twig de fonctions, le cas échéant.
  • Fusionnez les fichiers de la twig de fonctions vers la twig principale.