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