Contribuer à un projet hébergé sur GitHub

Date: 15/11/2011 | Catégories: Developpement,Open-source,Planet-libre | Tags: ,,

Le gestionnaire de version GIT semble prendre de plus en plus de place dans le petit monde des développeurs. Les qualités des services comme Gitorious ou GitHub y sont sûrement pour quelques choses. Il y a quelques temps, j'ai donc décidé de laisser tomber mon bon vieux serveur SVN et de migrer mes projets sur le service en ligne GitHub. Comme tous ces projets sont sous licences libres, l'hébergement sur GitHub est gratuit.

Quelques lecteurs voulant contribuer à la vie des ces développements m'ont demandé comment contribuer à un projet hébergé sous GitHub. Ce billet est là pour répondre à ces demandes !

Les deux premières étapes sont à suivre seulement la première fois que vous voulez contribuer à un projet. Les étapes suivantes sont par contre à faire à chaque contribution dans un nouveau projet.

1) Créer un utilisateur sous GitHub

C'est la première étape, s'enregistrer comme utilisateur sur le site GitHub. Il faut pour cela se rendre sur la page suivante puis renseigner le formulaire. A noter que ce compte vous servira à la fois pour contribuer à des projets existants mais également à héberger des projets sous licences libres (dans la limite de 300 Mo).

2) Enregistrer sa clé SSH

Afin de sécuriser la connexion vers serveurs GitHub, une clé SSH doit être générée et échangée entre votre PC et GitHub. On va donc commencer par générer une nouvelle clé SSH sur notre PC:

Note: remplacer utilisateur@domaine.com par l'adresse mail que vous avez utilisé lors de la création de l'utilisateur sur GitHub.

La commande suivante:

devrait afficher la clé fraîchement créée:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCn3BD+Kq9qdVQrRNf9CIWGHWHrYpygPbOjidGA/34TWcKKSY0QgUVl3CYBkBDMyTMRNoDnMcF5O4bpwUDx2uXPAlrjQnUAk/WvPdQ+Clcnv+H5jgaj0i6Gfw/WSRDopmGpey7B29UGifgYW3/1MacH7tb+6Q03phUPedcBd4LNN+iBAUSfSvesYXNWW9//Wl7xi3OT2qbLOBRCGF9nlvv1AXEAbCF8h3l4Bu9w0BeVpmSIekLqNZVasEvM/4MWj+E7ayVajCQC2tm4+mt7+0kVHW35PUDlRaW2mv9muuy2mvqtJ4aW+zoPd3sWADUGBLLASWhuqY2Gmh3LIN+2gq2l  utilisateur@domaine.com

Il faut ensuite se rendre sur votre interface d'administration de GitHub puis ajouter une nouvelle clé SSH associée à votre PC (Add another public key):

Puis copier/coller la clé SSH (le contenu du fichier  ~/.ssh/id_rsa.pub) dans le formulaire:

Pour tester que la clé a bien été prise en compte, il suffit de lancer les commandes suivantes depuis votre PC:

Si la clé fonctionne correctement, il reste a configurer les informations suivantes:

3) "Forker" le projet sur lequel vous voulez contribuer

Imaginons que vous vouliez contribuer sur le projet Nagisk (mon plugin Asterisk pour Nagios), il faut dans un premier temps se rendre sur sa page GitHub puis cliquer sur le bouton .

Cette première action va dupliquer ("fork") dans votre espace  GitHub, le contenu du projet Nagisk. Ce nouveau projet aura sa propre vie par rapport au projet initial.

Il faut ensuite récupérer le nouveau projet en local sur votre PC:

Note: Remplacer utilisateur par votre login GitHub.

Note 2: La dernière ligne va configurer le Git "source" (celui à partir duquel vous avez forké le projet) comme remote.

Il faut ensuite créer une branche dans laquelle vous aller faire vos développements:

Note: Choisissez une NOMDELABRANCHE qui colle à votre modification. Par exemple, si c'est une modification de bug, un nom du type PATCH_XXX avec XXX qui est égal au numéro de ticket (issue).

Il ne vous reste plus qu'à coder...

Une fois le phase de codage terminer, il faut mettre à jour la nouvelle version de votre projet avec les commandes suivantes:

Si il y a des conflits après la dernière commande, il faut les corriger puis poursuivre le rebase:

Votre projet "forker" est maintenant à jour. Reste à proposer votre modification au projet source.

4) Formuler votre demande de contribution

Pour cela il suffit d'appuyer  sur le bouton  (pour plus d'informations, voir ici la page officielle de l'action Pull Request)

La demande de modification va alors être proposée au responsable du projet source qui pourra, s'il le souhaite, l'inclure dans sa prochaine version.

En cadeau bonux, une feuille A4 contenant une liste non-exhaustive des commandes Git.

Sources: Blog Lorna Jane