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,stagingou 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 listAdicione --json para imprimir a resposta como JSON no stdout em vez da lista legível por humanos:
buildprint savepoint list --jsonRestaurar 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 1745068712345Restaurar 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 branchPasse 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 stagingFora 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> stagingAdicione --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> --jsonCriar 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 testFora 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 stagingAdicione uma descrição opcional e use --json para imprimir a resposta completa da API:
buildprint branch create "hotfix" --from test --description "urgent fix" --jsonPor 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 stagingIsso 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 --jsonResolvendo 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=fromOu resolva todos os conflitos da mesma forma de uma vez:
buildprint merge feature-a test --resolve-all to