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

# Worktrees

> Configure automatiquement des worktrees Git pour les tâches Cascade en parallèle

Devin Desktop permet d'utiliser des worktrees Git pour exécuter des tâches Cascade en parallèle sans perturber votre espace de travail principal.

Avec les worktrees, chaque conversation Cascade dispose de sa propre session, ce qui permet à Cascade d'apporter des modifications, d'effectuer un build et de tester le code sans perturber votre espace de travail principal.

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

Le moyen le plus simple de commencer à utiliser les worktrees est de 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/cognitionai/WE51TvKjsiyk1ZHl/desktop/assets/windsurf/worktree-toggle.png?fit=max&auto=format&n=WE51TvKjsiyk1ZHl&q=85&s=c360271ef16d55e236aa5a0c3f4844f6" width="873" height="224" data-path="desktop/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 espace de travail principal.

<Frame>
  <img style={{ maxHeight: "500px" }} src="https://mintcdn.com/cognitionai/WE51TvKjsiyk1ZHl/desktop/assets/windsurf/worktree-merge.png?fit=max&auto=format&n=WE51TvKjsiyk1ZHl&q=85&s=574816f7a9d6a1b49b6d931c2ede8051" width="724" height="98" data-path="desktop/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 reçoit un nom aléatoire unique.

Pour afficher la liste des worktrees actifs, vous pouvez exécuter `git worktree list` depuis le répertoire du dépôt.

<Warning>
  Comme 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** (p. ex. des références `../shared-lib`, des dépendances liées par lien symbolique ou des dépendances source de monorepo résolues via un chemin) peuvent ne pas fonctionner dans 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 de configuration initiale
</div>

Chaque worktree contient une copie des fichiers de votre dépôt, mais n'inclut pas les fichiers `.env` ni les autres packages qui ne sont pas versionnés.

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

Le hook `post_setup_worktree` s'exécute une fois chaque worktree créé et configuré. Il est exécuté dans le nouveau répertoire **worktree**.

La variable d'environnement `$ROOT_WORKSPACE_PATH` pointe vers le chemin de l’espace de travail 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éé.

**Configuration** (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 "Copied .env file"
fi

if [ -f "$ROOT_WORKSPACE_PATH/.env.local" ]; then
    cp "$ROOT_WORKSPACE_PATH/.env.local" .env.local
    echo "Copied .env.local file"
fi

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

exit 0
```

Ce hook garantit que chaque worktree dispose automatiquement de la configuration d’environnement nécessaire et des dépendances requises.

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

Devin Desktop nettoie automatiquement les anciens worktrees lors de la création d’un nouveau worktree afin d’éviter une occupation excessive de l’espace disque. Chaque espace de travail peut contenir jusqu’à **20** worktrees.

Les worktrees sont nettoyés en fonction de leur dernière utilisation : les plus anciens sont supprimés en premier. Ce nettoyage s’effectue pour chaque espace de travail, ce qui garantit que les worktrees de différents dépôts restent indépendants les uns des autres.

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

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

Par défaut, Devin Desktop n’affiche pas les worktrees créés par Cascade dans le panneau SCM.
Vous pouvez définir `git.showWindsurfWorktrees` sur `true` dans vos Settings pour passer outre ce comportement et activer l’affichage des worktrees dans le panneau SCM.
