O maior lançamento do GitHub em anos. Stacked PRs.

BBetter Stack
Computing/SoftwareInternet Technology

Transcript

00:00:00O GitHub acaba de lançar sua maior atualização em anos, as PRs em pilha (stacked PRs), uma nova forma de dividir
00:00:05PRs gigantescas em partes mais fáceis de gerenciar. Neste vídeo, vamos ver exatamente o que elas são
00:00:10e por que você as usaria. As PRs em pilha são um conceito poderoso, mas bastante simples. Dividir grandes alterações de código
00:00:21em uma cadeia de pull requests menores e dependentes. Você pode revisar e mesclar de forma independente.
00:00:26Para ter uma pilha, você precisa de duas ou mais pull requests no mesmo repositório, onde a primeira
00:00:31ou a pull request inferior aponta para o tronco, geralmente o branch padrão do seu repositório, como o main,
00:00:37então cada pull request subsequente aponta para a anterior. Isso forma uma cadeia de dependência onde
00:00:42cada branch se baseia na que está abaixo dele. Alterações fundamentais, como tipos compartilhados ou esquemas de banco de dados,
00:00:48ficam nos branches inferiores, e o código que depende delas, como rotas de API e componentes de UI,
00:00:53fica nos branches superiores. E você pode estar pensando: “Bem, eu sempre pude fazer isso, não é?”
00:00:58Eu poderia abrir uma PR para o main e depois abrir uma segunda PR para essa PR e encadear as PRs o quanto eu quiser.
00:01:04E isso é absolutamente verdade, porque no contexto apenas do Git, não existe o conceito de PRs em pilha
00:01:09e você ainda estaria apenas encadeando PRs juntas. Apenas dentro do próprio GitHub é que as PRs em pilha
00:01:16realmente significam algo. Mas elas trazem algumas vantagens enormes. E se você quiser ficar por dentro
00:01:22de tecnologia e IA, inscreva-se no Better Stack. Então, para usar as PRs em pilha, é melhor ter
00:01:27o CLI do GitHub instalado. E com ele, você pode executar gh stack init e então declarar sua nova pilha.
00:01:33Então vamos ao nosso editor de texto e agora podemos ver um exemplo de como empilhar várias PRs.
00:01:38Portanto, a primeira coisa que vamos fazer é executar gh stack init setup database. Então, neste caso,
00:01:44a PR ou o branch vai se chamar setup database. E esta será a PR base que agora
00:01:50vai apontar para o main. Depois podemos fazer nossas alterações. Para este exemplo, vou apenas colocar
00:01:54alterações no arquivo readme. Então eu disse que implementei o banco de dados e depois você pode apenas fazer git add,
00:01:59git commit. Então tudo aqui é apenas git padrão. E quando você estiver pronto para mudar para o seu próximo conjunto
00:02:04de alterações, você pode fazer gh stack add e depois o seu próximo branch. Então posso fazer mais alterações,
00:02:10criar os endpoints da API. Talvez eu queira adicionar alguns pontos extras aqui. Então vou comitar essa alteração.
00:02:16Então podemos adicionar uma segunda alteração também. E então, novamente, podemos comitar isso. Como você esperaria,
00:02:20você pode fazer vários commits por branch. E por fim, faremos gh stack add setup front end,
00:02:25e então faremos mais uma alteração aqui. E de novo, fazemos git add e git commit. Agora, uma vez que estejamos satisfeitos
00:02:31com todas as nossas alterações e quisermos enviar todos esses branches para o GitHub ao mesmo tempo,
00:02:36podemos executar apenas um comando: gh stack submit. Isso nos dará esta mini interface de CLI onde podemos
00:02:42passar por cada uma das PRs na pilha e adicionar um título e uma descrição, se quisermos. Ou podemos
00:02:48apenas pressionar próximo em cada uma e enviar três PRs de uma só vez. Então você pode ver que todas essas três PRs,
00:02:55setup database, API e front end, foram enviadas para o GitHub como uma pilha com um único comando.
00:03:02E você pode fazer tudo isso sem o CLI do GitHub. Basta seguir o método tradicional de
00:03:07vincular PRs manualmente de main para PR1 e para PR2. O GitHub ainda vai detectar essas como uma pilha
00:03:14assim que você enviar tudo. O CLI apenas torna isso muito mais fácil de gerenciar. Agora, lembre-se de que nada
00:03:20mudou dentro do próprio Git. Se você quiser mudar para um branch completamente diferente que não esteja na
00:03:24pilha em que você está trabalhando, você pode fazer isso e depois voltar para o branch dentro da pilha mais tarde.
00:03:29Se formos agora para o próprio GitHub, você pode ver que temos cada uma de nossas três PRs abertas
00:03:34como pull requests aqui. E você pode ver que também temos este pequeno ícone de pilha para nos indicar que essas
00:03:39PRs estão associadas a uma pilha. Se abriremos a PR superior, ou seja, a que está no topo da pilha, você pode
00:03:45ver aqui embaixo que podemos clicar em merge stack e ver esta interface também. Assim podemos ver cada
00:03:49PR como parte da pilha. Poderíamos analisar e aprovar uma a uma. Mas uma vez que estejamos satisfeitos com
00:03:54tudo isso, você pode simplesmente clicar em merge stack e cada uma dessas PRs será mesclada
00:03:59no main ao mesmo tempo. Você também notará que as referências a pilhas agora estão integradas
00:04:03em todo o GitHub. Então você pode vê-las na página de pull request, na página de lista
00:04:09de pull requests. Você também as verá em coisas como GitHub workflows e, na verdade, em todo o aplicativo.
00:04:14Portanto, se você está trabalhando em PRs gigantescas e precisa de uma maneira fácil de dividi-las
00:04:18em segmentos separados, você não precisa mais esperar que PRs separadas sejam mescladas no main
00:04:23e fazer todo o rebase e a mesclagem sozinho. Você pode criar apenas uma pilha longa e o GitHub
00:04:28agora está perfeitamente equipado para gerenciar tudo isso dentro da interface. E o CLI é uma forma muito legal
00:04:33de gerenciar tudo isso automaticamente. Tem havido uma resposta extremamente positiva a isso
00:04:38online. E particularmente quando usado com IA, acho que isso pode ser um recurso muito poderoso
00:04:43quando você faz coisas como projetar loops de agentes e deixa o agente rodar por horas. Ele agora pode criar
00:04:48PRs em pilha e vincular todo esse trabalho em vez de criar uma PR gigante ou montes
00:04:54de PRs completamente separadas. Mas espero que tenham achado este útil, pessoal. Me digam o que acham
00:04:58das PRs em pilha nos comentários e se inscrevam no Better Stack para ficarem por dentro das últimas
00:05:02novidades de tecnologia e IA. Obrigado por assistirem e, claro, vejo vocês na próxima.

Key Takeaway

O recurso de PRs em pilha do GitHub permite criar, gerenciar e mesclar correntes de pull requests dependentes de forma integrada usando comandos do CLI como gh stack submit.

Highlights

  • O GitHub introduziu as PRs em pilha (stacked PRs) para dividir alterações de código gigantescas em partes gerenciáveis e dependentes.

  • O uso do GitHub CLI permite inicializar uma pilha com o comando gh stack init e adicionar novos branches com gh stack add.

  • O comando gh stack submit envia todos os branches da pilha para o GitHub simultaneamente com uma única interface.

  • O GitHub detecta automaticamente as PRs vinculadas manualmente de main para PR1 e PR2 como uma pilha sem a necessidade obrigatória do CLI.

  • O botão merge stack permite mesclar todas as PRs da pilha no branch main ao mesmo tempo a partir da PR superior.

Timeline

Conceito e estrutura das PRs em pilha

  • As PRs em pilha dividem alterações extensas em uma cadeia de pull requests menores e dependentes.
  • O branch inferior aponta para o tronco padrão como main, enquanto cada branch subsequente aponta para o anterior.
  • Alterações fundamentais ficam nos branches inferiores, enquanto códigos dependentes ficam nos superiores.

As PRs em pilha transformam a organização do código ao estruturar dependências em cadeia. Componentes básicos como esquemas de banco de dados ficam na base, enquanto rotas de API e interfaces de usuário ocupam os níveis superiores. O contexto de pilha existe nativamente dentro da interface do GitHub, diferenciando-se do encadeamento tradicional do Git.

Utilização do GitHub CLI para gerenciar pilhas

  • O comando gh stack init define o branch base inicial e o comando gh stack add adiciona novos branches à pilha.
  • O comando gh stack submit envia todos os branches simultaneamente e abre uma interface para títulos e descrições.
  • O vínculo manual de PRs de main para PR1 e PR2 também é detectado automaticamente pelo GitHub como uma pilha.

O fluxo de trabalho com o GitHub CLI simplifica o desenvolvimento em etapas. Após inicializar a base com gh stack init e adicionar alterações sequenciais com gh stack add, o comando gh stack submit envia todo o conjunto de uma só vez. O envio manual tradicional de PRs encadeadas atinge o mesmo resultado de detecção automática.

Integração na interface e mesclagem unificada

  • Um ícone específico indica na interface do GitHub que as pull requests estão associadas a uma pilha.
  • O botão merge stack na PR superior permite mesclar todas as alterações da pilha no branch main simultaneamente.
  • Agentes de IA podem utilizar PRs em pilha para estruturar trabalhos longos em vez de gerar arquivos gigantescos.

A interface do GitHub exibe referências a pilhas em listas de pull requests e workflows. O processo de mesclagem é centralizado na PR mais alta, onde a opção merge stack consolida toda a cadeia no branch principal de uma vez. Essa abordagem potencializa a automação com agentes de IA ao organizar múltiplos fluxos relacionados.

Community Posts

View all posts