48 votes

git flow - Comment interrompre le développement d'une fonctionnalité pour travailler sur une autre ?

Je suis novice en matière de git et de git flow. J'ai lu les différentes pages, blogs et questions de stackoverflow à ce sujet, et je les utilise dans mon développement quotidien.

Mais il y a un problème qui me préoccupe, je n'arrive pas à le comprendre. Je sais que les branches de fonctionnalités sont censées être petites, vous commencez une fonctionnalité, vous en codez une partie, puis vous terminez la fonctionnalité. C'est un événement quotidien, je le comprends. Nous nous assurons simplement que notre branche de développement est toujours constructible.

Mais que se passe-t-il lorsque je suis au milieu d'une fonctionnalité, qu'elle n'est pas prête à être terminée, mais que les priorités de travail changent ? J'aimerais pouvoir passer à une autre fonctionnalité.

Par exemple, je lance une nouvelle fonctionnalité.

$ git flow feature start yak-Speedup

J'écris du code, je soumets des fichiers, etc... et j'avance bien sur le projet. Mais maintenant je dois changer ce sur quoi je travaille, principalement parce que j'ai besoin d'une ressource qui n'est pas disponible et le codeur du serveur ne l'aura pas prête avant un jour ou deux. Je ne peux pas terminer la fonctionnalité parce que cela va casser la branche de développement.

J'aimerais faire quelque chose comme ça :

$ git flow feature pause yak-Speedup
$ git flow feature start alpaca-Sheering
#write code
$ git flow feature finish alpaca-Sheering
$ git flow feature resume yak-Speedup

En effet, l'existence de la commande "git flow feature list" implique que je puisse avoir plusieurs fonctionnalités en cours en même temps. Mais je ne vois pas comment créer ou passer d'une fonctionnalité à l'autre. En fait, je commence à penser que ce n'est pas du tout un problème de git flow, mais un problème de git.

J'apprécie toute aide. Merci !

49voto

Dan Cruz Points 7016

Vous n'avez pas besoin de la git flow feature pause yak-Speedup ( feature pause n'existe pas de toute façon). La commande que vous voulez utiliser à la place de git flow feature resume yak-Speedup es git flow feature checkout yak-Speedup qui vous remettra sur la yak-Speedup pour continuer le développement.

Exécuter git flow affichages :

Try 'git flow <subcommand> help' for details.

Et l'exécution git flow feature help affichages :

usage: git flow feature [list] [-v]
       git flow feature start [-F] <name> [<base>]
       git flow feature finish [-rFk] <name|nameprefix>
       git flow feature publish <name>
       git flow feature track <name>
       git flow feature diff [<name|nameprefix>]
       git flow feature rebase [-i] [<name|nameprefix>]
       git flow feature checkout [<name|nameprefix>]
       git flow feature pull <remote> [<name>]

8voto

giulio Points 2846

J'utilise git en combinaison avec git flow

git flow feature start foo  <<== start
#code, hack and COMMIT
git checkout develop        <<== go back to develop branch.. 
git flow feature start foo2 <<== start a new feature
#code, hack and COMMIT
git checkout feature/foo    <<== go back to foo. NB: using full branch name

En revenant à develop, je m'assure que je suis indépendant de foo et que je n'utilise que develop. Je peux également effectuer toute fusion de development s'il y a eu des commits d'autres fonctionnalités à ce moment-là.....

0voto

fge Points 40850

Ce que vous voulez, ce sont des branches :

git branch feature1 <startingpoint>
git checkout feature1
# hack hack hack, commit commit commit
git branch feature2 <startingpoint>
git checkout feature2
# hack hack hack, commit commit commit
# Oops, urgent request comming in, must switch to stable and patch
git stash
git checkout stable
# patch, commit, push
# back to feature2
git checkout feature2
git stash pop

etc etc. Les branches sont faites pour ça.

Et une fois que vous savez que votre fonctionnalité est bonne, fusionnez dans dev et poussez.

0voto

Adam Dymitruk Points 34999

Utilisez un modèle plus explicite. C'est le flux git amélioré sans commandes supplémentaires :

https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

L'important ici est que vous ne fassiez pas démarrer la fonction 2 à partir de la fonction 1.

J'espère que cela vous aidera.

UPDATE

J'ai écrit un blog à ce sujet. J'espère que c'est un peu plus clair :

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X