3.6 KiB
3.6 KiB
Git Update Checker
Description
Outil Windows (.exe) avec interface graphique qui vérifie les mises à jour de plusieurs dépôts Git distants et propose de les télécharger. Conçu pour être placé sur une clé USB dont la lettre de lecteur peut changer. Le programme peut s'auto-mettre à jour car il est lui-même dans un dépôt git.
Structure du projet
Lanceur-geco/
├── git_updater.py # Script principal Python (GUI tkinter)
├── config.ini # Configuration multi-repo
├── build.bat # Script de compilation en .exe via PyInstaller
├── log/ # Dossier de logs (créé automatiquement, 1 fichier par jour)
└── CLAUDE.md
Règles importantes
- Tous les chemins doivent être relatifs à l'emplacement de l'exe. Jamais de chemin absolu (pas de
C:\,G:\, etc.). Utiliser..et des chemins relatifs pour référencer les dossiers. - Accès lecture seule : le programme ne fait que
git fetch,git pulletgit checkout. Jamais degit push,git commit,git add, ou toute opération d'écriture vers le remote. - Multi-repo : le programme peut surveiller plusieurs dépôts Git configurés dans
config.ini.
Fonctionnement
Auto-update
- Au démarrage, le programme vérifie si son propre dossier est un dépôt git
- Si oui, il fait un
git fetchet compare avec le remote - Si une MAJ du programme est dispo, il propose de la télécharger (
git pull) - Après mise à jour, il demande un redémarrage
Vérification des dépôts
- Lit la liste des dépôts depuis
config.ini(chemins relatifs à l'exe) - Pour chaque dépôt :
git fetchpour récupérer l'état distant- Compare commits locaux vs distants
- Détecte les fichiers supprimés/modifiés localement
- Affiche le résultat dans une interface graphique (tkinter)
- Propose pour chaque dépôt :
git pullsi nouveaux commits distantsgit checkout -- .si fichiers locaux manquants/modifiés
Configuration (config.ini)
Supporte plusieurs sections [repo:NomDuRepo] :
[repo:Batch]
url = http://192.168.1.235:3125/zogzog/Batch
path = ../Batch
[repo:Powershell]
url = http://192.168.1.235:3125/zogzog/Powershell
path = ../Powershell
url: URL du dépôt Git distantpath: Chemin relatif vers le dossier local du dépôt (relatif à l'exe)
Logging
- Les logs sont écrits dans
log/à côté de l'exe (1 fichier par jour, formatYYYY-MM-DD.log) - Les vieux logs sont nettoyés automatiquement (30 jours de rétention)
- Chaque action git, erreur, et résultat est loggé avec timestamp
- Bouton "Ouvrir les logs" dans la GUI pour accéder au dossier
Build
build.bat
Requiert Python + pip. Installe PyInstaller automatiquement si absent.
Produit dist/GitUpdateChecker.exe. Copier config.ini à côté de l'exe.
Contraintes techniques
- Chemins relatifs : Tout est relatif à l'exe, jamais de chemin absolu
- Encodage : Force UTF-8 pour les caractères Unicode
- Clé USB : Fonctionne sur n'importe quelle lettre de lecteur
- Git requis : Git doit être installé et dans le PATH de la machine
- Serveur Gitea : Le remote origin pointe vers une instance Gitea locale (192.168.1.235:3125)
- Lecture seule : Aucune opération d'écriture vers le remote (pas de push/commit)
- Interface : GUI tkinter (inclus dans Python, pas de dépendance externe)
- Logs : Dossier
log/à côté de l'exe, rotation automatique 30 jours
Conventions
- Langage : Python 3, pas de dépendances externes (seulement stdlib + tkinter)
- Interface : GUI tkinter en français
- Langue : Français pour l'interface utilisateur