Modifications entre les versions 3 et 17 (s'étendant sur 14 versions)
Version 3 à la date du 2007-11-07 17:33:44
Taille: 1925
Éditeur: ThomasNoël
Commentaire: bon voilà quoi
Version 17 à la date du 2007-11-09 09:48:09
Taille: 3333
Éditeur: ThomasNoël
Commentaire: init-db sur 1.4 (le git de etch)
Texte supprimé. Texte ajouté.
Ligne 2: Ligne 2:

'''Note : testé sur Gutsy... en cours de test sur Etch'''
Ligne 10: Ligne 12:
  {{{  {{{
Ligne 14: Ligne 16:
 2. On créée un dépôt général pour toute la machine :
  {{{
 2. On créée un dépôt général pour toute la machine. Attention à bien régler les droits : seul `root` doit pouvoir accéder au dépôt, sinon les fichiers du genre `shadow` seraient accessibles à tous.
 {{{
Ligne 17: Ligne 19:
# git init # git init (ou "git init-db" sur une Debian Etch, git version 1.4)
# chmod u=rwx,go= /.git
Ligne 20: Ligne 23:
 3. Pour éviter d'avoir des "saletés" directement à la racine (`/`), on déplace le dépôt autre part :
  {{{
 3. Pour éviter d'avoir des "saletés" directement à la racine (`/`), on déplace le dépôt. Le répertoire `/.git` à la racine ne sera en fait qu'un lien symbolique vers le véritable emplacement du dépôt :
 {{{
Ligne 25: Ligne 28:
# chmod u=rwx /var/lib/git/root
Ligne 29: Ligne 31:
  {{{  {{{
Ligne 33: Ligne 35:
/ /*
!/etc
/etc/mtab
/etc/adjtime
!/usr
/usr/*
Ligne 35: Ligne 42:
!/etc
Ligne 39: Ligne 45:
.*.swp
Ligne 42: Ligne 49:
  {{{
# cd /etc ; git add .
#
cd /usr/local ; git add .
# git commit -m "mise en route du suivi : /etc et /usr/local"
 {{{
# cd /
#
git add etc usr/local
# git commit -m "mise en route du suivi : /etc et /usr/local" --author "moi <email@auf.org>"
Ligne 54: Ligne 61:
Si on veut suivre un nouveau fichier : Si on veut suivre un nouveau fichier, ou ne committer les modifications que de ce fichier :
Ligne 56: Ligne 63:
# git add fichier}}}
ou un nouveau répertoire (modifier `exclude` si c'est en dehors de /etc ou /usr/local):
# git add fichier
# git commit
}}}
et pour un répertoire (modifier `exclude` si c'est en dehors de /etc ou /usr/local):
Ligne 59: Ligne 67:
# cd /repertoire ; git add .}}} # cd / ; git add un/reper/toire
# git commit
}}}
Ligne 61: Ligne 70:
Pour voir les modifications : Pour voir les modifications, plusieurs techniques en ligne de commande :
Ligne 63: Ligne 72:
# tig <-- à installer avec aptitude install tig
# git whatchanged
Ligne 64: Ligne 75:
# git show ...(le code du commit)...}}} # git show ...(le code du commit)...
}}}
Ligne 66: Ligne 78:
== Améliorations == == Quelques scripts d'automatisation (wrapper) ==
Ligne 68: Ligne 80:
 . interfaçage avec apt : http://bryan-murdock.blogspot.com/2007/07/put-etc-under-revision-control-with-git.html
 . cron nocture qui balance un courriel d'insulte quand on a pas fait le commit alors qu'il y a des modifs
 . faire un serveur central gitweb (avec les commandes git-ssh-* ou autre pour envoyer vers le dépot)
A ajouter dans son `~/.bashrc` :
  {{{
export GIT_COMMITTER_NAME="Prenom NOM"
export GIT_COMMITTER_EMAIL="prenom.nom@auf.org"}}}

=== confcommit ===

attachment:confcommit

Permet une utilisation plus simple via `sudo` :
 * trouve le nom de l'auteur/committer par les variables d'environnement GIT_ et/ou SUDO_USER
 * `confcommit -a` : effectue un `git commit -a` pour committer toutes les modifications et suppression de fichiers
 * `confcommit -n` : effectue un `git add etc usr/local` pour ajouter tous les nouveaux fichiers

=== confcommit-status ===

attachment:confcommit-status

A lancer via un `cron` au moins quotidien, il donne la liste des modifications non encore enregistrées : fichiers modifiés, fichiers supprimés, nouveaux fichiers.

== Améliorations à prévoir ==

 . interfaçage avec apt : voir http://bryan-murdock.blogspot.com/2007/07/put-etc-under-revision-control-with-git.html
 . faire un serveur central gitweb (avec les commandes git-ssh-* ou autres, pour envoyer vers le dépot ?)
 . liaison avec le mail : paquet git-email ?

Git est un système de gestion de versions. Voir sa [http://fr.wikipedia.org/wiki/Git_(logiciel) page wikipédia]

Note : testé sur Gutsy... en cours de test sur Etch

Suivre la config d'une machine avec git

On veut pouvoir documenter les modifications faites dans /etc et dans /usr/local.

Installation

  1. On installe git :

    # aptitude install git-core
  2. On créée un dépôt général pour toute la machine. Attention à bien régler les droits : seul root doit pouvoir accéder au dépôt, sinon les fichiers du genre shadow seraient accessibles à tous.

    # cd /
    # git init   (ou "git init-db" sur une Debian Etch, git version 1.4)
    # chmod u=rwx,go= /.git
  3. Pour éviter d'avoir des "saletés" directement à la racine (/), on déplace le dépôt. Le répertoire /.git à la racine ne sera en fait qu'un lien symbolique vers le véritable emplacement du dépôt :

    # mkdir /var/lib/git
    # mv /.git /var/lib/git/root
    # ln -s /var/lib/git/root /.git
  4. On veut suivre /etc et /usr/local seulement, pour cela on modifie les exclusions au niveau du dépôt, dans le fichier /var/lib/git/root/info/exclude :

    #
    # Le fichier /var/lib/git/root/info/exclude 
    #
    /*
    !/etc
    /etc/mtab
    /etc/adjtime
    !/usr
    /usr/*
    !/usr/local
    *.dpkg-old
    *.dpkg-new
    *~
    .*.swp
  5. On fait les premiers ajouts et le premier commit :

    # cd /
    # git add etc usr/local
    # git commit -m "mise en route du suivi : /etc et /usr/local" --author "moi <email@auf.org>"

Utilisation

Après chaque modification d'un fichier, enregistrer les modifications :

  • # git commit -a

Si on veut suivre un nouveau fichier, ou ne committer les modifications que de ce fichier :

  • # git add fichier
    # git commit

et pour un répertoire (modifier exclude si c'est en dehors de /etc ou /usr/local):

  • # cd / ; git add un/reper/toire
    # git commit

Pour voir les modifications, plusieurs techniques en ligne de commande :

  • # tig    <-- à installer avec aptitude install tig
    # git whatchanged
    # git log -10
    # git show ...(le code du commit)...

Quelques scripts d'automatisation (wrapper)

A ajouter dans son ~/.bashrc :

  • export GIT_COMMITTER_NAME="Prenom NOM"
    export GIT_COMMITTER_EMAIL="prenom.nom@auf.org"

confcommit

attachment:confcommit

Permet une utilisation plus simple via sudo :

  • trouve le nom de l'auteur/committer par les variables d'environnement GIT_ et/ou SUDO_USER
  • confcommit -a : effectue un git commit -a pour committer toutes les modifications et suppression de fichiers

  • confcommit -n : effectue un git add etc usr/local pour ajouter tous les nouveaux fichiers

confcommit-status

attachment:confcommit-status

A lancer via un cron au moins quotidien, il donne la liste des modifications non encore enregistrées : fichiers modifiés, fichiers supprimés, nouveaux fichiers.

Améliorations à prévoir

Git/SuiviDeConfiguration (dernière édition le 2013-09-02 03:50:32 par JeanChristopheAndré)