- Default PULL_SYNC_LOG to logs/git-pull-projects.log; add logs/README and gitignore - Add services/ia_dev integration README and .env.example - Replace docs/ia_dev-submodule.md with ia_dev-module.md; update ecosystem and README links - Point ia_dev submodule to commit with smart_ide_logs.sh
2.9 KiB
Tirage Git planifié — clones projects/*/conf.json
Comportement
Le script git-pull-project-clones.sh parcourt ../projects/<id>/ (fichiers conf.json), lit project_path, et pour chaque dépôt Git :
git fetch origin <branche_courante>- si
origin/<branche>est en avance en fast-forward →git merge --ff-only origin/<branche> - sinon → message explicite, pas de merge forcé
Configuration centralisée
| Fichier | Rôle |
|---|---|
config.env |
Versionné : PULL_SYNC_ENABLED, PULL_SYNC_MODE (all | project), PULL_SYNC_PROJECT_ID, PULL_SYNC_LOG |
config.local.env |
Optionnel, non versionné (voir config.local.env.example) — surcharge machine |
Le script git-pull-wrapper.sh charge ces fichiers puis appelle git-pull-project-clones.sh et append la sortie dans PULL_SYNC_LOG (défaut : logs/git-pull-projects.log à la racine du dépôt — voir logs/README.md).
Mise en place recommandée : systemd utilisateur
Depuis la racine du dépôt smart_ide :
./scripts/install-git-pull-systemd-user.sh
Cela installe sous ~/.config/systemd/user/ :
git-pull-project-clones.service(généré depuis../systemd/user/git-pull-project-clones.service.in)git-pull-project-clones.timer(../systemd/user/git-pull-project-clones.timer) — toutes les 15 minutes (OnCalendar=*:0/15)
Commandes utiles :
systemctl --user status git-pull-project-clones.timer
systemctl --user list-timers | grep git-pull
journalctl --user -u git-pull-project-clones.service -n 50 --no-pager
Pour changer la fréquence : éditer le fichier timer dans le dépôt, relancer install-git-pull-systemd-user.sh, ou éditer directement ~/.config/systemd/user/git-pull-project-clones.timer puis systemctl --user daemon-reload.
Prérequis
jq- Clones avec remote
originet branche suivie (ex.test)
Désactiver un projet
Dans projects/<id>/conf.json : "cron": { "git_pull": false }.
Pour tout arrêter : PULL_SYNC_ENABLED=0 dans config.env ou config.local.env, ou systemctl --user disable --now git-pull-project-clones.timer.
Crontab (alternative)
Si tu préfères cron au lieu de systemd : une ligne qui appelle ./cron/git-pull-wrapper.sh (pas besoin de redéfinir les variables si tu utilises uniquement config.env). Fragments : fragments/ (à aligner sur le wrapper).
Hooks AnythingLLM
Un post-merge sur un clone peut s’exécuter après un merge --ff-only : voir scripts/anythingllm-pull-sync.