Dans cet article, je vais essayer de vous convaincre qu’utiliser git quotidiennement (sans pour autant être développeur de gros projets) peut être extrêmement avantageux.
Qu’est ce que Git ?
Comme le dit si bien wikipedia, git est un gestionnaire de version… décentralisé. D’abord, gestionnaire de version : c’est un outil utilisé lorsqu’on veut monter un vrai projet informatique digne de ce nom. Il apparait rapidement une nécessité de conserver l’historique des modifications du code afin de savoir qui a fait quoi, quand, pourquoi et bien (bien) plus encore… Ainsi, on peut aisément revenir en arrière lorsqu’on est parti dans une impasse.
Décentralisé signifie que vous n’avez pas besoin de vous connecter à un serveur distant (contrairement à svn si vous connaissez), et ce sera pour nous très intéressant.
Git a été codé pour le noyau linux, son développement est très récent. Il se trouve être très performant et relativement facile d’emploi. Il est d’ailleurs de plus en plus utilisé.
Oui, mais je ne suis pas développeur !
…mais ça peut tout de même vous intéresser. Je vais dire que cela vous intéressera si vous êtes un minimum bidouilleur comme moi sur votre machine. Je modifie ou crée bon nombre de fichiers de configuration (irssi, vim, conky, les alias, screen et j’en passe) ou encore de coder quelques petits scripts maisons qui rendent la vie plus facile. Si vous êtes comme moi, vous avez alors notamment le soucis du changement de machine. Récupérer les fichiers de conf et scripts un à un est fastidieux. Quand bien même on le fait et que l’on exporte tout sur la machine n°2, on sera tenté de modifier encore et encore ces petits fichiers parce que la perfection se recherche au quotidien. Qui dit modifications, dit repropager à la main les modifications (ou transférer le fichier… ce qui est la même chose).
Plus ou moins convaincu ? Bon, allez, c’est parti.
Ci-gît mes fichiers…
Le gestionnaire de paquets de votre distribution doit vous permettre d’installer git sans trop de soucis.
Dans mon home, je lance donc un :
git init
L’effet de se crée un répertoire .git (caché donc) qui va contenir tout plein de choses dont on n’a pas à se soucier. C’est à faire qu’une seule fois, au tout début. Ensuite :
git add .vimrc
aura pour effet que le fichier .vimrc soit pris en considération par git. Il le connait désormais. Pour en être certain, faites un
git status
vous verrez alors quelque chose comme
# On branch master## Initial commit## Changes to be committed:# (use "git rm –cached <file>…" to unstage)## new file: .vimrc
On voit que .vimrc est un nouveau fichier et qu’il doit être "commité". Exécution :
git commit .vimrc -m ‘premier commit de vimrc’
-m permet de spécifier un message. Tout commit doit être accompagné d’un commentaire. Si vous ne le mettez pas, il ouvrira un éditeur texte pour que vous le fassiez. Plutôt que de lister tous les fichiers lorsqu’il y en a plusieurs, vous pouvez utiliser l’option -a. La commande
git log
permet de lister les actions passées.
Et voilà, vous savez tout !
Euh, oué, et alors ?
Placez-vous dans /tmp (cd /tmp), crée un sous répertoire si besoin et placez vous dedans puis lancez
git clone /home/toto
(si votre login est toto et que votre git se trouve dans votre home comme je l’ai fait ci-dessus)
Faites un ls… Que voyez vous ? votre fichier .vimrc. Magique non ? Si vous en avez ajouté d’autres, ils y seront tous ! Lancez un git status. Et oui, il vous répond comme si vous étiez dans votre home. C’est normal, vous avez cloné d’un coup tous vos fichiers versionés. Je pense que vous voyez de suite l’intérêt que git va avoir. on va pouvoir copier les fichiers facilement d’un endroit à un autre.
On peut centraliser un minimum ?
Git permet bien sûr d’envoyer ses fichiers sur un serveur… git. Ainsi, votre dépôt sera accessible depuis le web. C’est très pratique pour voyager léger et partager avec ses amis. Bon nombre de sites proposent ce genre de service, j’aime beaucoup gitorious pour son coté interface sympathique. Les puristes préfèreront sans doute http://repo.or.cz/.
A l’heure où j’écris ces lignes, mon dépôt n’est pas encore monté pour que je puisse vous le montrer. Qu’à cela ne tienne, vous pouvez regarder cette liste ou créer un dépôt (dont il est possible de supprimer ultérieurement).
Les commandes pour gérer (envoyer et recevoir les fichiers) sont spécifier sur le site. Je ne vais donc les répéter ici. A noter que vous avez besoin d’une clef GPG pour les communications. Cela dépasse le cadre se cet article, je vous renvoie à la documentation de votre distribution ou par ex à cette page mémo bien faite.
Au final…
…où que vous soyez, vous aurez accès à vos fichiers de configuration rapidement et simplement soit via internet soit en ayant pris quelques précautions (clef USB), mais dans tous les cas, la gestion est grandement simplifiée.
Nul besoin d’être connecté à internet pour "commiter" contrairement à svn par ex. Ainsi, si vous modifier un fichier en antarctique, vous pouvez versionner la modification.
Le partage de ses fichiers persos avec ses amis est alors très facile. De plus, vous pourrez facilement revenir en arrière (je sais, je n’ai pas expliqué cela) etc… et ceci offre par la même occasion un bon système de sauvegarde.
Aller plus loin
Git est, vous vous en doutez, bien plus puissant que ces trois ou quatre commandes que j’ai pu vous donner. Générer des différences (patchs), créer des branches (utilisé pour travailler sur des évolutions différentes), les merger (fusionner), travailler en collaboration (git peut être utiliser pour la rédaction d’un document latex par ex) sera très très facile au point que vous vous demanderez pourquoi la planète entière n’utilise pas git.
Le web commence a recevoir de nombreux tutos sur cet outil (par ex, ce site.) Il est possible de configurer à sa sauce git avec un fichier .gitconfig (un bon moteur de recherche vous mènera à divers exemples…)
Bref, j’espère vous avoir donné des clefs pour entrevoir l’intérêt et vous documenter efficacement pour votre utilisation. Les (futurs) codeurs ne seront que doublement satisfait d’apprendre ce logiciel. L’administrateur système se portera cette utilisation sur un /etc…
Bon amusement.


Adhérer April
CC-BY-SA
La Quadrature du Net
Planet-libre
Wikio
4 commentaires
Comments feed for this article
13 avril 2010 à 3:12
seb
Merci pour cet article qui m’a permis de découvrir e-vidence avec ses excellent tuto.
J’utilise déjà git pour mes fichiers de configuration c’est vrai que c’est assez util, et ce qui est pas mal, c’est qu’avec les branches, on peut en plus gérer ses configurations spécifiques sur ses différentes machines.
Pour la sauvegarde de /etc, il existe etckeeper: http://kitenet.net/~joey/code/etckeeper/ qui permet d’automatiser les commit à chaque uprade, ce qui est pratique le jour ou une upgrade écrase un fichier de configuration
13 avril 2010 à 6:46
François
Merci pour etckeeper, je mets ça dans mes marque-pages de suite, ça va m’être surement utile
13 avril 2010 à 8:37
theclimber
Depuis que j’ai découvert git, je n’arrive pas à comprend pourquoi on utilise encore subversion pour des projets … et pourtant … si peu de gens connaissent git qu’on y est souvent forcé par la force des choses.
Mais je suis tout à fait d’accord que ça permet vraiment de se faciliter la vie pour plein de tâches
14 avril 2010 à 5:40
François
Je suis d’accord. A coté de git, svn maigre (je l’ai peu utilisé ceci dit). Je pense que c’est un problème d’inertie comme tu le dis. Sans doute une crainte de perdre des contributeurs en changement le gestio. de projet. Peut êtreussi a que ce type de logiciel est perçu comme étant difficile… Mais à force d’en parler, j’ai bon espoir