Todas as coleções

Savepoints e branches

Savepoints e branches são duas maneiras diferentes de gerenciar o histórico e a estrutura de um app Bubble.

  • Um savepoint é um savepoint do editor Bubble — um ponto de restauração que o Bubble mantém para um único branch. Criar e restaurar savepoints acontece pelo Bubble, não pelo seu histórico git local.

  • Um branch é uma versão editável do app Bubble (como test, staging ou um branch de recurso). Cada branch que você clona se torna um worktree git irmão na raiz do seu app, e você pode criar novos branches e fazer merge de um com outro.

Todos os três grupos de comandos nesta página (savepoint, branch, merge) atuam no app Bubble real por meio da CLI.

Savepoints

Um savepoint captura o estado de um branch no Bubble para que você possa reverter para ele depois. Os comandos de savepoint são executados no branch do seu workspace atual, então execute-os de dentro de um worktree de branch clonado.

Criar um savepoint

Crie um savepoint antes de mudanças não triviais para poder restaurá-lo se algo der errado. Informe uma descrição legível por humanos.

buildprint savepoint create "before refactor"

O comando informa o timestamp do novo savepoint, que é o identificador usado para restaurá-lo.

Listar savepoints

Liste os savepoints que existem para o branch atual do workspace. Cada linha mostra o timestamp do savepoint, sua descrição e, quando disponível, o e-mail de quem o criou.

buildprint savepoint list

Adicione --json para imprimir a resposta como JSON no stdout em vez da lista legível por humanos:

buildprint savepoint list --json

Restaurar um savepoint

Restaure o branch atual do workspace para um savepoint usando o timestamp dele (o identificador mostrado por savepoint list). O timestamp deve ser um inteiro.

buildprint savepoint restore 1745068712345

Restaurar altera o estado do branch no Bubble. Como isso acontece do lado do Bubble, seu workspace local não corresponde automaticamente ao estado restaurado — depois de restaurar, execute buildprint sync para trazer o snapshot restaurado para o seu workspace local.

Branches

Um branch é uma versão editável do app Bubble. Use os comandos branch para inspecionar um branch, listar a árvore completa de branches de um app ou criar um novo branch a partir de um existente.

Inspecionar um branch

Execute branch sem argumentos dentro de um workspace de branch para mostrar informações sobre o branch atual:

buildprint branch

Passe um nome ou ID de branch para inspecionar um branch diferente do mesmo app (ainda resolvido a partir do app do seu workspace):

buildprint branch staging

Fora de um workspace, ou para inspecionar um branch de outro app, passe primeiro o ID do app Bubble e depois o branch:

buildprint branch <appId> staging

Adicione --json a qualquer uma dessas opções para imprimir os mesmos dados como JSON (esta é uma visão moldada, não o payload bruto da API).

Listar os branches de um app

Liste a árvore completa de branches de um app. Isso é somente leitura e exige o ID do app Bubble:

buildprint branch list <appId>

Adicione --json para uma visão legível por máquina:

buildprint branch list <appId> --json

Criar um branch

Crie um novo branch (uma nova versão do app Bubble) a partir de um branch base existente. A opção --from <version> é obrigatória e deve nomear um branch editável e não live, como test ou staging. Não é अनुमतिido fazer branching a partir de live.

O nome do novo branch é normalizado: ele é aparado, convertido para minúsculas e os espaços viram hífens.

Dentro de um workspace de branch, você pode passar apenas o nome do novo branch — o ID do app Bubble é lido de app.json:

buildprint branch create "feature-checkout" --from test

Fora de um workspace, passe primeiro o ID do app Bubble e depois o nome do novo branch:

buildprint branch create <appId> "feature-checkout" --from test
buildprint branch create <appId> new-flow --from staging

Adicione uma descrição opcional e use --json para imprimir a resposta completa da API:

buildprint branch create "hotfix" --from test --description "urgent fix" --json

Por padrão, quando o diretório atual está dentro da raiz do app do app, Buildprint materializa e sincroniza um worktree local para o novo branch. Passe --no-workspace-sync para pular essa materialização e sincronização local. Observe que --json também pula a materialização e sincronização do workspace local.

Merge

Faça o merge de um branch Bubble em outro usando o fluxo nativo de merge do Bubble. Passe o branch de origem (<from>) e o branch de destino (<to>) por nome ou ID. Execute isso de qualquer lugar dentro do workspace do app, já que Buildprint lê o ID do app a partir da raiz local do app.

buildprint merge lemonb-820 staging

Isso faz o merge do branch de origem no branch de destino no Bubble. O Bubble cria um branch temporário de merge e, em um merge sem conflitos, Buildprint o finaliza e exclui, depois sincroniza o workspace local do branch de destino (se existir) para que ele corresponda ao resultado do merge.

Adicione --json para imprimir o resultado do merge como JSON:

buildprint merge feature-a test --json

Resolvendo conflitos

Se os branches entrarem em conflito, Buildprint deixa o branch temporário de merge sem finalização e imprime cada conflito com sua chave, caminho e os valores concorrentes do branch de destino (to), do branch de origem (from) e do ancestral comum. Para concluir o merge, execute-o novamente com uma resolução para cada conflito.

Resolva conflitos individuais por chave, escolhendo to (manter o valor do branch de destino) ou from (usar o valor do branch de origem). Repita --resolve para vários conflitos:

buildprint merge feature-a test --resolve 0=from

Ou resolva todos os conflitos da mesma forma de uma vez:

buildprint merge feature-a test --resolve-all to

Isso foi útil?