> ## Documentation Index
> Fetch the complete documentation index at: https://docs.windsurf.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Worktrees

> Configurer automatiquement des worktrees Git pour les tâches Cascade parallèles

Windsurf prend en charge l'utilisation de worktrees Git pour exécuter des tâches Cascade en parallèle sans perturber votre workspace principal.

Avec les worktrees, chaque conversation Cascade dispose de sa propre session, ce qui permet à Cascade d'apporter des modifications ou de construire et tester du code sans interférer avec votre workspace principal.

<div id="basic-worktree-usage">
  ## Utilisation de base des worktrees
</div>

La façon la plus simple de commencer à utiliser les worktrees consiste à passer en mode « Worktree » dans le coin inférieur droit du champ de saisie de Cascade.

<Frame>
  <img style={{ maxHeight: "500px" }} src="https://mintcdn.com/codeium/U6QOrK-OfUtO4wfJ/assets/windsurf/worktree-toggle.png?fit=max&auto=format&n=U6QOrK-OfUtO4wfJ&q=85&s=8bb3e54349d5c84d4db81210a67ee931" width="873" height="224" data-path="assets/windsurf/worktree-toggle.png" />
</Frame>

<Note>
  Actuellement, vous ne pouvez passer à un worktree qu'au début d'une session Cascade. Les conversations ne peuvent pas être déplacées vers un autre worktree une fois qu'elles ont commencé.
</Note>

Une fois que Cascade a apporté des modifications aux fichiers dans le worktree, vous pouvez cliquer sur « merge » pour réintégrer ces modifications dans votre workspace principal.

<Frame>
  <img style={{ maxHeight: "500px" }} src="https://mintcdn.com/codeium/U6QOrK-OfUtO4wfJ/assets/windsurf/worktree-merge.png?fit=max&auto=format&n=U6QOrK-OfUtO4wfJ&q=85&s=bb47b232dd861f3e37255b9b82fb18bc" width="724" height="98" data-path="assets/windsurf/worktree-merge.png" />
</Frame>

<div id="location">
  ## Emplacement
</div>

Les worktrees sont organisés par nom de dépôt dans `~/.windsurf/worktrees/<repo_name>`.

Chaque worktree se voit attribuer un nom aléatoire unique.

Pour afficher la liste des worktrees actifs, exécutez `git worktree list` dans le répertoire du dépôt.

<Warning>
  Étant donné que les worktrees se trouvent dans un répertoire différent de celui de votre projet d’origine, **les systèmes de build ou les outils qui reposent sur des chemins relatifs** (par exemple, des références `../shared-lib`, des dépendances reliées par des liens symboliques ou des dépendances de source de monorepo résolues par chemin) peuvent ne plus fonctionner correctement à l’intérieur d’un worktree. Si votre projet utilise des chemins relatifs en dehors de la racine du dépôt, configurez un hook [`post_setup_worktree`](./worktrees#setup-hook) pour créer les liens symboliques nécessaires ou copier les fichiers requis aux emplacements attendus.
</Warning>

<div id="setup-hook">
  ## Hook d'initialisation
</div>

Chaque worktree contient une copie des fichiers de votre dépôt, mais n'inclut pas les fichiers `.env` ni les autres paquets qui ne sont pas sous contrôle de version.

Si vous souhaitez inclure des fichiers ou paquets supplémentaires dans chaque worktree, vous pouvez utiliser le hook [`post_setup_worktree`](./hooks#post_setup_worktree) pour les copier dans le répertoire du worktree.

Le hook `post_setup_worktree` s'exécute après la création et la configuration de chaque worktree. Il est exécuté à l'intérieur du nouveau répertoire de **worktree**.

La variable d'environnement `$ROOT_WORKSPACE_PATH` pointe vers le chemin du workspace d'origine et peut être utilisée pour accéder à des fichiers ou exécuter des commandes par rapport au dépôt d'origine.

<div id="example">
  ### Exemple
</div>

Copiez les fichiers d'environnement et installez les dépendances lorsqu'un nouveau worktree est créé.

**Config** (dans `.windsurf/hooks.json`) :

```json theme={null}
{
  "hooks": {
    "post_setup_worktree": [
      {
        "command": "bash $ROOT_WORKSPACE_PATH/hooks/setup_worktree.sh",
        "show_output": true
      }
    ]
  }
}
```

**Script** (`hooks/setup_worktree.sh`) :

```bash theme={null}
#!/bin/bash

# Copier les fichiers d'environnement depuis le workspace d'origine
if [ -f "$ROOT_WORKSPACE_PATH/.env" ]; then
    cp "$ROOT_WORKSPACE_PATH/.env" .env
    echo "Fichier .env copié"
fi

if [ -f "$ROOT_WORKSPACE_PATH/.env.local" ]; then
    cp "$ROOT_WORKSPACE_PATH/.env.local" .env.local
    echo "Fichier .env.local copié"
fi

# Installer les dépendances
if [ -f "package.json" ]; then
    npm install
    echo "Dépendances npm installées"
fi

exit 0
```

Ce hook garantit que, pour chaque worktree, la configuration d'environnement et les dépendances nécessaires sont automatiquement installées.

<div id="cleanup">
  ## Nettoyage
</div>

Windsurf nettoie automatiquement les anciens worktrees lorsque vous créez un nouveau worktree afin d’éviter une utilisation excessive du disque. Chaque workspace peut avoir jusqu’à **20** worktrees.

Les worktrees sont nettoyés en fonction de la date de leur dernier accès — les plus anciens sont supprimés en premier. Ce nettoyage s’effectue workspace par workspace, ce qui garantit que les worktrees provenant de différents dépôts restent indépendants les uns des autres.

De plus, si vous supprimez manuellement une conversation Cascade, Windsurf supprimera automatiquement le worktree associé.

<div id="source-control-panel">
  ## Panneau de contrôle du code source
</div>

Par défaut, Windsurf n’affiche pas les worktrees créés par Cascade dans le panneau SCM.
Vous pouvez régler `git.showWindsurfWorktrees` sur `true` dans vos paramètres pour passer outre ce comportement et afficher les worktrees dans le panneau SCM.
