
Projet 32 - "POC serveur Git HTTP avec exécution de scripts au push"
Date de la création de cette note : 2025-08-23.
Quel est l'objectif de ce projet ?
Mon objectif est de développer un POC d'un serveur Git capable de :
- Gérer les opérations push et pull d'un repository Git via HTTP
- Déclencher automatiquement un script lors d'un push sur une branche
Pourquoi je souhaite réaliser ce projet ?
Je souhaite intégrer les apprentissages de ce POC dans le projet sklein-pkm-engine pour éliminer la dépendance à import-to-es-database.js
.
L'idée est de permettre la mise à jour de notes.sklein.xyz avec mes données locales uniquement par git push
, sans rien avoir à installer sur ma workstation.
Je souhaite aussi utiliser à l'avenir la technique mise au point dans ce POC dans le Projet 24 - Prototyper le gestionnaire de projet de mes rêves.
Par le passé, entre 2014 et 2016, j'ai déjà réalisé un projet de ce type, dans mon ancien projet CmsHub. J'avais utilisé dans un premier temps Gitolite et par la suite git2go.
Pour le moment, je n'ai aucune idée de comment je vais implémenter ce POC.
Repository de ce projet :
Todo :
- [x] Implémenter un serveur Git HTTP minimaliste en NodeJS
- [ ] Implémenter un système qui exécute du code JavaScript automatiquement après chaque
git push
, en lui transmettant la branche concernée et la liste des nouveaux commits publiés. - [ ] Implémenter une déclinaison de ce projet dans un SvelteKit Custom Server
Ressources :
Journaux liées à cette note :
Journal du dimanche 24 août 2025 à 12:42
Je viens de publier la première #iteration du Projet 32 - "POC serveur Git HTTP avec exécution de scripts au push" dans le repository node-git-http-server
.
L'implémentation d'un serveur Git HTTP via Apache ou nginx, en s'appuyant sur git-http-backend
, paraît plutôt simple à réaliser.
Comme mon objectif est d'intégrer cette fonctionnalité dans le projet sklein-pkm-engine et que j'ai une préférence pour les monolith, j'ai exploré les solutions basées sur NodeJS.
J'ai dans un premier temps étudié le projet node-git-http-server
et ensuite node-git-server
.
Ces deux projets semblent peu actifs.
J'ai échoué à faire fonctionner le projet node-git-server, probablement à cause d'une erreur de ma part — j'ai sans doute oublié d'initialiser au préalable les dépôts Git en mode bare
.
Par la suite, en utilisant Claude Sonnet 4, j'ai créé une implémentation basée uniquement sur les modules natifs de NodeJS et l'exécutable git-http-backend
, sans recourir à aucun package NodeJS externe.
Voici le résultat : node-git-http-server/server.js
.
Prochaines étapes
- Implémenter un système qui exécute du code JavaScript automatiquement après chaque
git push
, en lui transmettant la branche concernée et la liste des nouveaux commits publiés. - Implémenter une déclinaison de ce projet dans un SvelteKit Custom Server.