> ## 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 automaticamente i worktree Git per attività Cascade parallele

Devin Desktop supporta l'uso dei worktree Git per eseguire attività Cascade in parallelo senza interferire con il workspace principale.

Quando si usano i worktree, ogni conversazione di Cascade ha la propria sessione, consentendo a Cascade di apportare modifiche oppure di eseguire build e test del codice senza interferire con il workspace principale.

<div id="basic-worktree-usage">
  ## Utilizzo di base dei worktree
</div>

Il modo più semplice per iniziare a usare i worktree è passare alla modalità "Worktree" nell'angolo in basso a destra del campo di input di 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>
  Al momento, puoi passare a un worktree solo all'inizio di una sessione di Cascade. Una volta avviata, una conversazione non può essere spostata in un worktree diverso.
</Note>

Dopo che Cascade ha apportato modifiche ai file nel worktree, puoi fare clic su "merge" per integrare tali modifiche nel workspace principale.

<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">
  ## Posizione
</div>

I worktree sono organizzati in base al nome della repo all'interno di `~/.windsurf/worktrees/<repo_name>`.

A ogni worktree viene assegnato un nome casuale univoco.

Per visualizzare un elenco dei worktree attivi, puoi eseguire `git worktree list` dalla directory del repository.

<Warning>
  Poiché i worktree si trovano in una directory diversa da quella del progetto originale, i **sistemi di build o gli strumenti che si basano su percorsi relativi** (ad es. riferimenti `../shared-lib`, dipendenze collegate tramite symlink o dipendenze sorgente di monorepo risolte tramite percorso) potrebbero non funzionare all'interno di un worktree. Se il tuo progetto usa percorsi relativi al di fuori della directory radice del repository, configura un hook [`post_setup_worktree`](./worktrees#setup-hook) per creare i symlink necessari o copiare i file richiesti nelle posizioni previste.
</Warning>

<div id="setup-hook">
  ## Hook di setup
</div>

Ogni worktree contiene una copia dei file del tuo repository, ma non include i file `.env` o altri pacchetti non sottoposti a controllo di versione.

Se vuoi includere file o pacchetti aggiuntivi in ogni worktree, puoi usare l'hook [`post_setup_worktree`](./hooks#post_setup_worktree) per copiarli nella directory del worktree.

L'hook `post_setup_worktree` viene eseguito dopo la creazione e la configurazione di ogni worktree. Viene eseguito all'interno della nuova directory **worktree**.

La variabile d'ambiente `$ROOT_WORKSPACE_PATH` punta al percorso del workspace originale e può essere usata per accedere ai file o eseguire comandi rispetto al repository originale.

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

Copia i file dell'ambiente e installa le dipendenze quando viene creato un nuovo worktree.

**Config** (in `.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

# Copia i file environment dal workspace originale
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

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

exit 0
```

Questo hook garantisce che ogni worktree disponga automaticamente della configurazione dell'ambiente necessaria e delle dipendenze richieste.

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

Devin Desktop pulisce automaticamente i worktree meno recenti quando crea un nuovo worktree, per evitare un utilizzo eccessivo del disco. Ogni workspace può avere fino a **20** worktree.

I worktree vengono rimossi in base al momento dell'ultimo accesso: i più vecchi vengono eliminati per primi. Questa pulizia avviene a livello di singolo workspace, garantendo che i worktree di repository diversi rimangano indipendenti tra loro.

Inoltre, se elimini manualmente una conversazione Cascade, Devin Desktop eliminerà automaticamente il worktree associato.

<div id="source-control-panel">
  ## Pannello di controllo del codice sorgente
</div>

Per impostazione predefinita, Devin Desktop non mostra i worktrees creati da Cascade nel pannello SCM.
Puoi impostare `git.showWindsurfWorktrees` su `true` in Settings per fare override di questo comportamento e abilitare la visualizzazione dei worktrees nel pannello SCM.
