0280ef3ca1
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
85 lines
3.8 KiB
Markdown
85 lines
3.8 KiB
Markdown
# CLAUDE.md
|
|
|
|
## Ce qu'est ce dépôt
|
|
|
|
**Folio** est un moteur de blog PHP.
|
|
Ce répertoire est la **copie locale du dépôt Git** (`https://git.abonnel.fr/cedricAbonnel/folio`), branche DEV.
|
|
Il contient uniquement le code du moteur — pas de données, pas de credentials.
|
|
|
|
## Architecture
|
|
|
|
| Répertoire local | Site distant | Rôle |
|
|
|-----------------|-------------|------|
|
|
| `~/Projects/folio/` | — | Copie du dépôt Folio (branche DEV). On code ici. |
|
|
| `~/Projects/varlog/` | varlog.a5l.fr | Sync bidirectionnelle des articles varlog. Sert de site de test pour le moteur. |
|
|
| `~/Projects/fr.abonnel.www/` | www.abonnel.fr | Sync bidirectionnelle des articles abonnel.fr. A aussi servi au déploiement initial. |
|
|
|
|
**abonnel.fr** utilise Folio mais se met à jour seul via son UpdateChecker interne (vérifie `version.txt` sur Gitea). Aucune action manuelle nécessaire côté serveur.
|
|
|
|
## Articles (`data/`)
|
|
|
|
Les articles ne sont pas versionnés dans ce dépôt. Ils ont leur propre git local dans chaque workspace site (`~/Projects/varlog/data/`, `~/Projects/fr.abonnel.www/data/`), synchronisé de façon bidirectionnelle avec le serveur distant.
|
|
|
|
## Modifier le moteur
|
|
|
|
### Branches
|
|
|
|
| Branche | Rôle |
|
|
|---------|------|
|
|
| `dev` | Branche d'intégration permanente. **Tout le développement courant se fait ici.** |
|
|
| `main` | Branche de production. **Jamais de commit direct.** |
|
|
| `feat/*` | Branches feature optionnelles pour du travail isolé, mergées dans `dev`. |
|
|
|
|
### Workflow
|
|
|
|
1. Toujours travailler sur `dev` (ou une branche feature mergée dans `dev`) :
|
|
```bash
|
|
git checkout dev
|
|
```
|
|
2. **Tester sur varlog.a5l.fr** à chaque itération (rsync des fichiers locaux, DB persistante) :
|
|
```bash
|
|
~/Projects/varlog/scripts/sync.sh
|
|
# puis tester sur http://varlog.acegrp.lan
|
|
```
|
|
3. Quand `dev` est stable et prête pour la production :
|
|
- Bumper `public/version.txt` (semver)
|
|
- Ajouter une entrée `CHANGELOG.md` (`### Ajouté / Corrigé / Modifié`)
|
|
- Ouvrir une **PR `dev` → `main`** sur Gitea
|
|
4. Merger la PR → abonnel.fr se met à jour automatiquement.
|
|
|
|
**Règle absolue : ne jamais commiter directement sur `main`.** Le script `scripts/push.sh` bloque cette action.
|
|
|
|
### Pourquoi `dev` et non des branches feature à la volée
|
|
|
|
- La DB de varlog (test) accumule les migrations au fil du temps — changer de branche ne fait pas reculer les migrations.
|
|
- Travailler toujours sur `dev` évite toute désynchronisation entre le code rsyncé et la DB.
|
|
|
|
## Données articles (`DATA_PATH`)
|
|
|
|
Les articles sont stockés dans un répertoire **hors du dépôt Folio**, configurable via `DATA_PATH` dans `.env` (défaut production : `/srv/data/folio`).
|
|
|
|
| Environnement | Dépôt local articles | Dépôt Gitea | Serveur |
|
|
|--------------|---------------------|------------|---------|
|
|
| varlog | `~/Projects/varlog-data/` | `cedricAbonnel/varlog` | `varlog:/srv/data/folio` |
|
|
| abonnel.fr | `~/Projects/fr.abonnel.www-data/` | `cedricAbonnel/abonnel-www` | `abonnel-wiki:/srv/data/folio` |
|
|
|
|
Sync bidirectionnelle via **git** (pas rsync). Scripts dans `~/Projects/varlog/scripts/` et `~/Projects/fr.abonnel.www/scripts/` :
|
|
- `pull-data.sh` : commit auto serveur + git pull local
|
|
- `push-data.sh` : git commit local + git push + git pull serveur
|
|
- `sync.sh` : moteur (rsync) + articles (git bidirectionnel)
|
|
|
|
## Asymétrie de déploiement moteur
|
|
|
|
| Site | Mécanisme | Raison |
|
|
|------|-----------|--------|
|
|
| varlog (test) | rsync depuis `~/Projects/folio/` | Itération rapide, pas de contrainte de stabilité |
|
|
| abonnel.fr (prod) | `git pull origin main` sur le serveur | Contrôle via PR/merge, UpdateChecker autonome |
|
|
|
|
Pour initialiser git sur un serveur abonnel.fr déployé via rsync : `scripts/git-init-remote.sh`
|
|
|
|
## Ne pas mettre ici
|
|
|
|
- `.env` (credentials → dans chaque workspace site)
|
|
- `data/` (articles → dans chaque workspace site)
|
|
- `vendor/` (non versionné)
|