> ## 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 automaticamente git worktrees para tarefas paralelas do Cascade

O Devin Desktop oferece suporte ao uso de git worktrees para executar tarefas do Cascade em paralelo sem interferir no seu workspace principal.

Ao usar worktrees, cada conversa do Cascade tem sua própria sessão, permitindo que o Cascade faça edições ou execute builds e teste o código sem interferir no seu workspace principal.

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

A forma mais simples de começar a usar worktrees é alternar para o modo "Worktree" no canto inferior direito do campo de entrada do 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>
  No momento, você só pode alternar para um worktree no início de uma sessão do Cascade. As conversas não podem ser movidas para um worktree diferente depois de iniciadas.
</Note>

Depois que o Cascade fizer alterações nos arquivos do worktree, você terá a opção de clicar em "merge" para incorporar essas alterações de volta ao seu workspace 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">
  ## Localização
</div>

As worktrees são organizadas por nome do repo em `~/.windsurf/worktrees/<repo_name>`.

Cada worktree recebe um nome aleatório único.

Para ver uma lista de worktrees ativas, você pode executar `git worktree list` dentro do diretório do repositório.

<Warning>
  Como as worktrees ficam em um diretório diferente do projeto original, **sistemas de build ou ferramentas que dependem de caminhos relativos** (por exemplo, referências `../shared-lib`, dependências com symlink ou dependências de código-fonte de monorepo resolvidas por caminho) podem falhar dentro de uma worktree. Se o seu projeto usa caminhos relativos fora da raiz do repositório, configure um hook [`post_setup_worktree`](./worktrees#setup-hook) para criar os symlinks necessários ou copiar os arquivos necessários para os locais esperados.
</Warning>

<div id="setup-hook">
  ## Hook de configuração
</div>

Cada worktree contém uma cópia dos arquivos do seu repositório, mas não inclui arquivos `.env` nem outros pacotes que não estejam em controle de versão.

Se você quiser incluir arquivos ou pacotes adicionais em cada worktree, poderá usar o hook `post_setup_worktree` [hook](./hooks#post_setup_worktree) para copiá-los para o diretório do worktree.

O hook `post_setup_worktree` é executado após cada worktree ser criado e configurado. Ele é executado dentro do novo diretório de **worktree**.

A variável de ambiente `$ROOT_WORKSPACE_PATH` aponta para o caminho do workspace original e pode ser usada para acessar arquivos ou executar comandos relativos ao repositório original.

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

Copie os arquivos de ambiente e instale as dependências quando uma nova worktree for criada.

**Configuração** (em `.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 arquivos de ambiente do 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 dependências
if [ -f "package.json" ]; then
    npm install
    echo "Installed npm dependencies"
fi

exit 0
```

Este hook garante que cada worktree tenha a configuração de ambiente necessária e que as dependências sejam instaladas automaticamente.

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

O Devin Desktop limpa automaticamente worktrees antigas ao criar uma nova worktree para evitar o uso excessivo de disco. Cada workspace pode ter até **20** worktrees.

As worktrees são limpas com base no último acesso — as mais antigas são removidas primeiro. Essa limpeza acontece por workspace, garantindo que worktrees de diferentes repositórios permaneçam independentes entre si.

Além disso, se você excluir manualmente uma conversa no Cascade, o Devin Desktop excluirá automaticamente a worktree associada.

<div id="source-control-panel">
  ## Painel de controle de código-fonte
</div>

Por padrão, o Devin Desktop não mostra as worktrees criadas pelo Cascade no painel SCM.
Você pode definir `git.showWindsurfWorktrees` como `true` nas Configurações para fazer override desse comportamento e ativar a visualização das worktrees no painel SCM.
