Skip to main content
Quando uma tarefa é grande demais para ser revisada confortavelmente em uma única PR, o Devin pode dividi-la em uma pilha: uma série ordenada de pull requests que compõem uma única unidade de trabalho e são mescladas juntas, de baixo para cima. Cada PR da pilha é uma PR comum e focada, baseada na PR abaixo dela — os revisores analisam uma alteração pequena e autocontida por vez, em vez de um único diff monolítico. As pilhas do Devin usam o recurso nativo de pull requests empilhados do GitHub. Portanto, uma pilha é um objeto de primeira classe do GitHub — não uma convenção baseada em nomes de branches.
PRs empilhados são compatíveis apenas com repositórios do GitHub.com. O GitHub Enterprise Server, o GitLab e outros provedores não têm uma API de PRs empilhados.

Como uma Pilha Funciona

Uma pilha é uma série de patches:
  • As PRs são organizadas de baixo para cima. A PR inferior tem como destino sua branch principal (por exemplo, main); a branch base de cada outra PR é a branch head da PR logo abaixo.
  • Como cada PR é comparada à camada abaixo, ela mostra apenas suas próprias alterações — nada das camadas acima ou abaixo é incluído.
  • A pilha é integrada de baixo para cima. Fazer merge de uma PR na pilha também faz merge de todas as PRs abertas abaixo dela, de forma atômica, em uma única operação. À medida que as PRs inferiores recebem merge, o GitHub redireciona automaticamente as PRs restantes para a branch principal.

Quando o Devin Cria uma Pilha

O Devin cria pilhas de forma deliberada, não oportunista. Ele cria uma pilha apenas quando decompõe intencionalmente uma parte do trabalho em uma sequência ordenada de PRs que devem ser integradas juntas — por exemplo, uma alteração de esquema, depois a camada de serviço que a utiliza e, por fim, a UI sobre ela. PRs que apenas se baseiam na branch de outra PR não são agrupadas em uma pilha. Quando o Devin planeja uma pilha, ele:
  1. Anuncia a pilha pelo nome antes de criar qualquer PR, para que você possa acompanhar a sequência tomando forma na sua sessão.
  2. Cria cada PR como uma PR normal e focada — com sua própria descrição e seu próprio CI — tendo como destino a branch head da PR abaixo dela.
  3. Agrupa as PRs em uma pilha no GitHub depois que elas são criadas.
Cada camada atende ao mesmo padrão de qualquer PR independente entregue pelo Devin: um diff mínimo e focado e uma descrição objetiva, escrita para uma pessoa revisora que ainda não viu o código.

Mantendo a Pilha Coesa

Uma pilha não fica congelada depois de criada. O Devin permanece associado a cada PR da pilha durante toda a sessão:
  • Resolução de conflitos — Se alguma camada apresentar conflitos de merge com a branch abaixo dela (por exemplo, após o feedback da revisão ser aplicado em uma camada inferior ou a branch principal avançar sob a pilha), o Devin será notificado automaticamente e resolverá os conflitos sem interromper você. Ele só pedirá sua ajuda quando um conflito envolver uma decisão relevante que exija sua intervenção.
  • CI em toda a pilha — O Devin monitora a CI de cada camada e corrige falhas à medida que surgem, acompanhando a prontidão de toda a série em vez de gerenciar PRs um por um.
  • Redirecionamento automático — À medida que a base da pilha passa por merge, o GitHub redireciona os PRs restantes para a branch principal. Não é necessário acompanhar manualmente os rebases.

Trabalhando com pilhas

Você pode orientar o comportamento de empilhamento do Devin em uma sessão:
  • Peça ao Devin para dividir uma alteração grande em uma pilha ou manter o trabalho em uma única PR.
  • Peça ao Devin para adicionar PRs subsequentes ao topo de uma pilha existente.
  • Peça ao Devin para verificar o status de uma pilha — ele informa o estado de cada camada, CI, decisão da revisão e possibilidade de merge.
  • Peça ao Devin para desempilhar — a pilha é desfeita, e as PRs não mescladas voltam a ser independentes, com as branches mantidas como estão. As camadas já mescladas permanecem mescladas.
Na visualização da sessão, as PRs que fazem parte de uma pilha exibem essa associação, e as pilhas anunciadas aparecem antes mesmo de suas PRs existirem, para que você possa acompanhar enquanto o Devin cria a série.

Revisão e Merge de Pilhas

O Devin Review trata pilhas como entidades de primeira classe: toda a sequência fica visível de imediato, com o status de prontidão de cada camada, e o merge é feito por meio do merge atômico da pilha, de baixo para cima. Consulte a seção sobre PRs empilhadas na documentação do Devin Review para mais detalhes.

Limitações

  • Somente GitHub.com — as pilhas não estão disponíveis no GitHub Enterprise Server, GitLab, Bitbucket ou Azure DevOps.
  • Tamanho da pilha — uma pilha contém entre 2 e 100 PRs.
  • Merge — PRs empilhadas não podem passar pelo fluxo de merge padrão do GitHub; elas são mescladas pela mesclagem da pilha, que integra de uma só vez a PR selecionada e todas as PRs abertas abaixo dela.