diff --git a/.gitignore b/.gitignore index 1e71584..c377a69 100644 --- a/.gitignore +++ b/.gitignore @@ -9,5 +9,14 @@ services/docv/target/ # Surcharges locales pull-sync (cron) cron/config.local.env +# projects/ : ignorer tout répertoire d'id sous projects/ sauf les squelettes versionnés (conf, workspace, etc.) +projects/* +!projects/README.md +!projects/active-project.json.example +!projects/enso/ +!projects/enso/** +!projects/smart_ide/ +!projects/smart_ide/** + # Projet IDE actif (copie locale de active-project.json.example) projects/active-project.json diff --git a/docs/features/remote-deployed-data-ssh.md b/docs/features/remote-deployed-data-ssh.md index 875ebdb..f19978c 100644 --- a/docs/features/remote-deployed-data-ssh.md +++ b/docs/features/remote-deployed-data-ssh.md @@ -68,7 +68,7 @@ Objectif : indiquer **quel** `projects//` est actif pour l’éditeur et les 1. **Fichier local (recommandé)** - Copier [`projects/active-project.json.example`](../projects/active-project.json.example) vers **`projects/active-project.json`**. - Ce fichier est **ignoré par Git** (voir racine `.gitignore`). - - Champs : **`id`** (obligatoire, ex. `enso`), **`default_env`** (optionnel : `test` | `pprod` | `prod`). + - Champs : **`id`** (obligatoire, ex. `enso`), **`default_env`** (optionnel : `test` | `pprod` | `prod`). L’exemple versionné peut contenir d’autres clés purement documentaires (ex. **`notes`**) ignorées par les automatisations. 2. **Paramètres du fichier workspace VS Code / Cursor** - Dans le **`.code-workspace`** que vous ouvrez (ex. [`projects/enso/smart_ide.code-workspace`](../enso/smart_ide.code-workspace)), renseigner : diff --git a/projects/README.md b/projects/README.md index 6b50982..71c2c9b 100644 --- a/projects/README.md +++ b/projects/README.md @@ -2,6 +2,8 @@ Ce répertoire, à la **racine du monorepo `smart_ide`**, ne contient que les **fichiers de configuration** attendus par **`ia_dev`** (`conf.json` par identifiant de projet). Ce n’est **pas** le répertoire des **clones Git** des applications. +Les **sous-répertoires** `projects//` non listés dans le **`.gitignore`** à la racine (exceptions pour les ids versionnés) restent **ignorés par Git** : pour versionner un nouvel id, ajouter les lignes `!projects//` et `!projects//**` à côté des exceptions existantes. + ## Clones applicatifs (docv, stacks métier, etc.) Les dépôts sources des produits (ex. backend **docv** sous un chemin du type `…/enso/docv`, autres apps) doivent vivre **ailleurs**, selon la convention du poste — typiquement un répertoire **frère** du monorepo, par ex. **`../projects//`** (relatif à la racine `smart_ide`), **distinct** de `./projects/` ici. @@ -41,7 +43,7 @@ Chaque `projects//conf.json` peut contenir une clé **`smart_ide`** (hors p ### Projet actif pour l’éditeur / Cursor -1. Copier [`active-project.json.example`](./active-project.json.example) vers **`projects/active-project.json`** (fichier **non versionné**) et renseigner **`id`** (`smart_ide`, `enso`, …). +1. Copier [`active-project.json.example`](./active-project.json.example) vers **`projects/active-project.json`** (fichier **non versionné**) et renseigner **`id`** (`smart_ide`, `enso`, …). La clé optionnelle **`notes`** dans l’exemple est informative ; les outils ne s’en servent pas. 2. Dans un fichier **`.code-workspace`**, renseigner **`smartIde.activeProjectId`** dans **`settings`** (ex. [`enso/smart_ide.code-workspace`](./enso/smart_ide.code-workspace)). Les agents Cursor lisent cette convention via [`.cursor/rules/smart-ide-ia-dev-bridge.mdc`](../.cursor/rules/smart-ide-ia-dev-bridge.mdc). diff --git a/projects/active-project.json.example b/projects/active-project.json.example index 7bb51a2..e7c73f6 100644 --- a/projects/active-project.json.example +++ b/projects/active-project.json.example @@ -1,4 +1,5 @@ { "id": "smart_ide", - "default_env": "test" + "default_env": "test", + "notes": "Copy this file to projects/active-project.json (gitignored). Field id must match an existing projects//conf.json. Field default_env is one of: test, pprod, prod — used by agents when the environment is not specified." }