sexta-feira, 23 de março de 2012

Simular o comando stash do git no svn

O programa de controle de versão git tem um comando muito útil chamado stash. Ele permite que você "coloque de lado" as alterações não persistidas. É muito útil quando por exemplo você está trabalhando em alguma alteração profunda na base de código e uma alteração rápida para corrigir um bug surge. O que você faz neste caso? Você não vai querer perder as alterações já feitas, mas para corrigir o bug você precisa de uma versão "limpa" do código. Uma solução seria obter o código novamente do programa de controle de versão e corrigir o bug neste novo checkout, o que é muito trabalhoso e dependendo do tamanho de sua base de código pode tomar muito tempo. É aí que o comando stash entra, você coloca suas alterações na "espera", corrige o bug e depois traz novamente todas as alterações iniciais.

Agora como dar um stash no svn? O svn não tem o comando stash, mas podemos simulá-lo usando outros comandos. Primeiro nós precisamos criar um patch com todas as alterações feitas. Na raiz de seu diretório execute o seguinte comando:
svn diff > nome_patch.patch
Um patch nada mais é do que um arquivo que contem as alterações feitas em um ou mais arquivos. O comando diff cria exatamente isso. Se você abrir o arquivo nome_patch.patch em um editor de texto vai ver várias linhas com sinais de + ou - indicando linhas adicionadas ou removidas.
Antes de fazer o diff adicione os novos arquivos criados (com o comando svn add nome_arquivo) se você quiser que eles sejam enviados para o patch. Após isso você pode executar o seguinte comando:
svn revert -R .
Este comando vai desfazer todas as alterações feitas nos arquivos em todos os diretórios do projeto. Quando você quiser retornar todas as alterações feitas você deve executar o seguinte comando:
patch -p0 < nome_patch.patch
Lembrem-se de executar os comando de criação e restauração do patch no mesmo diretório e de preferência que seja o diretório raiz.

Pronto agora todas as alterações devem estar de volta!

Nenhum comentário:

Postar um comentário