= Introduction = On veut pouvoir documenter les modifications faites dans `/etc` et dans `/usr/local`, qui sont ''grosso modo'' les deux répertoires permettant de décrire comment fonctionne un serveur. Cette documentation est indispensable en cas d'administration à plusieurs, mais elle est également très utile quand on est seul à gérer : c'est un aide-mémoire indispensable vu la vitesse à laquelle évoluent les technologies et donc les configurations. Pour cela, on utilise un logiciel de gestion de version. Ce logiciel va nous permettre de documenter chaque modification effectuée sur un fichier ou un ensemble de fichier. '''On pourra ensuite retrouver à quel moment à été faite une modification, par qui et pour quelle raison.''' Il existe différents logiciels de ce type, parmi lesquels on peut citer l’ancêtre RCS, son fils CVS, son petit-fils Subversion (`svn`) et dans la génération qui vient d'arriver : `git`. C'est ce dernier logiciel que nous avons choisi car il est moins bavard, moins intrusif dans le code à surveiller, et surtout très bien documenté. '''Notre objectif est d'installer et de configurer `git` pour que l'administrateur d'un serveur puisse aisément faire le suivi de sa configuration.''' = Installation automatisée (paquet auf-git-etc) = Vous avez maintenant à votre disposition un paquet Debian [[http://git.auf.org/?p=auf-git-etc.git|réalisé en interne à l'AuF]]. Pour profiter de ce paquet il vous suffit de créer un fichier `/etc/apt/sources.list.d/auf.list` avec le contenu suivant : {{{ deb http://apt.auf.org/ wheezy auf }}} Puis de lancer les commandes suivantes : {{{#!shell sudo aptitude update # ignorer le message d'avertissement sudo aptitude install auf-keyring # accepter l'installation « non signée » sudo aptitude update # aucun message d'avertissement ne doit s'afficher sudo aptitude install auf-git-etc }}} = Utilisation = == Configuration préliminaire == Ajouter les lignes suivantes dans son `~/.bash_profile` (puis se reconnecter pour activation) : {{{#!shell export GIT_AUTHOR_NAME="Prénom NOM" export GIT_AUTHOR_EMAIL="prenom.nom@auf.org" }}} == Utilisation au quotidien == Pour voir les modifications avant de les envoyer dans le dépôt : {{{#!shell sudo git status # affiche la liste des fichiers modifiés, supprimés, nouveaux… sudo git diff # affiche les différences entre ce qui est stocké dans git et l'état actuel }}} Pour envoyer les modifications dans le dépôt, on lance un `commit`. Il y a plusieurs façons de faire, parmi lesquelles : {{{#!shell sudo git commit un/seul/fichier/modifié # on enregistre les modification d'un seul fichier (attention : toujours en notation relative) sudo git commit -a # on enregistre *toutes* les modifications }}} Pour revoir les modifications, plusieurs techniques en ligne de commande : {{{#!shell sudo git log -10 # rappel succinct des 10 dernières modifications sudo git show # affiche les détails de la dernière modification sudo git show 4961aef5e675fd148 # 4961aef5e675fd148 = le début du code de la modification à afficher en détail sudo git whatchanged # liste des modifications sudo tig # petit logiciel très sympa, à installer avec : aptitude install tig }}} == Exemple d'utilisation == {{{ cd /etc | ici on travaille, dans cet exemple sudo vi profile <-----| on modifie la configuration du sudo vi postfix/main.cf | logiciel Postfix cd / sudo git status | une fois le travail fait, on va sur / sudo git diff <-----| puis on documente ce qu'on a fait sudo git commit -a | (pourquoi, comment...) }}} Note : la plupart du temps, il est plus simple de prendre l'habitude de se placer à la racine pour faire les manipulations `git`. == Suivre de nouveaux fichiers / Ne plus suivre des fichiers == Pour suivre un nouveau fichier ou tous les nouveaux fichiers d'un répertoire, par exemple suite à l'installation de nouveaux fichiers de configuration : {{{#!shell cd / sudo git add le/chemin/du/fichier/ou/repertoire # il faut indiquer un chemin relatif (sans / au début) sudo git commit }}} Attention : il faut éventuellement modifier le fichier `/etc/auf-git-etc/info/exclude` Pour arrêter de suivre un fichier ou un répertoire : {{{#!shell sudo vi /etc/auf-git-etc/info/exclude # on ajoute le nom du fichier dans les exclusions (exemple : /etc/ldap.secret) cd / sudo git rm le/chemin/du/fichier/a/ne/plus/suivre # on le retire du dépôt (note : le chemin est relatif, sans / au début) }}} = Ca ressemble à quoi ? = Juste pour donner une idée, voici ce que donne le petit programme `tig` lorsqu'on le lance sur une machine bien suivie : {{attachment:ce-que-montre-tig.png}} = Annexes = == Améliorations à trouver == Pour plus tard (post Etch) : * correction du bogue quand on joue avec un "/.git" (y a-t-il un bogue, d'ailleurs ?) * `git-stash` pour relier apt et git == Annexes == * historique, juste pour information (NE PAS APPLIQUER) : /InstallationManuelle