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:

cd ~/.ssh

mkdir backup

cp id_rsa* backup

rm id_rsa*

ssh-keygen -t rsa -C "utilisateur@domaine.com"

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:

cat ~/.ssh/id_rsa.pub

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:

# ssh -T git@github.com

Hi USER! You've successfully authenticated, but GitHub does not provide shell access.

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

$ git config --global user.name "Prenom Nom"

$ git config --global user.email "utilisateur@domaine.com"

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:

git clone git@github.com:utilisateur/nagisk.git

cd nagisk

git remote add upstream git://github.com/nicolargo/nagisk/symfony.git

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:

git checkout -b NOMDELABRANCHE

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:

git checkout master

git fetch upstream

git merge upstream/master

git checkout NOMDELABRANCHE

git rebase master

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

git add ... # Liste des fichiers modifiés lors de la correction

git rebase --continue

$ git push origin NOMDELABRANCHE

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

Partager ce billet





WordPress » Erreur

Il y a eu une erreur critique sur ce site.

En apprendre plus sur le débogage de WordPress.