Posso deletar um commit no Subversion?
-
28-10-2019 - |
Pergunta
Por acidente cometi duas vezes porque esqueci de adicionar dois arquivos.Posso remover um commit específico do log?
Desejo excluir o commit № 4.
Solução
A resposta simples é "não", porque o Subversion não sabe como resolver o caso quando você adiciona um commit, alguém atualiza o checkout e então você remove o commit do histórico.Pode haver ou não uma resposta complexa envolvendo cirurgia no armazenamento do Subversion.
Outras dicas
- AFAICS, você não excluiu r4, mas mesclou com r5, sim?
- Em geral, o histórico de commits SVN é imutável, como Sii disse - e se você não tem direitos para excluir / criar repositório - você não pode fazer nada.
Se você pode excluir o repositório atual e criar um novo com o novo histórico, você pode tentar:
-
svnadmin dump
para ser legível por humanos (mal, devo dizer) repository-dump, grok format and edit dump, delete repo,svnadmin load
para recriar o repo - outra ideia é (em vez de editar despejo) outra SCM, que tem uma ponte para SVN (hg + MQ (histedit) + hg-git, por exemplo, irá permitem obter repo e dobrar / excluir changesets).Para substituir repositório antigo - ver p.2 acima
No seu caso, é apenas necessário modificar o comentário do commit associado ao commit nº 4 para refletir as mudanças reais que você fez.Você pode fazer isso com o Subversion, modificando a configuração do repositório SVN.Veja o FAQ do Subversion .
Por quê?Deixe o Subversion manter o histórico - é para isso que serve.Faça check-in com antecedência e com frequência.Não há necessidade de apagar o commit nº 4.