Taille: 2861
Commentaire: la logique du exclude n'est pas si evidente (mais c'est documenté, et man fnmatch m'a donné les détails)
|
Taille: 3024
Commentaire:
|
Texte supprimé. | Texte ajouté. |
Ligne 60: | Ligne 60: |
Si on veut suivre un nouveau fichier : | Si on veut suivre un nouveau fichier, ou ne committer les modifications que de ce fichier : |
Ligne 62: | Ligne 62: |
# 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 65: | Ligne 66: |
# cd / ; git add un/reper/toire }}} | # cd / ; git add un/reper/toire # git commit}}} |
Ligne 67: | Ligne 69: |
Pour voir les modifications : | Pour voir les modifications, plusieurs techniques en ligne de commande : |
Ligne 69: | Ligne 71: |
# tig <-- à installer avec aptitude install tig # git whatchanged |
|
Ligne 70: | Ligne 74: |
# git show ...(le code du commit)...}}} ou bien installer le logiciel `tig` qui est tout simplement fantastique avec la couleur et tout ça : {{{ # aptitude install tig # tig |
# git show ...(le code du commit)... |
Ligne 77: | Ligne 77: |
== Petit script de commit automatique (wrapper) == | == Quelques scripts d'automatisation (wrapper) == |
Ligne 79: | Ligne 79: |
Ci-dessous une tentative de script `/usr/local/bin/confcommit` permettant une utilisation plus simple via `sudo` : | === confcommit === attachment:confcommit Permet une utilisation plus simple via `sudo` : |
Ligne 81: | Ligne 85: |
* `confcommit -a` : effectue un `git commit -a` * `confcommit -n` : effectue les `git add .` dans `/etc` et `/usr/local` pour ajouter tous les nouveaux fichiers |
* `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 |
Ligne 84: | Ligne 88: |
Le script : attachment:confcommit | === 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. |
Ligne 89: | Ligne 97: |
. 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 ?) |
. faire un serveur central gitweb (avec les commandes git-ssh-* ou autres, pour envoyer vers le dépot ?) |
Git est un système de gestion de versions. Voir sa [http://fr.wikipedia.org/wiki/Git_(logiciel) page wikipédia]
Note : j'ai testé tout ça sur Gutsy... merci aux Etchers de confirmer que ça passe aussi sur Debian Etch, qui n'est qu'en git 1.4... Sinon il faudra abandonner (oohh...) ou bien utiliser le git de backports.org (uuhh...)
Suivre la config d'une machine avec git
On veut pouvoir documenter les modifications faites dans /etc et dans /usr/local.
Installation
On installe git :
# aptitude install git-core
- On créée un dépôt général pour toute la machine :
# cd / # git init
Pour éviter d'avoir des "saletés" directement à la racine (/), on déplace le dépôt autre part :
# mkdir /var/lib/git # mv /.git /var/lib/git/root # ln -s /var/lib/git/root /.git # chmod u=rwx,go= /var/lib/git/root
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
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)
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 ?)