Fork Safe Upstream Sync
Siga este fluxo para atualizar um fork sem perder customizacoes privadas.
Preparar contexto
- •Confirmar que esta em um repositorio Git.
- •Identificar branch atual e branch base do upstream (padrao:
main). - •Confirmar remote upstream; se nao existir, interromper e pedir criacao do remote.
- •Verificar arvores sujas (
git status --porcelain):
- •Se houver mudancas nao commitadas, interromper por seguranca.
Registrar mudancas privadas
- •Usar
scripts/sync_fork_preserve_local.shpara atualizar ou criar o changelog privado. - •Preferir
fork_changelog.mdna raiz do repositorio. - •Registrar:
- •Data/hora ISO 8601.
- •Branch atual.
- •Commit atual (
HEAD). - •Ultimo commit upstream sincronizado (lido do changelog, quando existir).
- •Quantidade e lista resumida de commits privados (
upstream/<base>..HEAD).
Trazer upstream com seguranca
- •Rodar fetch no upstream.
- •Identificar o ultimo commit upstream sincronizado no changelog e comparar com o upstream atual.
- •Se nao houver, encerrar sem merge.
- •Se houver, executar merge sem commit automatico, priorizando base local em conflitos (
-X ours). - •Resolver conflitos restantes preservando
ourspara todos os arquivos conflitantes. - •Reforcar prioridade local para caminhos sensiveis (DB/dados) antes do commit.
- •Criar commit de merge com mensagem padrao (mesmo quando nao houver mudanca de arvore, para registrar sync do historico upstream).
- •Sempre gerar relatorio final com situacao atual, novidades trazidas e resultado esperado.
- •Sempre executar testes do app ao final e incluir resultado no relatorio.
- •Publicar a branch atual no
originao final para concluir atualizacao do fork remoto.
Comando recomendado
bash
bash skills/fork-safe-upstream-sync/scripts/sync_fork_preserve_local.sh \ --upstream upstream \ --base-branch main \ --origin origin \ --changelog fork_changelog.md \ --report fork_sync_report.md \ --test-command "npm test" \ --protected-paths "db/,database/,data/,prisma/,supabase/,*.db,*.sqlite"
Regras de seguranca
- •Nao executar em working tree suja, exceto quando explicitamente permitido.
- •Se merge falhar sem resolucao automatica, abortar merge e reportar arquivos bloqueados.
- •Sempre priorizar o estado local para caminhos de dados definidos em
--protected-paths. - •Sempre revisar
fork_sync_report.mdao final para validar o impacto das atualizacoes. - •Se os testes falharem, nao publicar no origin e investigar antes de novo sync.
Referencias
- •Ler
references/workflow.mdpara parametros e comportamento detalhado.