# 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 pull` et `git checkout`. Jamais de `git 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 1. Au démarrage, le programme vérifie si son propre dossier est un dépôt git 2. Si oui, il fait un `git fetch` et compare avec le remote 3. Si une MAJ du programme est dispo, il propose de la télécharger (`git pull`) 4. Après mise à jour, il demande un redémarrage ### Vérification des dépôts 1. Lit la liste des dépôts depuis `config.ini` (chemins relatifs à l'exe) 2. Pour chaque dépôt : - `git fetch` pour récupérer l'état distant - Compare commits locaux vs distants - Détecte les fichiers supprimés/modifiés localement 3. Affiche le résultat dans une interface graphique (tkinter) 4. Propose pour chaque dépôt : - `git pull` si nouveaux commits distants - `git checkout -- .` si fichiers locaux manquants/modifiés ## Configuration (config.ini) Supporte plusieurs sections `[repo:NomDuRepo]` : ```ini [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 distant - `path` : 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, format `YYYY-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 ```bat 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