Le "git" et le couvert
Par Administrateur le mercredi, juin 20 2007, 21:50 - Planet - Lien permanent
J'aime les titres qui veulent rien dire.
Un SCM c'est quoi ? C'est un gestionnaire de sources ... Alors beaucoup connaissent CVS, normalement ceux-la savent qu'ils sont depuis un moment dépassé par SVN (subversion) qui en est la suite ...
Mais il y en a une foultitude ...
Choisir le bon est une question de ... choix ... ben oui, ça dépend beaucoup des besoins, des contraintes, des opinions ... Personnallement j'ai appris avec CVS avec lequel je suis resté jusqu'a ... ben jusqu'a y'a deux mois ou j'ai poursuivit avec SVN ...
Git (ici sur wikipedia) est le SCM de linus ... oui le gars qui fait linux vous en avez forcément déja entendu parlé (je vois pas pourquoi je demande, si vous lisez ça vous êtes suffisament geek pour connaitre linus :)) Bref après que son outil favoris ait passé l'arme a gauche ... enfin il est allé dans le monde propriétaire ... Il a développé lui même son truc ... normal quoi ...
Si vous voulez son avis il faut l'écouter sur youtube (ou si vous préférez lire) il donne aussi son avis sur SVN CVS (il décrit plutot sa haine envers ces SCM ...) et d'autres ... En gros pour lui un bon SCM c'est un SCM rapide, qui permet de brancher dans tous les sens et surtout qui permet de merger sans même se poser de questions ... Si en plus il est ditribué c'est encore mieux ...
Git est excellent pour ça, on clone un repository en local, on branche et on merge comme on veut en local (donc super rapide) puis on push les modifications... Je vais pas rentrer dans le détail du fonctionnement, mais c'est grisant
j'espère avoir succité de l'intérêt pour que vous alliez vous renseigner 
Pour installer la dernière version sous linux je me suis rendu ici : http://www.backports.org/debian/pool/main/g/git-core/. La dernière version Ubuntu n'étant pas complètement à jour ... Et la il y a les outils d'interface avec SVN et CVS ... bref faites comme vous le sentez =)
Pour MacOSX j'ai essayé fink, mais bon ... c'est vraiment pas génial, il a compilé deux heures pour m'envoyer une erreur ... (git n'est pas considéré comme stable alors il faut compiler ...) Par contre chez Darwin Ports aucun soucis ... c'est un peu long a installer mais ça marche tout de suite !!!
Pauvres gens de windows ... Vous ne pourrez l'utiliser que par le biais d'un cygwin qui vous ralentira considerablement les performances ... mais c'est pas mon problème immédiatement ...
Voici juste comment démarrer un projet avec git ... Ca ne remplacera jamais le user-manual On imagine un projet se trouvant dans /home/git/priv/monProjet On fait :
cd /home/git/priv/monProjet
git init
git add .
git commit
Tout ça en moins de 3 secondes, vous avez votre SCM local !!!
Alors un SCM distribué ça veut dire qu'il n'y a pas qu'un seul repository, mais autant qu'il y a d'utilisateur sinon plus ... Comment ça marche ? Dans la doc on nous dit qu'il faut au minimum 4 repo pour avoir un truc propre :
you push
your personal repo ------------------> your public repo
^ |
| |
| you pull | they pull
| |
| |
| they push V
their public repo <------------------- their repo
C'est un peu louche a comprendre, mais bon ... quand on s'en sert ça devient limpide ...
Dans cette même doc, on nous explique comment lancer le daemon du git... Perso je l'ai lancé avec xinetd, voici mon fichier de config :
# cat /etc/xinetd.d/git service git { port = 9418 socket_type = stream protocol = tcp user = git wait = no server = /usr/bin/git-daemon server_args = --inetd --verbose --export-all --base-path=/home/git/pub/ }
il faut aussi :
# grep 9418 /etc/services git 9418/tcp # git SCM
Et un user git !! Pour créer le repo publique il suffit de faire :
git clone --bare /home/git/priv/project /home/git/pub/project.git touch /home/git/pub/project.git/git-daemon-export-ok
Voila et avec ça du mac il me suffit donc de faire:
git clone http://10.0.0.12/project.git
et c'est partit ...
Je vais maintenant essayer de lier git et trac, le gestionnaire de projets/wiki/tous les brolls ... Une première piste