1. Contribuer étape par étape¶
Note
Bien que la documentation de QGIS soit utilisée pour expliquer le processus, toutes les commandes et étapes montrées en-dessous sont également applicables au site web de QGIS (dans le dépôt QGIS-Website).
Si vous lisez ces lignes, c’est sûrement parce que vous souhaitez contribuer à écrire la documentation de QGIS et cherchez un guide pratique. Vous êtes au bon endroit! Ce document vous guidera à travers les différentes façons d’atteindre cet objectif, vous indiquant les étapes principales, les astuces que vous pouvez utiliser et les pièges dont vous devez vous méfier.
Pour toute aide, n’hésitez pas à demander dans un commentaire sur le rapport de problème que vous essayez de corriger ou à écrire dans la liste QGIS-community-team. Plus de détails sur Participez à la documentation.
Plongeons-nous maintenant dans le processus.
Les sources de documentation sont stockées à l’aide du système de contrôle de version git et sont disponibles sur GitHub à l’adresse https://github.com/qgis/QGIS-Documentation. Il existe deux façons principales, non mutuellement exclusives, de modifier les fichiers:
1.1. Utiliser l’interface web de GitHub¶
L’interface web de GitHub vous permet de faire comme suit:
éditer des fichiers
prévisualiser et valider vos changements
Créer une pull request pour ajouter vos modifications dans le répertoire principal.
Créer, mettre à jour ou supprimer des branches
Si vous n’êtes pas encore familier avec le vocabulaire git et GitHub, vous pouvez lire le projet Hello-world de Github pour apprendre un vocabulaire de base et les actions qui seront utilisées ci-dessous.
Note
Si vous corrigez un problème signalé
Si vous comptez apporter des corrections à un signalement, ajoutez un commentaire au rapport d’erreur afin de vous le faire assigner. Ceci empêchera que plus d’une personne travaille sur la même erreur.
1.1.1. 1. « Forker » QGIS-Documentation¶
Dans l’hypothèse où vous avez déjà un compte GitHub, il vous faudra d’abord cloner les fichiers source de la documentation.
Naviguez vers la page QGIS-Documentation repository et cliquez sur le bouton en haut à droite.
Dans votre compte GitHub, vous trouverez un dépôt pour la documentation QGIS (https://github.com/<YourName>/QGIS-Documentation
). Ce dépôt est une copie du dépôt QGIS-Documentation officiel où vous avez un accès complet en écriture et vous pouvez apporter des modifications sans affecter la documentation officielle.
1.1.2. 2. Faire des changements¶
Il y a différentes façons de contribuer à la documentation QGIS. Bien que nous les exposions ci-dessous séparément, vous pouvez passer d’un processus à l’autre sans risque.
1.1.2.1. Alternative 1: Utiliser le lien Edit on GitHub
¶
Chaque page de la documentation QGIS peut être modifiée rapidement et facilement en cliquant sur le lien Edit on GitHub
en haut à droite de celle-ci.
Cela ouvrira le fichier dans la branche
qgis:master
avec un message en haut de la page vous indiquant que vous n’avez pas accès en écriture à ce dépôt et vos modifications seront appliquées à une nouvelle branche de votre dépôt.Faites vos changements. Étant donné que la documentation est écrite à l’aide de la syntaxe reStructureText, en fonction de vos modifications, vous devrez peut-être vous baser sur les Recommandations pour la documentation.
Lorsque vous avez terminé, faites un bref commentaire sur vos modifications et cliquez sur Propose changes. Cela va générer une nouvelle branche (
patch-xxx
) dans votre dépôt.Après avoir cliqué sur Propose changes github accède à la page Comparing changes (Comparaison des modifications).
Si vous avez terminé d’apporter des modifications, passez à Partagez vos modifications dans la section Partager les changements via une Pull Request ci-dessous.
S’il y a des changements supplémentaires à effectuer avant de les soumettre à QGIS, suivez ces étapes :
Accédez à votre fork de documentation QGIS (
https://github.com/<YourName>/QGIS-Documentation
)Cliquez sur et recherchez la branche
patch-xxx
. Sélectionnez cette branche de patch. Le bouton va maintenant dire Branch: patch-xxxPassez à la section Modifier des fichiers ci-dessous.
Note
Le lien Edit on GitHub
est aussi accessible depuis le menu déroulant au bas de la barre verticale à gauche de chaque page.
1.1.2.2. Alternative 2 : Créer une branche ad hoc dans votre dépôt de documentation¶
Vous pouvez modifier des fichiers directement à partir de votre fork de la documentation QGIS.
Cliquez sur dans le coin supérieur gauche de votre dépôt QGIS-Documentation forké et entrez un nom unique dans le champ de texte pour créer une nouvelle branche. Le nom de la nouvelle branche doit être lié au problème que vous souhaitez résoudre. Le bouton devrait maintenant indiquer Branch: nom_branche
Astuce
Faites vos changements dans une branche ad hoc, jamais dans la branche **``master``
Par convention, évitez de faire des changements dans votre branche master
sauf lorsque vous fusionnez les modifications de la branche master
de qgis/QGIS-Documentation
dans votre copie du dépôt QGIS-Documentation. Des branches distinctes vous permettent de travailler sur plusieurs problèmes en même temps sans interférer avec d’autres branches. Si vous faites une erreur, vous pouvez toujours supprimer une branche et recommencer en en créant une nouvelle à partir de la branche principale.
1.1.3. 3. Modifier des fichiers¶
Parcourez les fichiers source de votre fork de QGIS-Documentation jusqu’au fichier à modifier
Procédez à vos modifications en suivant les règles d’écriture.
Lorsque vous avez terminé, accédez au cadre Valider les modifications au bas de la page, faites un bref commentaire sur vos modifications et cliquez sur : guilabel:Valider les modifications pour valider les modifications directement dans votre branche. Assurez-vous que Valider directement dans la branche nom_branche. est sélectionné.
Répétez les étapes précédentes pour tout autre fichier qui doit être mis à jour pour résoudre le problème
1.1.5. 5. Supprimez votre branche fusionnée¶
Vous pouvez supprimer la branche une fois vos modifications fusionnées. La suppression d’anciennes branches vous évite d’avoir des branches inutilisées et obsolètes dans votre dépôt.
1.2. Utiliser les outils de ligne de commande Git¶
L’interface Web GitHub est un moyen facile de mettre à jour le dépôt de documentation QGIS avec vos contributions, mais elle ne propose pas d’outils pour :
regroupez vos commits et nettoyez votre historique des changements
résoudre les conflits possibles avec le dépôt principal
construire la documentation pour tester vos modifications
Vous devez installer git sur votre disque dur afin d’avoir accès à des outils plus avancés et plus puissants et avoir une copie locale du dépôt. Certaines notions de base dont vous aurez souvent besoin sont exposées ci-dessous. Vous trouverez également des règles à respecter même si vous optez pour l’interface Web.
Dans les exemples de code ci dessous, les lignes commençant par $
représente les commandes que vous aurez à taper, alors que les #
sont des commentaires.
1.2.1. Dépôt local¶
Vous êtes maintenant prêt à obtenir un clone local de votre dépôt de documentation QGIS.
Vous pouvez cloner votre dépôt QGIS à l’aide de l’URL Web comme suit :
# move to the folder in which you intend to store the local repository
$ cd ~/Documents/Development/QGIS/
$ git clone https://github.com/<YourName>/QGIS-Documentation.git
La ligne de commande précédente n’est qu’un exemple. Il faut adapter le chemin et l’URL du dépôt en remplaçant <YourName>
par votre nom d’utilisateur.
Vérifiez les points suivants :
# Enter the local repository
$ cd ./QGIS-Documentation
$ git remote -v
origin https://github.com/<YourName>/QGIS-Documentation.git (fetch)
origin https://github.com/<YourName>/QGIS-Documentation.git (push)
$ git branch
* master
origin est le nom du dépôt distant de votre dépôt QGIS-Documentation.
master est la branche principale par défaut. Vous ne devriez jamais l’utiliser pour vos contributions ! Jamais!
Vous pouvez également cloner votre dépôt QGIS à l’aide du protocole SSH :
# move to the folder in which you intend to store the local repository
$ cd ~/Documents/Development/QGIS/
$ git clone git@github.com:<YourName>/QGIS-Documentation.git
Astuce
Permission denied (publickey) error?
Si vous obtenez une erreur Autorisation refusée (publickey) avec l’ancienne commande, il peut y avoir un problème avec votre clé SSH. Voir Aide GitHub pour plus de détails.
Vérifiez les points suivants si vous avez utilisé le protocole SSH:
# Enter the local repository
$ cd ./QGIS-Documentation
$ git remote -v
origin git@github.com:<YourName>/QGIS-Documentation.git (fetch)
origin git@github.com:<YourName>/QGIS-Documentation.git (push)
$ git branch
* master
Vous pouvez commencer à travailler ici, mais à long terme, vous obtiendrez beaucoup de problèmes lorsque vous pousserez votre contribution (appelée Pull Request dans le processus github) car la branche principale du dépôt qgis/QGIS-Documentation divergera de votre dépôt local / distant. Vous devez ensuite suivre le dépôt distant principal et travailler avec les branches.
1.2.2. Ajoutez un autre dépôt distant¶
Pour pouvoir suivre l’avancement du travail réalisé sur le projet principal, ajoutez un nouveau dépôt distant dans votre dépôt local. Ce nouveau dépôt distant sera le dépôt QGIS-Documentation du projet QGIS :
$ git remote add upstream https://github.com/qgis/QGIS-Documentation.git
$ git remote -v
origin https://github.com/<YourName>/QGIS-Documentation.git (fetch)
origin https://github.com/<YourName>/QGIS-Documentation.git (push)
upstream https://github.com/qgis/QGIS-Documentation.git (fetch)
upstream https://github.com/qgis/QGIS-Documentation.git (push)
De même, vous pouvez utiliser le protocole SSH pour ajouter un dépôt distant dans votre dépôt local :
$ git remote add upstream git@github.com:qgis/QGIS-Documentation.git
$ git remote -v
origin git@github.com:<YourName>/QGIS-Documentation.git (fetch)
origin git@github.com:<YourName>/QGIS-Documentation.git (push)
upstream git@github.com:qgis/QGIS-Documentation.git (fetch)
upstream git@github.com:qgis/QGIS-Documentation.git (push)
Désormais, vous avez le choix entre deux dépôts distants :
origin pour « pousser » votre branche locale dans votre dépôt distant
upstream pour fusionner (si vous avez les droits pour le faire) votre contribution avec le dépôt officiel OU pour mettre à jour votre branche « master » sur le dépôt local à partir de la branche « master » du dépôt officiel.
Note
upstream est juste un intitulé, une sorte de nom standard, mais vous pouvez l’appeler comme vous voulez.
1.2.3. Mettez à jour votre branche de base¶
Avant de travailler sur une nouvelle contribution, vous devez toujours mettre à jour votre branche principale dans votre dépôt local. En supposant que vous souhaitiez apporter des modifications à la documentation de test, exécutez les lignes de commande suivantes :
# switch to master branch (it is easy to forget this step!)
$ git checkout master
# get "information" from the master branch in the upstream repository
# (aka qgis/QGIS-Documentation's repository)
$ git fetch upstream master
# merge update from upstream/master to the current local branch
# (which should be master, see step 1)
$ git merge upstream/master
# update **your** remote repository (aka <YourName>/QGIS-Documentation)
$ git push origin master
Vous avez maintenant vos dépôt locaux et distants qui ont tous deux leur branche master
à jour avec la branche master
officielle de la documentation QGIS. Vous pouvez commencer à travailler sur votre contribution.
Note
Changez de branche si vous souhaitez contribuer au document publié
En parallèle de la documentation de test, nous continuons à résoudre les problèmes de la dernière version, ce qui signifie que vous pouvez également y contribuer. Suivez l’exemple de code de la section précédente, en remplaçant master
par la branche correspondante de la dernière documentation.
1.2.4. Contribuez dans votre branche de production¶
Maintenant que la branche de base est mise à jour, il vous faut créer une branche spéciale pour accueillir vos modifications. Ayez le réflexe de toujours travailler sur une branche autre que celle de base - souvent la master! Toujours!
# Create a new branch
$ git checkout -b myNewBranch
# checkout means go to the branch
# and -b flag creates a new branch if needed, based on current branch
# Let's check the list of existing branches (* indicates the current branch)
$ git branch
master
release_2.18
...
* myNewBranch
# You can now add your contribution, by editing the concerned file(s)
# with any application (in this case, vim is used)
$ vim myFile
# once done
$ git add myFile
$ git commit
Quelques remarques à propos des commandes de commit/push :
essayez de ne « commiter » qu’une seule contribution (changement atomique). En d’autres termes, n’adressez qu’une seule erreur à la fois.
essayez d’expliquer avec soin ce que vous avez modifié dans le titre de votre commit et dans la description. La première ligne est un titre, doit commencer par une lettre majuscule, devra contenir 80 caractères au maximum et ne devra pas se terminer par un
.
. Soyez concis. Votre description peut être plus longue et se termine par un.
. Vous pouvez y donner plus de détails.utilisez un
#
avec un nombre pour faire référence à un problème. Préfixez avecFix
si vous fixez le ticket: votre commit fermera le ticket.
Maintenant que vos modifications sont sauvegardées et intégrées dans votre branche locale, il va falloir les envoyer sur le dépôt en ligne, afin de pouvoir créer des pull-requests:
$ git push origin myNewBranch
1.2.6. Nettoyez votre dépôt local et distant.¶
Une fois que votre PR a été fusionnée dans le dépôt officiel QGIS-Documentation, vous pouvez supprimer votre branche. En effet, si vous contribuez souvent, vous vous retrouverez d’ici quelques semaines avec un nombre considérable de branches inutilisées. Du coup, gardez votre dépôt propre de cette façon :
# delete local branch
$ git branch -d myNewBranch
# Remove your remote myNewBranch by pushing nothing to it
$ git push origin :myNewBranch
Et n’oubliez pas de mettre à jour la branche master
dans votre dépôt local!
1.3. Pour aller plus loin¶
Outre l’interface Web Github et les outils de ligne de commande git exposés ci-dessus, il existe également des applications GUI que vous pouvez utiliser pour créer et gérer vos contributions à la documentation.
Lorsque les modifications de la demande d’extraction sont en conflit avec des modifications récentes transmises à la branche cible, les conflits doivent être résolus avant qu’une fusion ne soit possible:
si le conflit concerne quelques lignes concurrentes, un bouton Résoudre les conflits est disponible dans la page de demande d’extraction Github. Appuyez sur le bouton et résolvez le problème comme expliqué sur https://help.github.com/articles/resolving-a-merge-conflict-on-github/
si le conflit implique le renommage ou la suppression de fichiers, vous devrez résoudre le conflit à l’aide des lignes de commande git. En règle générale, vous devez d’abord rebaser votre branche sur la branche cible à l’aide de l’appel
git rebase targetBranch
et corriger les conflits signalés. En savoir plus sur https://help.github.com/articles/resolving-a-merge-conflict-using-the-command-line/
Parfois, à la fin du processus de relecture, vous pouvez vous retrouver avec des modifications divisées en plusieurs validations qui n’en valent pas nécessairement la peine. Les lignes de commande Git vous aident à écraser ces validations en un nombre plus petit et en des messages de validation plus significatifs. Quelques détails sur https://help.github.com/articles/using-git-rebase-on-the-command-line/