Contribuer au code de Framasoft avec Git
Préparer le terrain
Il ne faut pas bosser directement sur le dépôt principal. On ne doit travailler que sur un fork personnel avec des branches.
- Et cliquer sur le bouton
Fork repository
à droite sur la page du projet. - Cloner ensuite en local le dépôt du fork :
git clone https://git.framasoft.org/[votre login]/framavectoriel.git
- Lier l'espace de travail local (« origin ») avec le dépôt officiel (« upstream ») :
git remote add upstream git@git.framasoft.org:framasoft/framavectoriel.git
Développer
- Pour commencer à développer, il faut au préalable ouvrir une issue sur le dépôt framasoft si l'objet des modifications n'y figure pas déjà. Il s'agit de suivre qui fait quoi, garder une trace du travail de chacun et éviter de se marcher sur les pieds.
- Ensuite, créer une branche correspondant à la résolution de l'issue :
git checkout -b issue-12-update-svg-editor
- Modifier, ajouter, supprimer, traduire, coder… et faire son ou ses commits
git commit -m "Issue #12: blablabla"
- Quand l'issue est résolue, envoyer la branche sur son dépôt :
git push origin issue-12-update-svg-editor
- Enfin, sur Gitlab, faire une demande de
merge
en cliquant sur le boutonCreate Merge Request
Maintenir à jour
Lorsqu'un admin a mergé les pulls requests dans la branche master du dépôt officiel, il faut ensuite mettre à jour son propre dépôt pour pouvoir continuer à travailler dessus.
- Pour re-récupérer le dépôt officiel en local
git pull upstream master
- Pour ré-uploader la branche master sur son dépôt
git push origin master
Supprimer une branche
Ce n'est pas indispensable mais pour supprimer la branche issue-12-update-svg-editor
:
- sur Gitlab, se rendre sur
https://git.framasoft.org/[votre login]/framavectoriel/branches
et cliquer sur la corbeille.
- en local, basculer sur master :
git checkout master
puis
git branch -D issue-12-update-svg-editor
Ajouter les modifications survenues entre temps
Si une branche est en cours de développement et que la branche master officielle a été modifiée entre temps alors il faudra faire un rebase
:
- Rebasculer sur sa branche master
git checkout master
- Mettre à jour
git pull upstream master
- Rebasculer sur la branche de travail
git checkout issue-13-translation-svg-editor
- Intégrer les modifications
git rebase master
Après un rebase, il est obligatoire de forcer avec -f
quand on veut pusher, donc
git push -f origin issue-13-translation-svg-editor