Histórico e merge
Ler o histórico de uma app, desfazer uma alteração, repor um estado antigo, e trazer elementos de uma versão para outra com o merge selectivo.
Tudo o que se grava numa app fica registado. O histórico responde a três perguntas — o que mudou, quem mudou e quando — e dá duas formas de voltar atrás. O merge selectivo faz o contrário: leva alterações de uma versão para outra, elemento a elemento, sem misturar o que não se quer.
Abrir o histórico
- Abre a app e clica no botão de versões, no cabeçalho da barra da app.
- Na linha da versão que queres inspeccionar, clica no ícone do relógio — Ver o histórico desta versão.
- Abre-se um separador Histórico de … no espaço de trabalho.

Cada linha é uma gravação, e lê-se da esquerda para a direita:
| Elemento | O que é |
|---|---|
| O traço colorido | O ramo a que a gravação pertence. Versões diferentes têm cores diferentes, e o desenho mostra onde se separaram. |
As etiquetas (main, 1.1) |
As versões em que aquela gravação está. Uma gravação anterior à separação aparece nas duas. |
| A frase | O que foi gravado — "Tema da app alterado", 'Ecrã "Contas" gravado', 'Script "importar" criado'. |
| O número | Quantos ficheiros a gravação tocou. |
| O código curto | O identificador da gravação. |
| O nome | Quem gravou. |
| A data | Quando. |
Clica numa linha para a abrir e ver o que foi tocado: a lista dos elementos, cada um com a marca do que lhe aconteceu — criado, alterado, apagado ou renomeado. Uma gravação sem detalhe guardado diz "Sem ficheiros registados nesta gravação."
Nota
As gravações anteriores à criação de uma versão pertencem a todas as versões que dela descendem. Quando são muitas seguidas, o painel agrupa-as numa linha — "N alterações comuns a todas as versões — expandir" — para o desenho não ficar ilegível. Clica para as abrir.
Ver o histórico de um elemento
O painel do histórico também abre focado num elemento só, quando queres a história de um ecrã e não a da app inteira. Aí, a lista mostra apenas as gravações que lhe tocaram, e uma app sem alterações nesse elemento diz "Este item não tem alterações registadas."
Desfazer: reverter uma alteração
Reverter cria uma gravação nova que anula uma antiga. Serve para tirar uma alteração do meio sem deitar fora o que veio depois dela.
- No histórico, passa o rato pela linha da gravação.
- Clica no ícone de três pontos à direita — Acções da gravação.
- Escolhe Reverter esta alteração.
- Confirma em 'Reverter esta alteração?' — "Cria uma gravação NOVA que desfaz «…». A história não se reescreve — desfazer o desfazer é mais um passo em frente."
- A confirmação diz "Alteração revertida — gravação nova no histórico."

Voltar atrás: repor um estado
Repor é mais radical: escreve o conteúdo de um momento antigo por cima do desenho actual.
- No mesmo menu Acções da gravação, escolhe Repor a app neste estado.
- Confirma em 'Repor a app neste estado?' — "Escreve o conteúdo de … por cima do desenho actual e grava OUTRA vez. Tudo o que veio depois fica desfeito — mas continua no histórico."
- A confirmação diz "Estado reposto — gravação nova no histórico." Se a app já estivesse exactamente nesse estado, a plataforma não grava nada e avisa: "A app já está exactamente nesse estado — nada para gravar."
Dica
A regra vale para as duas acções: a história nunca se reescreve. Nem reverter nem repor apagam gravações — ambas acrescentam uma. É por isso que se pode sempre voltar atrás outra vez: desfazer o desfazer é mais um passo em frente.
Merge selectivo: trazer de outra versão
Quando o trabalho de uma versão está pronto para entrar noutra, o merge selectivo traz os elementos que escolheres — e só esses.
- Abre o menu Versões no cabeçalho da app.
- Clica em Merge selectivo…. (A opção só fica activa a partir de duas versões; com uma só não há de onde trazer.)
- Abre-se o modal Merge selectivo, com a explicação: "Trazer elementos de outra versão para a versão «main». O merge traz e actualiza — nunca apaga; as referências validam-se antes de gravar."
- Escolhe a Versão de origem no selector do topo.
- A lista enche-se com os elementos dessa versão, agrupados por categoria.

As categorias são as peças da app: Ecrãs, Layouts, Widgets, Ecrãs de sistema, Navegação, Modelo, Enums, APIs, Datasources, Scripts, Agendamentos, Triggers, Relatórios, Processos, Permissões, Traduções, Tema, Assets, Armazenamentos, Canais e Definições da app.
- Marca o que queres trazer. O contador no topo acompanha — "3 seleccionado(s)".
- Usa a caixa Pesquisar elementos… para filtrar quando a lista for longa.

- Clica em Trazer 3 elemento(s).
- A confirmação diz "Merge da versão 1.1 concluído — 3 elemento(s) trazidos.", e o espaço de trabalho recarrega já com o que veio.
O que o merge faz — e o que nunca faz
| Faz | Nunca faz |
|---|---|
| Traz elementos que não existiam na versão de destino | Apaga o que existe na versão de destino e não foi seleccionado |
| Actualiza os que já existiam, com a versão da origem | Toca nos dados — o merge é do desenho, não das tabelas |
| Valida as referências antes de gravar | Mistura versões automaticamente: nada se move sem alguém marcar |
Essa última linha é a rede de segurança. Se o que seleccionaste apontar para qualquer coisa que não existe no destino — um ecrã que usa um widget que não foi trazido — o merge não grava e explica: "O merge não foi gravado — a árvore resultante tinha referências partidas:", com a lista dos problemas. Traz também o que falta e repete.
Atenção
O merge não apaga. Se na versão de origem apagaste um ecrã, o merge não o apaga no destino — só traz e actualiza. Apagar continua a ser um acto explícito, feito na versão onde deve ser apagado.
Perguntas frequentes
- O merge traz os dados? Não. Traz o desenho. As tabelas, os registos e os ficheiros de cada versão são dela.
- Posso fazer merge nos dois sentidos? Sim. O merge é sempre "trazer para a versão em que estou" — troca de versão e faz o caminho inverso.
- Reverter uma alteração de outra pessoa? Podes: as acções do histórico valem para qualquer gravação da versão em que estás, seja quem for o autor. O nome dela fica no histórico, e o teu na gravação que a desfaz.
- Porque é que a opção Merge selectivo está cinzenta? A app só tem uma versão. Cria outra e a opção acende.