sexta-feira, setembro 10, 2010

svn rollback

Devido a política de desenvolvimento da empresa em que trabalhei, Vox(www.voxtecnologia.com), alterações de códigos existente(correções de modo geral) só podem sem gravadas no “branch” do projeto, porém,  aconteceu de algumas alterações ter sido gravadas no “trunk” o que fatalmente acarretará em conflito no momento do “merge” entre o “brach” e “trunk”.

Em busca de um "svn rollback" vi que a coisa não era tão simples quanto esperava, pois para executar esta tarefa é necessário efetuar, ao menos, dois passos:

1: Obter as revisões afetadas pela(s) gravação(ões) que ser(ão) revertida(s)
2:  e,  efetuar o rollback propriamente dito

Um terceiro passo, que na verdade seria um intermediário entre o 1º e o 2º passo, mas não obrigatório, seria a verificação dos arquivos afetados pela mudada.

Para exemplificar vamos usar um repositório fictício “foo” de endereço local /var/svn/foo, ou se preferir, remove: http://localhost/svn/foo
 

passo-a-passo:

criando um copia de trabalho:
# svn co http://localhost/svn/foo/trunk
 
Entre na pasta criada pelo checkout cima:
# cd trunk

Obtendo as alterações no repositório:
# svn log

-- output --
------------------------------------------------------------------------
r8 | augustowebd | 2010-09-09 11:03:41 -0300 (Thu, 09 Sep 2010) | 1 line

[MERGE] -estabilizacao do da 'tag.1.0.0a'
------------------------------------------------------------------------
r4 | augustowebd | 2010-08-26 10:32:27 -0300 (Thu, 26 Aug 2010) | 2 lines

[ADD]
 - carga inicial do trunk
------------------------------------------------------------------------
r3 | root | 2010-08-26 10:31:42 -0300 (Thu, 26 Aug 2010) | 1 line

configuracao inicial
------------------------------------------------------------------------
-- output --

Com isso podemos saber exatamente o que foi alterado no repositório, assim, supondo que o erro ocorreu ao efetuar o MERGE, na revisão 8 "r8 | augustowebd |", o comando para reverter a alteração ficaria:

# svn merge -r:3:4 http://localhost/svn/foo/trunk

Nenhum comentário: