Fork me on GitHub
… ou une occasion d’apprendre

Git, une petite introduction

Posté le 6 mai 2008 à 12:47

Après la migration de Ruby on Rails depuis Subversion vers Git, un grand nombre de plugins ont suivi ce chemin (y compris Globalize dont la migration est aussi effective). Si, dans un premier temps, je n’étais pas très chaud pour utiliser ce gestionnaire de source, l’ouverture de GitHub et un petit peu de pratique m’ont fait réviser mon jugement (sans oublier le fait qu’il y a maintenant une solution facile d’installation sous Windows). Je ne vais pas débattre du choix de Git plutôt que Mercurial ou un autre gestionnaire de la même famille, ni du bien fondé d’abandonner Subversion. Un mouvement est initié dans la communauté Rails, ce n’est sûrement pas un hasard, alors essayons d’en comprendre les avantages et d’en profiter s’ils nous conviennent.

Avant d’entrer dans le vif du sujet, je rappelle que je découvre Git actuellement, et que cet article peut contenir des imprécisions, voir quelques âneries (ne pas hésiter à me les signaler). Cependant, il ne contient aucun Troll, ce n’est pas parce que je décris quelques choses que je prétends que c’est la solution parfaite ou qu’elle n’est pas disponible ailleurs, c’est simplement un choix.

Git ?

Linus Torvalds, créateur de Linux, a commencé l’écriture de Git en avril 2005 afin de remplacer le logiciel BitKeeper. Cet outil propriétaire étais utilisé jusque là pour la gestion des sources du Kernel Linux, jusqu’à ce que la possibilité d’utiliser gratuitement le logiciel soit révoqué par son auteur, Larry McVoy (les raisons de cet événement sont assez controversées, je n’entrerais donc pas dans les détails ici). La première version a été publiée le 7 avril 2005, en juillet Linus annonçais que le Kernel serait dorénavant développé avec Git et que la maintenance de ce nouvel outil était confié à Junio Hamano. La première version stable (1.0) est quant à elle sortie le 21 décembre 2005.

Git fait partie de la famille des gestionnaires de sources décentralisée, tout comme BitKeeper ou Mercurial par exemple et au contraire de Subversion ou CVS. Le principe consiste à permettre à chacun de travailler à son rythme, de façon désynchronisée des autres, puis d’inclure leurs modifications dans son travail et mettre les siennes à leur disposition. Un dépôt de référence est en général défini (par convention, pas pour des raisons techniques), depuis lequel chacun peut partir afin de faire ces développements, avant de les y faire éventuellement intégrer.

Comment ça marche ?

La plupart des distributions Linux doivent contenir un package avec Git, sinon vous pouvez le télécharger et le compiler vous-même (je ne vais pas entrer dans les détails, si vous devez le faire, c’est que vous êtes un grand garçon ou une grande fille ;-)). Sous Windows il existe MSysGit, celui-ci permet d’installer tout ce qu’il faut pour que ça marche (vous aurez une console comme avec CygWin et un outil GUI), lisez bien les informations lors de l’installation afin de faire les choix qui sont le mieux adapté à votre utilisation (en cas de doute choisissez la solution la moins intrusive pour votre système).

Avant toute chose, une petite opération simple de configuration afin de vous identifier correctement lors de vos commit. L’option –global permet de définir ces informations pour tout votre système, si vous utilisez les mêmes commande dans un dépôt sans cette option vous pouvez définir un nom et une adresse spécifique pour celui-ci. Vérifier que tout est en ordre avec l’option get.

$ git config --global user.name "Yann Lugrin"
$ git config --global user.email "yann.lugrin@..."
$ git config --get user.name
Yann Lugrin
$ git config --get user.email
yann.lugrin@...

Pour créer un nouveau dépôt, rien de plus simple. Déplacez-vous dans le répertoire de votre application (ou créez-en un) et tapez la commande suivante :

$ cd ./MyApp
$ git init
Initialized empty Git repository in .git/

Comme vous pouvez le constater, votre répertoire de travail et votre dépôt ne font qu’un, vous allez donc commiter toutes vos modifications en local. Nous verrons plus tard (avec GitHub) comment utiliser un dépôt distant. Mais attention, dans tous les cas vous aurez cette configuration, vous n’enverrez jamais vos modifications directement vers un autre dépôt.

Petite précision sur les commandes, une commande notée git init est un « proxy » vers la commande git-init, si vous voulez de l’aide sur une commande, utilisez cette seconde notation avec man afin de l’obtenir.

$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)

Notre dépôt est créé, mais ne contient naturellement encore rien.

$ touch README
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       README
nothing added to commit but untracked files present (use "git add"
to track)

$ git add README
$ git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file: README
#

Le fichier README est créé, noté que nous avons dû explicitement l’ajouter avec la commande git add et qu’il existe également les commande git rm et git mv.

$ git commit -a -m "Initial commit"
Created initial commit b3037e7: Initial commit
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README

$ git status
# On branch master
nothing to commit (working directory clean)

$ git log
commit b3037e7f45f65d1003eada3248e8541f459085ac
Author: Yann Lugrin <yann.lugrin@...>
Date:   Mon May 5 15:29:01 2008 +0200

    Initial commit

L’option -a pour la commande git commit permet de tout envoyer, l’option -m permet d’écrire un commentaire. Si vous ne la spécifiez pas, l’éditeur par défaut du système sera ouvert afin de vous permettre de le faire. On peut ensuite vérifier le résultat avec la commande git log.

Si vous êtes un utilisateur de SVN, vous pouvez jeter un œil à ce guide afin de faire le pont avec les commandes de Git. Vous pouvez aussi lire la Cheat Sheet (SVG, Medium PNG, Large PNG).

Ceci était une introduction basée sur ma courte expérience, dans le prochain article je parlerais de GitHub, un service d’hébergement pour Git. Si vous avez des compléments d’informations à donner sur Git elles sont les bienvenues.



Globalize @ Paris on Rails

Posté le 19 octobre 2007 à 21:24

Paris on Rails aura lieu le 10 décembre prochain à la cité des sciences. De nombreux intervenants vont se succéder pendant toute une journée pour vous présenter Rails à travers des conférences sur Prototype, HAML / SASS, les tests mais également avec des retours d’expérience. Il y aura également DHH (David Heinemeier Hansson, le créateur de ce framework) en liaison vidéo.

J’aurai également le privilège de faire une présentation au sujet de l’internationalisation des applications et de Globalize afin de mieux vous préparer au développement d’une application multilingue.

Paris on Rails

Une belle journée dont le prix est de 70 € jusqu’au 15 novembre 2007, 100 € pour ceux qui voudraient s’y prendre au dernier moment. Je vous recommande donc fortement de vous y rendre (et si vous allez au Web 3, faite d’une pierre deux coups).



De retour aux affaires

Posté le 14 septembre 2007 à 16:26

Voilà plus de deux mois que j’ai publié mon dernier article, de plus avec une note un peu pessimiste. J’en profite pour remercier les quelques personnes qui ont pris de mes nouvelles et pour faire le point.

Pour commencer, les projets sur lesquels je suis avancent bien, je suis content du travail abattu pendant l’été. La nouvelle version de Pulp est enfin sur les rails puisque le core de l’application fonctionne bien et que je devrais pouvoir attaquer les controlleurs la semaine prochaine en collaboration avec le graphiste. J’ai également travaillé sur Globalize afin de lui faire passer les testes avec le trunk de RoR (je voudrais merger ceci avec la branche de Saimon qui implémente la RFC4646 avant de m’attaquer à l’intégration de la méthode « switch_language« , peut-être la semaine prochaine, au pire à la fin du mois. Le dernier projet avant également bien, pas aussi vite que je voudrais, mais le nombre d’heure dans la semaine n’est pas assez important.

Tout ceci fait que je suis crevé ces temps-ci (rien de plus normal, mais le problème est que je n’arrive pas à récupérer), c’est un point sur lequel je travaille, car ça ne me permet pas de travailler dans de bonnes conditions. Si je n’ai rien posté pendant 2 mois, c’est aussi que le temps me manquait cruellement, je n’arrive d’ailleurs pas à suivre le débit de mon feadreader, il faut que j’y fasse le ménage pour ne garder que l’essentielle.

Pour terminer des nouvelles de 2d Sans Faces, les ventes de Nightprowler ne se passe pas trop mal, nous avons à ce sujet mis à disposition un supplément en impression à la demande sur lulu.com (cette expérience est pour l’instant mitigée, mais nous n’avons pas trop le choix malheureusement). Tigres Volants va moins bien à notre grand regret, mais ce n’est pas trop une surprise.



Ruby On Rails est ce qu’il vous faut !

Posté le 20 février 2007 à 14:53

Ruby On Rails est un framework de développement qui a la cote et c’est tant mieux ! Je suis tombé dedans il y a deux ans et il est au cœur de la stratégie de ma société, Liquid Concept, depuis plus d’une année maintenant. Je constante que nous sommes de moins en moins seul dans le paysage Romand à faire ce choix et la création du Ruby User Group pour cette région est un signe que le langage gagne en popularité et reconnaissance ; car si beaucoup le découvre avec RoR, c’est bien Ruby qu’ils adoptent.

Avec le développement de notre plateforme d’hébergement pour les sites de nos clients et ma participation au développement de Globalize j’ai aujourd’hui l’expérience et le recul nécessaire pour pouvoir dire que nous avons fait le bon choix. En cas de besoin vous savez d’ailleurs où me trouver mais en attendant je vous conseil la lecture de cet excellent article d’Ib Com.



Rails 1.2.2 et petite note sur Globalize

Posté le 7 février 2007 à 11:09

La Version 1.2 de rails est sortie il y a maintenant plusieurs semaines, voici la 1.2.2 après que la 1.2.1 ai suivi de quelques heures sa grande soeur, ces versions mineurs ne corriges que quelques petits problème, pas besoin de s’étendre dessus plus que ça.

Au sujet de Globalize plusieurs nouvelles têtes ont été intégrée ces derniers temps. Nous sommes en train de préparer une release pour la version 1.2 de rails, tout les testes passent mais il nous reste à faire quelques mises à jour dans la documentation. Je vous tient au courent mais ça ne devrais pas tarder.

Nous préparons également l’intégration de nouvelles fonctionnalités, Saimon doit ajouter son système alternatif de storage et il faudrait vraiment que je merge l’extension développé par Liquid Concept dans le trunk ce que je n’ai pas encore eu le temps de faire. J’espère pouvoir m’y mettre bientôt.



Globalize Rails Core team

Posté le 20 octobre 2006 à 11:17

Nous utilisons Ruby On Rails depuis maintenant quelques temps le cadre de mon entrepise pour de développement de Pulp. Nous avons très vite eu besoin de contenu multilingue et avons donc choisi d’utiliser l’extension Globalize que nos besoins nous on poussé à quelques peut modifier et améliorer. Changements que nous avons naturellement publiés.

Il y a quelques semaines un utilisateur nous a contacté (mon associé olivier et moi-même) afin de nous demander si nous serions intéraissé par rejoindre l’équipe de developpement de Globalize, il n’en fait lui-même pas parti et n’estime pas avoir les connaissances qu’il faut pour le faire, mais puisque Josh (créateur de l’extension) à demandé de l’aide il s’est permi de nous contacter.

Et il à bien fait. Nous n’y avions pas vraiment penssé, mais maintenant que quelqu’un nous en parlais il nous a semblé intéraissant d’intégrer nos modifications et d’aider à sa mise à niveau d’une extension qui était primordiale pour nous. La dernière version de rails à en effet apporté beaucoup de nouveautés avec lesquels le multi-linguisme ne fonctionne pas. Nous avons donc contacté Josh et l’affaire s’est très vite conclue. Aujourd’hui nous avons mis en place un nouvelle hébergement (par nos soins) pour les sources et un Trac (http://trac.globalize-rails.org), un nouveau wiki hébergé chez stikipad est en phase de remplissage et devrait remplacer l’ancien d’ici quelques jours. Nous également avons mis en place des tests continues et enfin fait passer les tests au complet.

L’équipe de développement de Globalize se compose aujourd’hui de quarte personne : Josh Harvey, Jeremy Voorhis, Olivier Amblet et Yann Lugrin. Nous allons travailler à l’intégration des nouvelles fonctionnalités de Rails et de nos modifications ainsi que naturellement à la correction des problèmes existant.