Fork me on GitHub

Comment utiliser Git

Comme promis, nous allons dans ce billet donner une rapide introduction à l’utilisation de Git pour les administrateurs système souhaitant gérer les mises à jour de leurs installations, ainsi que pour les contributeurs dans une seconde partie.

Utilisation du dépôt pour maintenir facilement votre installation

Première récupération des sources

Vous voulez récupérer les sources de FileZ ou RdvZ avec Git et vous avez bien raison, voici donc quelques explications. FileZ et RdvZ sont des projets appartenant à l’utilisateur UAPV sur GitHub, vous pouvez donc les voir à cette adresse : http://github.com/UAPV. En consultant la page de ces projets, vous pouvez récupérer l’URL du dépôt qui s’initialise comme ceci :

git clone git://github.com/UAPV/RdvZ.git rdvz

Vous voilà donc avec une copie du dépôt courant sur votre machine !

Choisir la version utilisée

Hormis si vous souhaitez tester une nouvelle fonctionnalité, il est déconseillé de se placer sur la dernière modification envoyée par un développeur. Il sera préférable d’utiliser un tag ou une branche pour s’assurer de la stabilité de votre installation. Nos dépôt sont (seront) organisé de la manière suivante :

  • Chaque version mineure (ex: 2.0, 2.1) possèdera sa branche
  • Chaque version de maintenance (ex: 2.0.1, 2.0.2) sera tagguée.

Choisir un branche vous permettra de récupérer les dernières corrections de bug tandis que les tags vous permettront de choisir plus finement votre version. Utiliser une des deux commandes suivantes pour lister les branches ou tags :

git branch
git tag

Il suffit ensuite d’utiliser la commande “git checkout” pour se déplacer dans l’historique du dépôt :

git checkout 2.0 # pour la branche 2.0 par exemple
git checkout 2.0.1 # pour le tag 2.0.1

Mettre à jour vos sources

Nos applications libres évoluent selon vos contributions et nos idées, de nouvelles versions incluant des corrections de bugs ou des nouvelles fonctionnalités sont mises en ligne assez souvent. Si vous avez suivi l’étape précédente et que vous avez un dépôt local, vous n’avez qu’à taper cette commande pour récupérer les dernières mises à jour :

git fetch

Tous les commits qui ont eu lieu sont récupérés et un résumé des changements, nouveaux tags ou branches est affiché. Pensez à faire un checkout pour vous déplacer vers ces nouveaux tags ou branches.

Contribuer

Git apporte de nombreuse fonctionnalités qu’il n’est pas évident de prendre en main lorsqu’on vient d’un gestionnaire plus classique comme Svn. La difficulté principale consiste à se détacher des concepts plutôt simples de Svn pour visualiser clairement la notion d’arbre décentralisé. Des très bonnes lectures pour commencer et comprendre le fonctionnement interne des branches et dépôts distant sont les livres ProGit disponible gratuitement et Git Community Book. Le site GitRef.org vous servira ensuite de référence pour vous accompagner au quotidiens.

Forker un dépôt

Un des grands intérêts de GitHub est de permettre le “fork” de dépôts. Il s’agît en réalité d’effectuer une copie publique d’un projet qui va vous appartenir et que vous allez pouvoir modifier à volonté. Une fois les modifications effectuées, il est possible de demander au développeur originel du projet si les changements peuvent être intégrés au projet principal grâce à un “pull request”. L’intérêt de cette pratique est évident dans le cas de projets open source appelant à la contribution communautaire comme les notres. Les paragraphes suivants vont essayer de décrire la ligne de conduite couramment utilisée dans les projet git, il est important de la suivre pour faciliter l’intégration future de votre travail.

Git workflow

La suite de ce tutoriel va présenter une des solutions “best practice” pour contribuer à un projet en utilisant Git.

“Branchez”

Créer une branche est simple et léger sous git, il ne faut pas s’en priver, cela permettra de distinguer facilement votre travail pour qu’il soit évalué par l’intégrateur. Ce type de branche est également appelé “topic branch”

git checkout -b new_feature

Vous pouvez alors commencer votre travail en commitant régulièrement.

git add modified_file.php
git commit -m "Fixed  foobar function..."
“Rebasez”

Pour faciliter le travail de l’intégrateur nous allons lui éviter d’éventuels conflits en utilisant la commande “rebase”. Cette commande a pour effet de réorganiser votre branche “new_feature” sur la dernier commit du dépôt original. Ainsi au lieu d’avoir la configuration suivante (X,Y,Z sont vos commit sur votre topic branche) :

A--B--C--D--E--F
       \
        X--Y--Z

Vous obtiendrez ceci après un rebase :

 A--B--C--D--E--F
                 \
                  X'--Y'--Z'

Pour réaliser cette opération il faut d’abord récupérer les derniers commits du projet original dans votre dépôt à l’aide d’une “remote branch”. Nous appelerons cette branche “upstream” :

git checkout master # On se replace sur la branche principale de notre fork
git remote add upstream git://github.com/UAPV/FileZ.git
git pull upstream master # On récupère les dernières modifs dans la branche principale du fork
git checkout new_feature # On peut retourner sur notre feature branch

On peut alors réorganiser nos commits sur la tête de la branche “master” :

git rebase master

En ajoutant l’option “-i” à commande précédente il est également possible de fusionner les commits X, Y, Z en un seul. En tapant “git rebase -i master” un éditeur s’ouvrira; Remplacez alors tous les “pick” SAUF le premier par des “squash”. Vous obtiendrez alors un historique plus simple pour l’intégrateur :

 A--B--C--D--E--F--XYZ

Attention, la commande rebase est à éviter sur des commit ayant déjà été partagés et sur lesquels d’autres personnes ont basé leurs modifications; De la même manière que Marty dans “Retour vers le futur”, il faut être prudent.

Partagez

La dernière étape consiste à rendre visible votre travail en l’envoyant sur github :

git push origin new_feature

Vous pouvez maintenant effectuer un “pull request” sur github pour notifier le mainteneur du projet que votre patch est prêt.

Ce tutoriel n’aurait certainement pas vu le jour si la documentation de contribution de Symfony2 était sortie quelques jours plus tôt.  Leurs explications sont en effet plus détaillées et correspond exactement à la marche à suivre que nous vous conseillons d’adopter. Toutefois, il est important de lire un minimum de documentation pour réussir à perdre les réflexes de subversion et comprendre les branches de Git.

Both comments and pings are currently closed.

9 Responses to “Comment utiliser Git”

  1. William says:

    La documentation de contribution de Symfony2 est désormais à l’adresse suivante :
    http://symfony.com/doc/2.0/contributing/code/patches.html

  2. Arnaud Didry says:

    Merci c’est corrigé

  3. If you would like to take a good deal from this post then you have to apply
    such techniques to your won website.

  4. paid surveys says:

    However because you will find a variety of companies that
    offer various products and services for different people, you’ll likely in the course of time match the required profile
    and have the chance to perform paid surveys.

  5. I really like what you guys are up too. Such clever
    work and coverage! Keep up the awesome works guys I’ve added
    you guys to blogroll.

    Stop by my page comment tricher candy crush 2013

  6. payday loans says:

    Some really nice stuff on this internet site , I it.
    payday loans http://www.micronvideo.co.uk/paypal-checkout.asp

  7. This website has more than enough good information on it, I check on it every few hours. I wish other sites spent as much time as this one does making information to the point to readers like myself. I recommend this site to all of my facebook friends. This website will make some massive passive profit Im sure.
    pay day loans http://www.dirtbusters-uk.com/

  8. yrjzmlgmrx says:

    Comment utiliser Git | Université d’Avignon et Logiciel Libre
    ayrjzmlgmrx
    yrjzmlgmrx http://www.g0u08o12gn92113pcwagvmtd275433hks.org/
    [url=http://www.g0u08o12gn92113pcwagvmtd275433hks.org/]uyrjzmlgmrx[/url]

Subscribe to RSS Feed