====== Définition d'un workflow ======
===== Description =====
Il faudrait définir la façon dont les ajouts/modifications peuvent être faits au niveau du code, des datas et des assets graphiques, définir la façon dont on peut committer (histoire d'avoir des branches utiles et pas plein de scories qui trainent), peut-être une branche claire qui permette aux mainteneurs de paquets de savoir qu'ils peuvent s'appuyer dessus sans s'attarder sur les branches de développement.
==== Proposition de Dremor ====
=== Explications ===
Ma proposition se base sur Git, et son interface graphique GitLab, et le workflow Gitflow.
De ce fait, j'ai prévu d'avoir 4 branches principales :
- **Panka :** Branche stable
- **Lirria :** Branche de test (Béta)
- **Spofu :** Branche de développement (Alpha) <- C'est ici que l'on va faire nos modifications
- **Upstream :** Branche synchronisé avec Ryzomcore, qui nous servira à faire nos merges et cherry-pick.
Merge = on prend toutes le modifications.
Cherry-pick = on ne prend que certains commit, et pas d'autres.
Il y aura également des branche secondaires (propre à Gitflow) :
* Branches "**hotfix**/unFix" : corrections de bugs urgents, qui seront merge avec les 3 branches principales.
* Branches "**feature**/uneFeature" : travail sur les features propres à Khanat, requérant des modifications dans le code qui ne seront pas forcément envoyé à upstream (Ryzomcore)
Plus d'info sur GitFlow ici : http://danielkummer.github.io/git-flow-cheatsheet/index.fr_FR.html
Correspondances des branches :
* master = Panka
* release = Lirria
* develop = Spofu
=== Avantages / Inconvénients ===
Avantages :
* Plus de clarté (on n'a plus toutes les branches inutiles de Ryzomcore)
* Une interface graphique qui fait également la gestion des bugs, des merges, des milestones, etc.
* Gestion des droits plus aisé (et compatible LDAP)
* Des addons bien pratiques (CI, Wiki, etc...)
* Snippets (Bouts de codes hors dépôt)
* Gestion des archives des releases (plus facile à DL)
Inconvénients :
* Seulement en Anglais
* Développement un peu plus contraignants (fini de push sauvages ;-) )
=== Tâches ===
- Export des dépôts Mercurial vers Git **[OK]**
- Synchronisation manuel de Ryzomcore:develop avec Khaganat:upstream **[OK]**
- Synchronisation automatique de Ryzomcore:develop avec Khaganat:upstream **[En cours : test]**
- Mise en place d'une instance GitLab de test chez nous **[Planification]**
- Test de l'instance de test **[En attente]**
- Formation des contributeurs (s'appuyer sur les cours en ligne https://www.grafikart.fr/formations/git )
===== Qui travaille dessus ? =====
{{tag>pour:yannk}}
{{tag>pour:Dremor}}
===== Compétences demandées =====
* Connaissances de base de Mercurial, Git, ou tout autre système de gestion de version.
===== Difficulté estimée ou temps restant à y passer =====
===== Tâches liées =====
===== Commentaires =====
Dremor, qui s'occupe des paquets, aurait besoin de savoir où exactement obtenir les données à empaqueter, cela doit être défini clairement.
Une liste des branches serait également utile, avec des sandbox pour ceux qui veulent par exemple.
Enfin, il faudrait rédiger tout cela clairement et proprement pour faciliter et aider les contributions. Des schémas détaillés, des instructions claires et des notices sur les différents dépôts aideraient.
\\ C'est la page [[wkh>fr:recuperer_les_donnees|Recupérer les données : Mercurial, Git]] qu'il faudrait refaire
==== Éléments de réflexion ====
Pour réfléchir à l'usage (ou non) de GitFlow : Une [[http://endoflineblog.com/gitflow-considered-harmful|critique]] avec [[http://endoflineblog.com/follow-up-to-gitflow-considered-harmful|sa suite]]. Toute la question semble être de voir si on est plutôt 'merge' ou plutôt 'rebase' car cela affecte l'organisation générale (la première option = gitflow,la seconde donnant un historique plus linéaire). Il y a des éléments de réflexion à récupérer dans [[http://www.git-attitude.fr/2014/05/04/bien-utiliser-git-merge-et-rebase/|Bien utiliser Git merge et rebase]].
Il faut aussi tenir compte du fait que nous aurons une branche ''upstream'' qui sera issue du code Mercurial de Bitbucket pour récupérer les commits de RC.
==== Liens intéressants ====
Documentation possible sur Git:
* [[https://git-scm.com/book/fr/v2| Le lire de référence, en français]] (quelques parties demeurent en anglais) ;
* [[https://www.grafikart.fr/formations/git|Formation Git vidéo en ligne par GrafikArt]]
* [[https://www.gitkraken.com/|GitKraken]], un utilitaire graphique très complet pour Git (expliqué en français dans [[https://www.grafikart.fr/formations/git/gitkraken|une vidéo GrafikArt]]). Pas libre mais multiplateforme.
* [[http://www.git-attitude.fr/|Un site formation]] dédié à Git, avec la possibilité de faire des vrais stages pro de formation (avec les prix en fonciton), mais pas mal de tutos très techniques et très précis.
Documentation sur GitFlow:
* [[http://danielkummer.github.io/git-flow-cheatsheet/index.fr_FR.html|Une page récapitulant les commandes]] de façon claire et illustrée.
{{tag>statut:abandonnee}}