From d538275510418d8ee383b6d44c1755e45e62c5de Mon Sep 17 00:00:00 2001 From: oudomphe Date: Thu, 27 Mar 2008 00:54:40 +0000 Subject: [PATCH] Premier jet. --- logiciels/git/index.tml | 237 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 237 insertions(+) create mode 100644 logiciels/git/index.tml diff --git a/logiciels/git/index.tml b/logiciels/git/index.tml new file mode 100644 index 0000000..232f33e --- /dev/null +++ b/logiciels/git/index.tml @@ -0,0 +1,237 @@ + + + + + Subversion + + + +

Contrôle de versions avec Git

+ +

C'est quoi ?

+ +

Le logiciel git est utilisé notamment par les développeurs +du noyau Linux. Il s'agit d'un logiciel de contrôle de version, comme SVN, +CVS, Arch ou encore Darcs, qui utilise des dépôts décentralisés. Il permet +ainsi de travailler tout en gardant une trace des modifications apportées +successivement, et de retrouver ainsi l'état antérieur de ses données.

+ +

Il permet également, comme beaucoup de ses congénères, de travailler à +plusieurs sur un même projet. Mais contrairement à CVS ou Subversion, par +exemple, Git ne fait pas de différence entre un dépôt principal et les +copies locales chez les différents contributeurs.

+ +

Ce système permet également une organisation hiérarchisée de +gros projets, comme c'est le cas du noyau Linux, en rendant +complètement naturelle l'existence de dépôts alternatifs pour chaque +sous-projet, avec une granularité de modifications très fine, et à +plus grande échelle, une faible granularité du dépôt principal qui +reçoit périodiquement les modifications par paquets.

+ +

À l'inverse, pour travailler à deux, git évite le +casse-tête des droits d'accès dans le dépôt de l'autre. On peut en +effet travailler de manière totalement symétrique, chacun recopiant +les modifications de l'autre : il suffit d'un accès en lecture aux +fichiers de ses collaborateurs.

+ +

J'expliquerai ici comment se servir de la version 1.5 de +git. Dans la version 1.4, par exemple, la commande git init +est appelée git init-db. Cette dernière, dans la version +1.5, n'est qu'un autre nom pour git init.

+ +

Créer un dépôt git

+ +

Pour créer un dépôt git, il suffit de taper la commande +suivante dans son répertoire de travail (que nous désignerons dans la +suite par monsiteweb).

+ +
git init
+ +

Le dépôt est initialement vide. Imaginons que l'on souhaite +suivre les modifications du fichier sommaire.html qui se +trouve dans le répertoire monsiteweb.

+ +
git add sommaire.html
+git commit
+ +

La première indique à git notre modification : le fichier +sommaire.html existe et doit être pris en compte. Il n'est +pas toujours pertinent de suivre les modifications de n'importe quel +fichier. En particulier, lorsque des fichiers sont engendrés +automatiquement à partir de fichiers source, ce sont les fichiers +source et les générateurs qu'il est important de conserver. La +commande git commit sert à enregistrer dans le dépôt les +modifications apportées.

+ +

Lors d'un check-in (avec la commande git +commit), git demande un texte de journal (commit +log). Ce texte permet de repérer facilement les modifications +effectuées par chaque commit, aussi bien pour les autres que pour +soi-même. Chaque commit est identifié par un numéro unique, +représenté comme une suite de chiffres hexadécimaux. Ce numéro sert +de référence, par exemple, lors qu'on veut annuler une +modification.

+ +

La commande git add ajoute un fichier dans le dépôt. On +peut également s'en servir pour des répertoires entiers. Les +commandes suivantes permettent ainsi de créer et remplir un dépôt git +dans un répertoire avec tout son contenu.

+ +
git init
+git add * 
+git commit
+ +
Le dépôt git est enregistré dans le sous-répertoire +.git du répertoire où il a été créé. Ce dépôt peut différer du +contenu du répertoire proprement dit, si on a modifié les fichiers depuis +le dernier commit ou si on a importé les modifications d'un autre +contributeur. Noter que ce répertoire est souvent invisible dans les +explorateurs de fichiers et dans la sortie de la commande ls, +puisque son nom commence par un point. Les dépôts git peuvent être +compressés pour occuper moins de place (voir la commande git +repack et git gc).
+ +

On dispose d'une interface graphique (git-gui) et d'une +interface Web (gitweb) pour explorer agréablement un dépôt git.

+ +

Travailler sur un projet géré par git

+ +

Une autre manière de créer un dépôt git consiste à cloner un dépôt déjà +existant. Si la dénommée Xanadu possède un dépôt git dans son répertoire +/home/xanadu/these, le dénommé Yoda peut l'aider en clonant +son dépôt par la commande suivante

+ +
git clone /home/xanadu/these cible
+ +

cible est le répertoire qui contiendra la copie. Yoda +peut alors travailler librement dans le répertoire cible comme +sur n'importe quel dépôt git dont il est le propriétaire.

+ +
Ceci s'applique également aux projets situés sur des +machines distantes. On peut ainsi remplacer le répertoire par une adresse +du type ssh://login@machine/home/xanadu/these, si le +répertoire se trouve sur une machine à laquelle on accède par +ssh. La plupart des projets de logiciels libres indiquent des +adresses de la forme git://git.logiciel.org/trunk ou encore +http://git.logiciel.org/trunk.
+ +

Yoda effectue alors quelques opérations sur les fichiers. Il enregistre +régulièrement ses modifications dans le dépôt proprement dit en tapant

+ +
git commit -a
+ +

qui lui demande un texte de description pour le journal des +modifications.

+ +

Si d'aventure Xanadu continuait de travailler sur son projet, Yoda peut +importer les dernières modifications en lançant la commande +

+ +
git pull
+ +

dans son dépôt. Quant à Xanadu, si elle veut bénéficier des +modifications apportées par Yoda, se trouvant dans le répertoire +/home/yoda/cible, elle peut lancer la commande suivante chez +elle.

+ +
git pull /home/yoda/cible
+ +

Si Yoda pouvait accéder en écriture aux fichiers de Xanadu, il +pourrait également lui transmettre ses modifications par la commande +

+ +
git push
+ +

Entraînée par sa paresse naturelle, Xanadu aimerait facilement récupérer +les modifications de Yoda sans avoir à se rappeler le répertoire exact où +il les enregistre. Elle définit donc un raccourci de la manière +suivante

+ +
git remote add yoda /home/yoda/cible
+ +

La commande git remote show yoda permet de consulter +les informations sur le dépôt de Yoda, et git pull yoda +permet de récupérer directement ses modifications. On peut également +utiliser les commandes

+ +
git fetch yoda
+git merge yoda/master
+ +

Ici, master est la branche du dépôt de Yoda +que Xanadu souhaite utiliser. Un dépôt git peut comporter plusieurs +branches correspondant à autant de directions différentes de +développement. Ce système permet d'essayer diverses orientations, avant de +retenir la meilleure. La commande git remote show permet de +voir la liste des branches d'un dépôt enregistré dans la liste des +remotes

+ +

Travailler sur un projet géré par Subversion

+ +

Contrairement à git, Subversion, dans un usage normal, ne clone pas +entièrement le dépôt distant avec ses modifications successives, mais +conserve seulement une copie de la dernière version. Il est possible +d'utiliser le modèle de travail de git tout en interagissant avec un dépôt +Subversion en utilisant le script git-svn. Ceci permet, par +exemple, de travailler facilement à plusieurs sur un sous-projet donné, en +envoyant périodiquement le résultat du travail.

+ +
git-svn clone http://svn.site.org/svnroot/projet -T trunk -b branches -t tags
+ +

La commande précédente permet d'importer la totalité d'un projet +Subversion, avec ses différentes branches et tags (correpondant +généralement aux différentes versions publiées). Attention, cela prend +généralement beaucoup de place. Cependant, l'utilisation de +git-gc permet de compresser les données et réduit l'espace +occupé à l'ordre de grandeur de la taille d'un checkout Subversion +(mais ici on garde tout l'historique).

+ +

On peut alors travailler normalement sur son dépôt. Les +commandes

+
git-svn rebase
+git-svn dcommit
+

permettent respectivement de recevoir et d'envoyer les modifications +apportées.

+ +

Travailler sur un projet géré par CVS

+ +

Pour aspirer le contenu d'un dépôt CVS avec son historique et +l'enregistrer sous forme de dépôt git, on dispose de la commande +git-cvsimport.

+ +
git-cvsimport -d:pserver:anonymous@cvs.truc.org:/sources projet
+ +

On peut ajouter l'option -p -Z,3 pour +activer la compression. Pour utiliser git-cvsimport, il faut +au préalable s'assurer de la présence du programme cvsps sur +son ordinateur.

+ +

Travailler sur un projet géré par Arch

+ +

Pour aspirer le contenu d'un dépôt Arch avec son historique et +l'enregistrer sous forme de dépôt git, on dispose de la commande +git-archimport.

+ +
machine $ tla register-archive http://arch.foobar.org/archives/software
+user@arch.foobar.org
+machine $ tla my-default-archive user@arch.foobar.org
+machine $ git-archimport software--devo--0:master
+ +

L'utilisation de git-archimport requiert la présence +du client tla qui est la façon la plus commune d'accéder aux +dépôts GNU Arch.

+ +

En savoir plus

+ + + +
+Auteur : Rémy Oudompheng. +Dernière modification le . +
+ + +