Le contexte : Gitflow et Sourcetree
Dans le cadre de mes développements, j’utilise le logiciel Sourcetree couplé à la méthode Gitflow. Vous pouvez d’ailleurs consulter si cela vous intéresse le cheat sheet dédié à cette méthode.
À ce sujet, c’est une méthode qui me va très bien et je ne souhaite pas rentrer dans un débat pour savoir si il y en a une meilleure ou si elle est moins bien qu’une autre, ce n’est pas le sujet de ce petit article.
Le problème : Gitflow déraille
J’ai eu récemment, dans le cadre du tutoriel sur Nuxt.js et Adonis.js, un problème pas très, important mais tout de même gênant.
En effet, l’interface graphique de Gitflow ne se rappelait pas des features, des releases ou des hotfix que j’avais initié.
À vrai dire, sans que je n’initie aucun de ces trois items, il me proposait cette fenêtre directement :

En regardant plus attentivement, on se rend compte qu’en état courant (current state), il considère la branche develop comme une feature… et me propose donc de terminer cette feature 😉
Première piste : le fichier de configuration de Sourcetree
J’ai donc mis direct les main dans le cambouis :
> nano .git\sourcetreeconfig.json
nano m’a proposé ce fichier :
{
"$id": "1",
"AutoRefresh": true,
"AutoRefreshRemotes": true,
"CommitTextLinks": null,
"DraftCommitMsg": "",
"IncomingSavedCount": 0,
"LastCheckedRemotes": "2019-08-08T11:16:45.9545453+02:00",
"LastUsedView": 0,
"LogBranchFilterIndex": 0,
"OutgoingSavedCount": 0,
"SidebarExpandedItems": [
"Branches",
"Stashes"
],
"SidebarWidth": 210.0,
"SubtreeLinks": [],
"RemoteProjectLinks": []
}
En bref, on voit rapidement que rien ne nous aidera dans ce fichier. [CTRL] + [x] et on en parle plus !
Piste numéro 2 : le fichier de configuration de Git
Ainsi à nouveau, j’utilise Nano pour aller voir de quoi il retourne :
> nano .git\config
et voici ce qu’il m’affiche :
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = https://github.com/itanea/meetthecoders.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[gitflow "branch"]
master = master
develop = develop
[gitflow "prefix"]
feature =
bugfix =
release =
hotfix =
support =
versiontag =
[gitflow "path"]
hooks = C:/laragon/www/meetthecoders/.git/hooks
[branch "develop"]
remote = origin
merge = refs/heads/develop
Et là on se rends compte que potentiellement quelque chose ne va pas.
Effectivement, la section gitflow « prefix » semble assurément un peu trop vide à mon goût !
En réalité, en cherchant un peu, on trouve les valeurs par défaut à utiliser.
Aussitôt lu, aussitôt appliqué, notre fichier .git\config devient :
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = https://github.com/itanea/meetthecoders.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[gitflow "branch"]
master = master
develop = develop
[gitflow "prefix"]
feature = feature/
bugfix =
release = release/
hotfix = hotfix/
support = support/
versiontag =
[gitflow "path"]
hooks = C:/laragon/www/meetthecoders/.git/hooks
[branch "develop"]
remote = origin
merge = refs/heads/develop
Je sauvegarde le fichier et je relance Sourcetree tout en psalmodiant quelques vers interdits du Necronomicon !
Et là effectivement, tout est rentré dans l’ordre, la branche develop n’est plus vue comme une feature. Lors du clic sur le bouton Gitflow dans Sourcetree (en haut à droite), j’ai bien la bonne fenêtre modale qui me propose les bons choix.

Conclusion
Pour conclure, il faut toujours faire l’effort se rapprocher des documentations (RTFM) officielles ou non d’ailleurs. Parfois, il est possible de trouver une solution à un problème non traité par la documentation officielle dans des blogs peu connus ou encore d’autres sources.
J’espère que ce petit article pourra aider quelques personnes qui pourraient rencontrer le même problème.
Enfin, n’hésitez pas à me faire de vos remarques dans les commentaires ci-dessous.