Nicolas Cantu 4d04eed0f3 feat: relative paths in projects/conf.json and cron pull resolution
- project_path, deploy.*, cron: resolve from monorepo root; ia_dev submodule bumped
- enso/smart_ide.code-workspace folder paths ../../enso, ../../builazoo
- Document in projects/README, remote-deployed-data-ssh.md
2026-04-03 18:03:59 +02:00
..

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:

  1. git fetch origin <branche_courante>
  2. si origin/<branche> est en avance en fast-forwardgit merge --ff-only origin/<branche>
  3. 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/:

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 origin et 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 sexécuter après un merge --ff-only : voir scripts/anythingllm-pull-sync.