**Motivations:** - Single canonical documentation tree under docs/; reduce drift between README copies. **Evolutions:** - Add docs/repo/ with operational guides (cron, systemd, projects, logs, docv, ia_dev, services, scripts, extension). - Replace scattered README.md files with pointers to docs/repo/*.md. - Refresh docs/README.md index and cross-links across docs/, .cursor rules/agents. - Bump ia_dev submodule to matching doc pointer commits.
2.9 KiB
Tirage Git planifié — clones projects/*/conf.json
Comportement
Le script cron/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 |
|---|---|
cron/config.env |
Versionné : PULL_SYNC_ENABLED, PULL_SYNC_MODE (all | project), PULL_SYNC_PROJECT_ID, PULL_SYNC_LOG |
cron/config.local.env |
Optionnel, non versionné (cron/config.local.env.example) — surcharge machine |
Le script cron/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 — voir logs-directory.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é depuissystemd/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.
Détail des unités : systemd-units.md.
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 cron/fragments/*.cron
Fichiers commentés servant de rappel ; la configuration centralisée reste dans cron/config.env. En systemd utilisateur (recommandé) : scripts/install-git-pull-systemd-user.sh.
Hooks AnythingLLM
Un post-merge sur un clone peut s’exécuter après un merge --ff-only : voir scripts/anythingllm-pull-sync/ et script-anythingllm-pull-sync.md.