Git Flow

Features, releases et hotfixes sans l'extension git-flow, avec la même configuration.

Gitlo applique le modèle Git Flow avec des commandes git ordinaires. Il lit et écrit la même configuration que l’extension git-flow (gitflow.branch.* et gitflow.prefix.* dans .git/config), ce qui permet d’utiliser l’une ou l’autre sur le même dépôt.

Initialiser

Cliquez sur le bouton Flow de la barre d’outils, ou lancez Flow : initialiser / configurer Git Flow… depuis la palette. Choisissez la branche de production (main ou master), la branche de développement (develop), les préfixes (feature/, release/, hotfix/, bugfix/, support/) et le préfixe de tag (par exemple v).

Démarrer une branche

Lancez Flow : démarrer une feature / une release / un hotfix….

  • Pour une release ou un hotfix, Gitlo propose la version suivante d’après le dernier tag.
  • Une seule release peut être en cours à la fois, comme le prévoit Git Flow.

Publier

Flow : publier la branche courante pousse la branche (push -u), puis propose d’ouvrir une pull request (vers develop pour une feature).

Terminer

Flow : terminer la branche courante… ouvre une fenêtre qui affiche à l’avance les commandes exactes qui seront exécutées.

BrancheCe que fait « Terminer »
feature / bugfixmerge --no-ff (ou squash puis commit) dans develop
releasemerge dans la branche de production, tag annoté, puis merge du tag dans develop
hotfixcomme une release, mais le tag est fusionné dans la release en cours s’il y en a une, sinon dans develop

Options : terminer par une pull request plutôt qu’en local, squash, suppression de la branche locale et distante, push. Le tag est signé si commit.gpgsign est activé.

Vérifications

Avant de commencer, Gitlo vérifie que la copie de travail est propre, qu’aucune opération n’est en cours et que les branches ne sont pas en retard sur leur distant. Ces trois points sont bloquants. Les conflits prévisibles sont annoncés à l’avance (git merge-tree), sans bloquer.

Conflit et annulation

  • Si un merge produit un conflit, résolvez-le puis cliquez sur Continuer dans le bandeau : la finalisation reprend là où elle s’était arrêtée (Flow : reprendre la finalisation).
  • Une finalisation complète faite en local s’annule en une seule fois avec Ctrl Z, tag compris. En revanche, une finalisation reprise après un conflit, ou qui a fait un push, ne peut pas être annulée.