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

> Configura automáticamente `git worktrees` para tareas paralelas de Cascade

Devin Desktop permite usar `git worktrees` para ejecutar tareas de Cascade en paralelo sin interferir con tu espacio de trabajo principal.

Al usar worktrees, cada conversación de Cascade tiene su propia sesión, lo que permite que Cascade realice ediciones o compile y pruebe código sin interferir con tu espacio de trabajo principal.

<div id="basic-worktree-usage">
  ## Uso básico de los worktrees
</div>

La forma más sencilla de empezar a usar worktrees es cambiar al modo "Worktree" en la esquina inferior derecha del campo de entrada 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>
  Actualmente, solo puedes cambiar a un worktree al inicio de una sesión de Cascade. Las conversaciones no se pueden mover a un worktree distinto una vez iniciadas.
</Note>

Después de que Cascade realice cambios en archivos dentro del worktree, puedes hacer clic en "merge" para incorporar esos cambios de nuevo a tu espacio de trabajo 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">
  ## Ubicación
</div>

Los worktrees se organizan por nombre de repo dentro de `~/.windsurf/worktrees/<repo_name>`.

A cada worktree se le asigna un nombre aleatorio único.

Para ver una lista de worktrees activos, puedes ejecutar `git worktree list` desde el directorio del repositorio.

<Warning>
  Como los worktrees están en un directorio distinto del de tu proyecto original, **los sistemas de compilación o las herramientas que dependen de rutas relativas** (p. ej., referencias a `../shared-lib`, dependencias con enlaces simbólicos o dependencias de código fuente de un monorepo resueltas por ruta) pueden fallar dentro de un worktree. Si tu proyecto usa rutas relativas fuera de la raíz del repositorio, configura un hook [`post_setup_worktree`](./worktrees#setup-hook) para crear los enlaces simbólicos necesarios o copiar los archivos necesarios a las ubicaciones esperadas.
</Warning>

<div id="setup-hook">
  ## Hook de configuración
</div>

Cada `worktree` contiene una copia de los archivos de tu repositorio, pero no incluye archivos `.env` ni otros paquetes que no estén bajo control de versiones.

Si quieres incluir archivos o paquetes adicionales en cada `worktree`, puedes usar el [hook](./hooks#post_setup_worktree) `post_setup_worktree` para copiarlos al directorio del `worktree`.

El hook `post_setup_worktree` se ejecuta después de que cada `worktree` se crea y se configura. Se ejecuta dentro del nuevo directorio **worktree**.

La variable de entorno `$ROOT_WORKSPACE_PATH` apunta a la ruta original del espacio de trabajo y puede usarse para acceder a archivos o ejecutar comandos con respecto al repositorio original.

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

Copia los archivos de Environment e instala las dependencias cuando se cree un nuevo worktree.

**Configuración** (en `.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

# Copiar archivos de environment del workspace original
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

# Instalar dependencies
if [ -f "package.json" ]; then
    npm install
    echo "Installed npm dependencies"
fi

exit 0
```

Este hook garantiza que cada worktree tenga la Configuración de Environment necesaria y que las dependencias se instalen automáticamente.

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

Devin Desktop limpia automáticamente los worktrees más antiguos al crear un worktree nuevo para evitar un uso excesivo de disco. Cada espacio de trabajo puede tener hasta **20** worktrees.

Los worktrees se limpian en función de la última vez que se accedió a ellos: primero se eliminan los más antiguos. Esta limpieza se realiza para cada espacio de trabajo, lo que garantiza que los worktrees de distintos repositorios sigan siendo independientes entre sí.

Además, si eliminas manualmente una conversación de Cascade, Devin Desktop eliminará automáticamente el worktree asociado.

<div id="source-control-panel">
  ## Panel de control de código fuente
</div>

De forma predeterminada, Devin Desktop no muestra los worktrees creados por Cascade en el panel de SCM.
Puedes establecer `git.showWindsurfWorktrees` en `true` en tu Settings para anular este comportamiento y habilitar la visualización de los worktrees en el panel de SCM.
