Passer au contenu principal
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.

Utilisation de base des worktrees

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.
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é.
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.

Emplacement

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.
É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 pour créer les liens symboliques nécessaires ou copier les fichiers requis aux emplacements attendus.

Hook d’initialisation

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 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.

Exemple

Copiez les fichiers d’environnement et installez les dépendances lorsqu’un nouveau worktree est créé. Config (dans .windsurf/hooks.json) :
{
  "hooks": {
    "post_setup_worktree": [
      {
        "command": "bash $ROOT_WORKSPACE_PATH/hooks/setup_worktree.sh",
        "show_output": true
      }
    ]
  }
}
Script (hooks/setup_worktree.sh) :
#!/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.

Nettoyage

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é.

Panneau de contrôle du code source

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.