967
Commentaire: premier draft, en cours
|
3333
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 7: | Ligne 9: |
== Installation == |
|
Ligne 8: | Ligne 12: |
{{{ | {{{ |
Ligne 12: | 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 15: | Ligne 19: |
# git init | # git init (ou "git init-db" sur une Debian Etch, git version 1.4) # chmod u=rwx,go= /.git |
Ligne 18: | 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 22: | Ligne 27: |
# chmod u=rwx /var/lib/git/root | # ln -s /var/lib/git/root /.git |
Ligne 25: | Ligne 30: |
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/excludes` : {{{ |
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` : {{{ |
Ligne 31: | Ligne 36: |
!/etc /etc/mtab /etc/adjtime !/usr /usr/* |
|
Ligne 32: | Ligne 42: |
!/etc | *.dpkg-old *.dpkg-new *~ .*.swp |
Ligne 35: | Ligne 48: |
5. On fait les premiers ajouts : | 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 : |
Ligne 37: | Ligne 59: |
# cd / # git add /etc # git add /usr/local |
# 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)... |
Ligne 41: | Ligne 77: |
== 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 == . 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
On installe git :
# aptitude install git-core
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
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
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)
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 ?