segunda-feira, 26 de novembro de 2012

Uma dica rápida de SVN (Apache Subversion)

Meus colegas de trabalho e eu notamos que uma determinada pasta de um projeto (SGT) foi removida do repositório do SVN. Daí partimos para a tentativa de recuperá-la. Fazer o "check in" de uma pasta de trabalho atualizada desse projeto tornaria o conteúdo versionado novamente, mas nossa intenção, claro, era não perder o histórico todo desse projeto. Garantir isso é que deu um pouco mais de trabalho.
Após várias tentativas, o comando que enfim funcionou foi: 
D:\Andre\NetBeansProjects>svn copy svn://servidor/spm/Sistemas/SGT@1461 svn://servidor/spm/ -m "ressurect"
 Ou seja:
copie de: REPOSITÓRIO/PASTA/SUBPASTA@VERSÃO para REPOSITÓRIODESTINO -m "mensagem"
 Vale notar que:
  • 1461 era a última versão em que a pasta SGT existia;
  • Depois é necessário mover a pasta recuperada para a subpasta "Sistemas", pois o comando COPY só funciona se informar o repositório (servidor/spm) sem informar a subpasta (Sistemas);
  • O comando COPY acima ocorre diretamente no servidor, não sendo necessário existir a WORKING COPY (pasta local versionada).
  • O último argumento -m "ressurect" é a mera mensagem de log. Porém, como a operação é 100% no servidor, o commit só ocorre se informar alguma mensagem. E a operação não exige "svn commit" separado.

Eis um livro bem interessante disponível no Google Books que contém esta e outras dicas: