Gné!
Gitli, hum décomposons le nom. Git et li. Git ça on connait, le magnifique gestionnaire de version développé par Linus Torvalds. Gestion perfectionné des branches, des remotes etc... Bref une merveille (bien que au code un peu désordonné mais ne tombons pas dans le troll baveux).
Li est bien évidement la première syllabe du désormais bien connu Linux. Mais que symbolise cette association ?
La réponse est bien simple. Une distribution linux entièrement géré par git ! Mais quelle idée folle ! Et impossible nous dira-t-on. Que neni, nous n'y croyons pas. Laissez moi vous expliquer le concept.
Installation
Tout simplement, clonez le dépot à partir d'un système hôte (livecd après formattage des partitions par exemple) :
# mkdir /mnt/chroot
# cd /mnt/chroot
# git clone git://github.com/additk1ve/master.git
Ou si vous désirez une autre architecture que la principale, clonez une autre branche (x86_64, etc...)
Mise à jour du système de base
Ici on suppose que vous avez démarré avec Gitli.
Un petit backup ?
Il vous suffira de clone le dépot /.git de votre disque dur :)
Hum, marre de la version stable, je veux passer en testing !
De nouvelles versions de logiciels ? Des paquets construits différements ? Un système de base expérimental ?
# cd /
# git checkout x86_64-testing
Si vous êtes en x86_64 bien évidement :)
Je désire forker votre distribution, comment faire ?
Il vous suffit de créer un dépot public, par exemple git@github.com:linkdd/my_gitli.git :
# cd /
# git remote add origin git@github.com:linkdd/my_gitli.git
git add // git commit // other funny git's stuff
# git push origin master
Hop it's done ! :)
Et pour les paquets ?
Présentation de gitports
Vous connaissez certainement portage (Gentoo), ou les ports BSD. Imaginez un mix des deux, géré par git !
Le concept est simple, on a un dépot git contenant bon nombre de GITBUILD (qui sont de bête script shell qui s'occupe de compiler le dit logiciel). On clone le dépot on lance le script principal (nommé gitports). Celui-ci lance la compilation du logiciel, va l'installer dans une sous=arborescence, y initialiser un dépot git et merger le tout dans / !
Pas clair ? Ca va venir...
Installer gitports
# cd /usr
# git clone git://github.com/linkdd/gitports.git
# cd gitports
# ln -sv /usr/gitports/gitports /usr/bin/gitports
Le lien symbolique ajoute ici le script gitports au PATH et permettra la mise à jour automatique lors du git pull
# cp gitports.conf.sample /etc/gitports.conf
Editez ce fichier pour l'adapter à vos besoin.
Pour mettre à jour gitports, un simple git pull suffit.
Installation/mise à jour d'un paquet
# gitports install www/cream-browser
Le script cherche si /usr/gitports/www/cream-browser/GITBUILD existe.
Si oui on charge les données du scripts (définition de quelques variables et quelques fonctions utilies)
On lance les fonctions du GITBUILD.
Le logiciel sera installé dans /usr/gitports/www/cream-browser/fakeroot
On initialise un dépot git dans ce dernier dossier et on y ajoute tout le contenu
On retourne dans le dossier racine avec : (ce qui suit est fait automatiquement)
# cd /
# git remote add cream-browser /usr/gitports/www/cream-browser/fakeroot/.git
# git pull cream-browser master
Cette dernière commande pourra être utilisé pour mettre à jour le logiciel après compilation de la nouvelle version.
Ainsi la commande git remote fournira une liste des paquets installés, git remote | grep <paquet> une recherche parmi ceux-ci. :)
Certains détails restent à peaufiner comme la gestion des fast-forwards généré par un logiciel qui installe les mêmes fichiers que le sysbase ou un autre logiciel.
Désinstaller ?
Il suffira de lister les fichiers du fakeroot, les supprimer du trueroot et retirer le remote avec git remote rm <le soft>. Ceci sera aussi fait automatiquement par le script gitports.
Conclusion.
Un travail de forcené nous attend pour gérer tout les problèmes, les résoudres et ainsi fournir une distribution stable et performante. Et purement geekesque (stop troll !!!!! :D), comme nous la décrivons, elle est RTFM (Read The Fucking Manual) car il faudra lire bien attentivement la doc de git autant coté dev que coté user.
Je vous invite à rejoindre le canal #gitli @ irc.freenode.net
0