Git

De Ensiwiki
Aller à : navigation, rechercher
Git

Environnement Windows, MacOS, Linux

Type Gestionnaire de versions
Licence GPLv2

Site Web http://git-scm.com/

Tux.png  Linux Apple.png  MacOS X Windows.png  Windows 

Présentation

Git est gestionnaire de versions, au même titre que Subversion, développé à l'origine par Linus Torvalds pour faciliter sa gestion du développement de Linux.

Git présente un certain nombre d'avantages techniques par rapport à Subversion, la différence fondamentale étant que Git fait partie de la famille des gestionnaires de versions décentralisés (voir explications ci-dessous). Dans la même catégorie que Git, un autre très bon gestionnaire de versions est Mercurial.

Passage de SVN/CVS à Git

Il y a de nombreuses différences entre SVN et Git (Git est plus rapide, a un format de stockage beaucoup plus compact, ... voir par exemple http://whygitisbetterthanx.com/ pour une comparaison peu objective mais argumentée). On détaille ici la différence principale.

En "SVN" (et "CVS"), il y a un "dépôt unique" surlequel se synchronisent des "répertoires de travail". Au contraire en "Git", chaque "répertoire de travail" est en fait aussi un "dépôt" (dont l'historique se trouve dans le ".git/"). La supériorité de "Git" vient justement du fait qu'on peut synchroniser efficacement plusieurs dépôts entre eux.

En particulier, il y a en Git une notion de "dépôt nu" ("bare repository"), répertoire avec par convention une extension "*.git", et qui correspond à un cas particulier de dépôt: un dépôt sans répertoire de travail associé. Ce type de dépôt sert typiquement de "dépôt public" qu'on peut alimenter via son répertoire de travail (e.g. "dépôt privé") tout en profitant d'un mécanisme de gestion de versions propre à son "dépôt privé".


Les habitués de SVN voient la façon de faire de Git un peu comme ça. Le mieux pour passer de "SVN" à "Git" est en fait d'oublier "SVN" et de suivre un des tutoriels ci-dessous.

À l'Ensimag

Git est installé sur les machines de l'Ensimag. Manifestez-vous par exemple auprès du service info ou de Matthieu.Moy@imag.fr si vous souhaitez une installation d'une version plus récente sur une de ces machines.

Si vous souhaitez utiliser Git pour vos travaux collaboratifs (TP, projets), vous trouverez cela sans doute commode de l'accompagner d'ACL, histoire que seul votre binôme ait accès au dépôt.

Installation chez vous

L'installation est tout ce qu'il y a de plus classique. Si vous utilisez une distribution Linux ou un autre système doté d'un gestionnaire de paquets, installez simplement git (paquet "git-core" sous Ubuntu ou Debian, "dev-util/git" sous Gentoo, et généralement juste "git" ailleurs). Sinon, rendez vous sur la page de téléchargements du site officiel.

Documentation

Pour débuter

Documentations plus complètes

Pour comprendre comment marche Git

Documentations sur EnsiWiki, écrites pour vous

Exemples d'organisation de projet à l'Ensimag avec Git

Quelques trucs à faire ou ne pas faire

  • Lorsque vous copiez pour la première fois les fichiers fournis par les profs dans votre dossier de travail, pensez à faire un commit, histoire d'avoir une version initiale canonique à laquelle vous référer, en cas de besoin, ou juste pour voir le travail accompli.
  • Il faut donner à vos collègues de projet les droits suffisants pour lire (et traverser) les fichiers et dossiers contenant le dépôt (inclus le dépôt lui-même). Pour cela, la meilleure solution, sur les serveurs élèves de l'Ensimag, est d'utiliser les ACL.
  • Si votre umask est trop restrictif, vous risquez d'avoir des problèmes, car git push ne rendra pas les fichiers du dépôt lisibles par ceux à qui ils sont destinés : vos collègues. Pas de panique, Git a prévu ce cas, il suffit de configurer le dépôt avec la commande suivante (à lancer dans le repository, cf. man git-config pour les détails) :
git config core.sharedRepository group
  • Git utilisera les programmes configurés dans vos variables d'environnement, en particulier PAGER, pour afficher le résultat de ses commandes et EDITOR, pour vous permettre d'éditer vos messages de commit. Par défaut, EDITOR vous donne vi(1), ce qui peut être déconcertant pour les débutants (ce message s'adresse en particulier aux gens qui voudraient faire travailler leur binôme moins geek qu'eux avec Git). PAGER vaut less(1), ce qui est bien pour les man pages, moins pour afficher trois lignes de statut ; aussi, vous pourriez avoir envie de le remplacer par more(1) ou bien de positionner LESS (la variable d'environnement contenant les options par défaut pour less(1)) à quelque chose comme "-FRSX", ce que Git fait par défaut quand LESS n'est pas positionné (les deux switches intéressants dans le tas sont -F et -X).