Fork me on GitHub
… ou une occasion d’apprendre

GitHub, vos dépôts distants pour Git

Posté le 7 mai 2008 à 17:41

Cet article fait suite à mon introduction à Git, si vous ne connaissez pas ce système de gestion de source, je vous conseille de la lire en premier.

Mon premier article expliquait comment créer un dépôt local, ce qui n’est naturellement pas suffisant pour travailler en collaboration avec d’autres personnes. Git est un système de gestion de sources décentralisé, il est assez simple de créer un dépôt distant afin de partager votre travail, que ce soit sur un de vos serveurs où en utilisant un service d’hébergement. GitHub (mon compte) est donc un de service offrant la possibilité d’héberger un dépôt distant pour vos projets agrémenter de fonctionnalités supplémentaires. Il existe bien entendu une version gratuite qui vous permettra de créer des projets publics dans un espace limité à 100 Mo, des plans payants (dès 7$ par mois) permettent d’augmenter cet espace mais également de bénéficier de dépôts privés (indispensable pour les entreprises il va de soit). Il est bien entendu possible de donner des accès en écriture aux dépôts publics et privés à d’autres comptes (qu’ils soient payants ou non) .

Le service vous crée une page de profile simple où vous pouvez afficher votre nom, email, entreprise, localisation et site internet. Cette page affichera également votre activité (commit, ajout de suivi, …) et vos dépôts. Vous pouvez également décider de recevoir les mises à jour (commit, comment) concernant un projet ou une personne, elles seront affichées sur votre page d’accueil avec la liste des projets afin d’y accéder plus rapidement. Vous avez également accès à un système de messagerie et de recherche de projet.

Les pages d’un projet commencent par une série d’onglet permettant de parcourir les sources (page par défaut), d’accéder à la liste des commits, un wiki, le network (voir ci-dessous), a la liste des watchers (personnes suivants le projet) et enfin, si vous êtes le propriétaire, un accès à l’administration. Une seconde série d’onglets donne accès au menu de la section (liste des branches et tags par exemple). On trouve ensuite boite contenant les informations de base sur le projet, celle-ci est présente sur toutes les pages et contient le nom du propriétaire et du projet, une série de bouton d’action (dont fork et pull request que nous verrons plus loin, ainsi que watch et download qui permet de télécharger une archive de la branche sur laquelle vous êtes). Suis une description, l’adresse du site du projet et enfin les adresse Git (public clone, private clone, push).

L’explorateur des sources est classique, mais bien réalisé, notez tout de même que si un fichier README est présent à la racine, il sera affiché sur la première page en dessous de l’arborescence et que si celui-ci à une extension du type rdoc par exemple, le contenu sera formaté. Il est aussi possible de laisser un commentaire sur un commit en particulier.

Revenons sur ce qui fait la force d’un système décentralisé et plus particulièrement sur son intégration dans GitHub qui en facilite et favorise grandement l’utilisation. Le bouton fork permet de créer un clone du projet dans votre compte (un peu comme si vous utilisiez la commande git clone en locale), vous allez donc pouvoir travailler sur votre propre branche d’un projet et en publier les modifications dans votre espace public très facilement. Quand vous faites ceci vous entrez dans le network du projet et c’est là que GitHub est également intéressant puisqu’il permet de retrouver les branches d’un projet maintenu par d’autres personnes assez facilement. Vous pouvez ensuite utiliser depuis votre dépôt (ou un commit en particulier) le bouton pull request afin de proposer au mainteneur de la branche d’origine (ou d’autres branches éventuellement) d’intégrer vos modifications. Précisons également que si vous faites un fork d’un projet privé auquel vous avez accès, il sera également privé chez vous et ceci sans que vous ayez besoin d’un compte payant.

C’est probablement ici qu’on sent la force de Git et de GitHub, en favorisant la collaboration et la participation.

Concrètement, comment mettre mon projet sur GitHub ?

Pour commencer il va vous falloir une clef ssh afin de vous connecter aux projets auxquels vous avez accès. Attention, une clef ne peut être utilisée que par une seule personne, c’est elle qui vous identifies en plus de vous authentifier. Je rappelle également que dans Git les commit sont signés par un nom et une adresse email et c’est grâce à celle-ci que vos commits seront liés à votre profil.

Pour créer une clef (avec MSysGit sous Windows le fonctionnement est le même que sous Linux, je ne fais donc aucune distinction dans la suite de l’article).

$ ssh-keygen -C yann.lugrin@... -t rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
c0:0c:27:7e:4b:c9:0d:f7:14:c2:de:78:54:0e:32:bb yann.lugrin@...

La passphrase est importante afin de protéger votre clef privée, si vous n’en mettez pas et qu’elle est utilisée par quelqu’un d’autre il pourra se connecter sans problème à votre compte. Voici à quoi ressemble une clef publique (il n’y a pas de retour à la ligne en réalité) :

$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1x36C/Aur4KYHAL6I2m3FRoc3ixPFO/+9+ITyeM3FdCP
zPJ5fyMyNy+vkZm9zpbCsxjVGAjCSpYfQ4ins+U3CVMgAJnpNLtTri9f5EswkwSTGNhFomwuGb1RZOeg
ZPX/oveY2qylS+aOBY8/W2sICTOKsVDTWShc3P/bAtLxxPq3VdX73x70cRW1yVPthRPcci4QRWMFkyCY
TLrmH8C7I2KGffU7NUm1RzW9ym34TapZI5UKRq3jCx3kmiUjYVyf1Qqo9Dk5Xn855Uvk0/CAZnITQsfP
mhMYwLcp7K2zD9WbnljTtVO3PDRU4HaXQOPR7gcgNTN/xMuZruEZUGPDnw== yann.lugrin@...

Maintenant vous pouvez créer un compte sur GitHub, votre username sera utilisé pour identifier votre profil et votre compte (il sert donc de préfixe à vos projets en quelque sorte). Comme je vous l’ai déjà dit votre adresse email permet de lier vos commits à votre profil (vous pourrez en ajouter d’autres plus tard si besoin) et enfin dans le champ SSH Public Key vous pouvez entrer le contenu du fichier id_rsa.pub (vous pouvez aussi en ajouter d’autres plus tard).

Créer un nouveau projet est simple, suivez le lien qui se trouve sur la droite de la page d’accueil une fois que vous êtes connecté. Donnez un nom à votre projet et éventuellement une description et l’adresse d’un site. Vous pouvez également définir s’il est public ou privé (si vous en avez le droit naturellement). La page suivante vous explique comment envoyer votre travail sur GitHub. Parant du principe que vous avez déjà un dépôt local, avec une console, allez dans le répertoire de celui-ci et en utilisant les informations données sur GitHub tapez les commandes suivantes :

$ git remote add origin git@github.com:yannlugrin/test.git
$ git push origin master
Enter passphrase for key '/home/yann/.ssh/id_rsa':
updating 'refs/heads/master'
  from 0000000000000000000000000000000000000000
  to   5ef08e8fc190c49a73a0eb246255b454a8a0f56b
 Also local refs/remotes/origin/master
Generating pack...
Counting objects: 26
Done counting 407 objects.
Deltifying 407 objects...
 100% (407/407) done
Writing 407 objects...
 100% (407/407) done
Total 407 (delta 192), reused 0 (delta 0)
refs/heads/master: 0000000000000000000000000000000000000000 -> 5ef08e8fc190c49a73a0eb246255b454a8a0f56b

La passphrase de votre clef vous sera demandée et vos précédents commits seront transmis vers votre dépôt sur GitHub, vous pouvez maintenant accéder à votre projet et y voir vos fichiers.

Pour créer un clone de votre projet en local (par exemple lors du fork d’un autre projet) vous pouvez utiliser la commande suivante :

$ git clone git@github.com:yannlugrin/test.git

ou pour un projet dont vous n’avez pas d’accès en écriture :

$ git clone git://github.com/yannlugrin/test.git

Vous pouvez maintenant continuer à travailler sur votre dépôt local, faire vos commits et régulièrement utiliser la commande git push pour mettre à jour GitHub ou git pull pour mettre à jour votre dépôt local.

$ git push origin
$ git pull origin master


OpenID, quel fournisseur choisir ?

Posté le 17 avril 2007 à 13:09

Suite à mon article sur OpenID j’ai créé un compte chez plusieurs fournisseurs d’identité choisi dans la liste du wiki de OpenID.net. J’ai volontairement évité ceux qui affichai une audience régional ou une langue que je ne comprend pas, voici ce que je peux en dire (ils sont dans le même ordre que dans la liste, ce n’est pas un classement) :

  • MyOpenID : Il est recommandé par le site OpenID.net, l’interface est sommaire mais va à l’essentiel. Ce service offre la possibilité d’avoir plusieurs « personnalités » et donc de pouvoir choisir les informations utilisé lors de notre enregistrement auprès d’un service utilisant OpenID, cette option est très agréable. Il y a également la page publique de l’identité mais il n’est pas possible de choisir les informations affichées et celle-ci n’est pas très présentable.
  • Videntity : Ce service permet de renseigner un grand nombre d’informations privées et professionnelles qu’il est possible d’afficher sur la page publique de l’identité. Les mise en forme proposées par défaut ne sont pas des plus agréables mais il est possible de modifier tout ceci par une feuille de style personnel. Il est possible de déclaré d’autres OpenID comme relation et de leur donner par là accès à nos informations privées. L’idée de ce service est bonne mais je regrette qu’il n’y ai pas quelques styles plus agréables et de ne pas pouvoir choisir les informations dévoilés à chaque contacts individuellement. Disponible en français.
  • GetOpenID.com : Celui-ci est extrêmement simplifié, vous ne pouvez spécifier que votre email, votre site et votre clef GPG publique si vous en avez une. La page publique de l’identité n’affiche ces informations que si vous l’avez autorisé. Ce service propose également un accès sécurisé à la page d’identité avec https.
  • TypeKey : Ce site est celui de Six Apart qui a contribué à la mise en place de OpenID et qui est derrière LiveJournal ou la plateforme de Blog MovableTpye entre autre. Là encore on va à l’essentiel mais le résultat graphique est agréable. Il est possible d’afficher des informations sur la page publique de l’identité (email, bio, blog, liste de sites, photo). Disponible en français.
  • MyLID.net : Ce site offre l’authentification par OpenID mais également son propre système, une fois enregistré je n’ai pas trouvé le moindre lien pour éditer mes informations et si l’idée de pouvoir envoyer des message signés est bonne il est regrettable qu’ils ne fournissent pas la clef privée pour une autre utilisation.
  • VeriSign’s PIP : Ce service est fourni par un acteur important de la sécurité sur internet et ceci peut donner confiance aux utilisateurs. La présentation est bonne et il est possible de renseigner un très grand nombre d’informations sur nous (il est même possible de créer de nouveaux champs). Ce service gère les personnalités multiples en choisissant les informations à y inclure, il est également possible de gérer les autorisations par personnalité. Pas de page publique ici. Il est possible de définir une autorisation pour un site jusqu’à une date précise ce qui est une bonne idée.
  • claimID.com : J’ai eu un compte sur ce site avant qu’il ne deviennent un fournisseur de service openID. Si le service d’authentification est très basique (pas de profile) la page associé à l’identité est très intéressante puisque elle permet de réunir des informations personnel mais également de pointer vers des sites qui peuvent compléter cette informations.
  • Sxipper : C’est une extension pour firefox qui est également un fournisseur de service. Cette extension que je n’utilise pas personnellement, est sensé permettre de faciliter le renseignement des formulaires en associant les champs de ceux-ci à votre profile.
  • OpenID France : Je signale ce site qui n’est pas encore ouvert car il est francophone.

Cette liste n’est pas exhaustive et il serait intéressant de faire un comparatif / test plus systématique de ceux-ci afin de pouvoir faire sont choix. A noté que j’utilise ce blog comme openID qui prévoie un système de meta tag permettant d’indiquer le serveur à utiliser et je pourrai donc changer de service quand je le désire.