Diferença entre duas revisions no SVN

Muito útil para obter todos arquivos modificados em um branch, por exemplo:

svn diff -r 472:HEAD --summarize ./

O branch foi criado na revision 472, e como não temos desenvolvimento no trunk atualmente, peguei as alterações entre 472 e HEAD. No lugar de HEAD pode ser o número de outra revision.

O retorno do comando acima é parecido com o conteúdo abaixo:

M       PHP/include/lib/Form.inc.php
M       PHP/include/lib/Detail.inc.php
A       PHP/html/js/jquery.maskedinput-1.2.2.min.js
M       PHP/html/js/teclas_atalho.js
A       PHP/html/service/ajax/addFaixaCep.php
A       PHP/html/service/ajax/isCepAtendido.php
A       PHP/html/service/ajax/getCidades.php
A       PHP/html/service/ajax/getRegioes.php
A       PHP/html/service/ajax/removeFaixaCep.php
A       PHP/html/service/ajax/getCliente.php
A       PHP/html/service/ajax/createPedido.php
A       PHP/html/service/ajax
M       PHP/html/gestao/default/css/gerenciamento.css
A       PHP/html/gestao/cadastro/rota_entrega_det.php

Outros comandos que utilizei em conjunto:

svn diff -r 472:HEAD --summarize ./ | cut -c9- | \
    grep -i -E "\.\w+$" | \
    xargs cp --parents -r -t \
    /home/william.comnisky/Desktop/Melhorias/

Update 22/08/2011: como sugestão do @lepkoski, adicionei o grep acima, evitando copiar todos arquivos do diretório incorretamente.

A partir do retorno mostrado acima, com o cut ignoro o status do arquivo no SVN e elimino os espaços em brancos com “-c9-”, ou seja, a partir do nono caractere em diante. Feito isso, utilizo o cp em conjunto com o xargs para copiar os arquivos com a mesma estrutura de diretórios para um novo diretório.

Importante: eu não estou considerando os status do SVN pois só terei adições e modificações de arquivos e diretórios. Porém, se na diferença entre revisões tiver alguma exclusão, é importante levar o status em consideração.

Tendo a estrutura montada nesse novo diretório, utilizo o ls em conjunto com o egrep

ls --format=single-column -R \
    /home/william.comnisky/Desktop/Melhorias/ \
    -F | egrep "[^/]$"

Posts relacionados:

  1. Configurando um ambiente para desenvolvimento web com PHP

This entry was posted in Artigos and tagged , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">