hscc

The personnal website source code of 'Hugo Soucy' <https://hugo.soucy.cc/>. Creates from an homebrewed static website generator.
Log | Files | Refs

commit 36911c67c71c4160eac05d3df296c14feee96646
parent 2bf952770b46d23286ffca53daba68e9c2c30911
Author: Hugo Soucy <hugo@soucy.cc>
Date:   Sun, 20 Dec 2020 21:55:55 -0500

Add a new text about stagit

Diffstat:
Acontent/2020/tx/stagit.lua | 7+++++++
Acontent/2020/tx/stagit.md | 130+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 137 insertions(+), 0 deletions(-)

diff --git a/content/2020/tx/stagit.lua b/content/2020/tx/stagit.lua @@ -0,0 +1,7 @@ +return { + title = "Stagit pour exposer ses dépôts git sur le Web", + date = "2020-12-19", + datetime = "13:33:39", + posttype = "text", + keywords = { "stagit","git","ssg","tuto" } +} diff --git a/content/2020/tx/stagit.md b/content/2020/tx/stagit.md @@ -0,0 +1,130 @@ +# Stagit pour exposer ses dépôts git sur le Web + +Stagit est une application, écrite en *C*, qui crée des pages HTML +statiques pour vos répertoires git auto-hébergés. C'est une +alternative sobre à *gitweb* ou à *cgit*. + +Ce printemps, j'ai aussi écrit un autre tutoriel pour ceux qui veulent +justement [auto-héberger leurs dépôts git](https://hugo.soucy.cc/txt/2020/04/autoheberger-ses-depots-git.html). + +Mes exemples sont sous OpenBSD, mais cela peut s'appliquer facilement +à n'importe quel environment unix. + +## Prérequis + +* Être en mesure de vous connnecter à distance sur votre serveur par + SSH. +* Un dépôt git doit exister sur votre serveur. + +## Se connecter au serveur par SSH et installer stagit + +* `ssh utilisateur@addr.ip.tld` +* `pkg_add -v stagit` + +Si vous n'avez pas de paquet pour stagit sur la distribution unix de +votre serveur web, vous pouvez récupérer le code sur le site officiel: +votre <https://codemadness.org/git/stagit/>. + +Après l'installation deux applications se retrouvent normalement dans +votre répertoire `/usr/local/bin`. En tapant `ls -la +/usr/local/bin/stagit*` vous pouvez vérifier si c'est bien le cas: + + -rwxr-xr-x 1 root bin 44604 May 9 2020 /usr/local/bin/stagit + -rwxr-xr-x 1 root bin 20460 May 9 2020 /usr/local/bin/stagit-index + +Si stagit ne se trouve pas à cet endroit, vous pouvez le chercher avec +la commande `whereis stagit`. Au cas où cette commande ne retourne +rien, cela veut dire probablement que l'installation ne s'est pas bien +passée. + +## Comment stagit fonctionne? + +Stagit fabrique un site web où vous vous trouvez à partir du dépôt git +que vous lui indiquez: + + stagit /home/git/monprojet.git + +Ce qui va produire quelque chose qui va ressembler à ça: + + -rw-r--r-- 1 git www 34963 Dec 19 09:50 atom.xml + drwxr-xr-x 2 git www 3584 Dec 19 09:50 commit + drwxr-xr-x 8 git www 512 Dec 18 16:19 file + -rw-r--r-- 1 git www 141243 Dec 19 09:50 files.html + -rw-r--r-- 1 git www 16256 Dec 19 09:50 log.html + lrwxr-xr-x 1 git www 11 Dec 19 09:50 logo.png -> ../logo.png + -rw-r--r-- 1 git www 1197 Dec 19 09:50 refs.html + lrwxr-xr-x 1 git www 12 Dec 19 09:50 style.css -> ../style.css + +Pour plus de détail la *man page* `man stagit`. + +## À quoi sert `stagit-index` + +Comme c'est indiqué dans son nom, stagit-index va créer un page +d'index avec tous les dépôts que vous allez lui soumettre: + + stagit-index /home/git/depot-0.git /home/git/depot-1.git /home/git/depot-2.git + +Le code HTML de cet index s'affichera directement dans la console +(stdout). Pour l'écrire dans un fichier `index.html`, vous devez le +préciser dans votre commande: + + stagit-index /home/git/abc.git /home/git/xyz.git > index.html + +## Automatiser le tout avec git et un script de `post-receive` + +Évidemment, nous ne voulons pas devoir lancer ces commandes à chaque +commit que nous poussons vers notre serveur distant. Nous allons donc +écrire un script qui automatisera tout ça. + +### Crochet à la rescousse + +Dans votre dépôt git distant, aller dans le répertoire **hooks**. Là +nous pouvons créer des scripts qui s'exécuterons à différents moments +d'une action. Le nôtre devra se lancer à la suite d'une réception d'un +`git push`. Pour plus de détails sur les *githooks*, référez vous à la +documentation officiel: <https://git-scm.com/docs/githooks>. + +Copiez un des scripts présent et renommez-le *post-receive* et +ouvrez-le avec nano ou un autre éditeur texte de votre choix: + + cp post-receive-email.sample post-receive && nano post-receive + +Effacez tout ce qui se trouve dans le fichier et copiez ce qui se +trouve ci-dessous: + + #!/bin/sh -e + + # Les chemins doivent être absolues. + + # L'emplacement du dépôt git. + gitdir="/home/git/votre-depot-git.git" + + # L'emplacement du site. + dstdir="/var/www/votre-site-web.com/git" + + # Créer les pages HTML. + mkdir -p "$dstdir/hscc" + (cd "$dstdir/hscc" && stagit "$gitdir") + + # L'emplacement de tous les dépôts. + gitall="/home/git" + + # Créer l'index + stagit-index "${gitall}/"*/ > "${dstdir}/index.html" + + # Créer des liens symboliques pour les styles et le logo. + (cd "$dstdir/hscc" && ln -sf ../style.css style.css && ln -sf ../logo.png logo.png) + + echo "post-receive is done" + + +Sauvegardez et sortez. Pour tester votre script: + + ./post-receive + +Ensuite, allez à l'emplacement supposé du site, pour voir si les +fichiers ont bien été créé. Si tout fonctionne comme prévu, à partir +de maintenant, lorque vous poursserez vos changements vers votre dépôt +git, votre site stagit sera mis à jour automatiquement. + +Si vous avez les questions n'hésitez pas à commniquer avec moi! Merci