Subversion: Como comparar as diferenças entre as alterações recebidas?

19

Gostaria de ver as alterações que meus colegas de trabalho fizeram antes de aceitar as alterações recebidas.

Então começo obtendo o status

svn st -u

... o que me diz que recebi uma alteração de entrada

    *     9803   incomingChanges.html
M         9803   localChanges.html
M   *     9803   localAndIncoming.html

Eu posso ver o que mudei

svn diff localChanges.html

... mas como posso fazer o diff localAndIncoming.html para mostrar o que foi alterado e como ele é diferente da minha cópia de trabalho?

    
por Andrew 08.06.2010 / 18:20

6 respostas

21

Eu acredito que você precisa:

svn diff -rBASE:HEAD
    
por 14.03.2011 / 11:11
2

FYI svn diff fornece um diff baseado no arquivo não modificado armazenado no diretório .svn , não baseado na versão do repositório ativo.

Você pode executar svn update para obter o subversion para tentar uma atualização (e possivelmente mesclar) e então fazer um svn diff , mas isso não é tão limpo quanto eu acho que você quer.

Finalmente svn diff suporta o diff no repo. Exemplo:

svn diff svn://svnserver/repo/localChanges.html -r REV_NO

Qual padrão é comparar HEAD com a revisão passada.

    
por 08.06.2010 / 18:58
2

Com tortoisesvn (se você usa janelas )

  • Invoque a tela de log

  • Selecione a revisão da cabeça

  • Clique com o botão direito em localAndIncoming.html

  • Escolha Comparar com a cópia de trabalho

por 19.01.2011 / 22:20
0

Você realmente não pode até que você realmente baixe a nova versão. Limitações como essa foram uma das grandes razões pelas quais um novo tipo de controle de origem se tornou popular ultimamente. É chamado controle de origem descentralizado.
Com este novo formulário você tem seu próprio repositório local, e você pode então fazer alterações no repositório principal e executar um diff nele, se você não gostar das mudanças feitas, você pode reverter seu próprio repositório e ir a partir daí.

link

E sim, eu sei que sugerir que você mude de produto não é uma solução ideal, mas é uma solução, no entanto.

    
por 08.06.2010 / 18:46
0

Faça outro check-out em uma nova pasta.

cd ..
svn checkout  /path/to/repo clean_working_copy

Se você reutilizar clean_working_copy, não esqueça de atualizar antes

svn update clean_working_copy

Em seguida, compare seu arquivo com o de clean_working_copy

diff your_working_copy/localAndIncoming.html clean_working_copy/localAndIncoming.html

Ou com o seu preferido 3-way diff (o meu é kdiff3)

kdiff3 --L1 Base --L2 theirs --L3 mine your_working_copy/.svn/text-base/localAndIncoming.html clean_working_copy/localAndIncoming.html your_working_copy/localAndIncoming.html
    
por 19.01.2011 / 22:12
0

Eu acho que

svn diff -r HEAD

quase dá o que você quer. A única coisa é que o + e - são invertidos em relação ao que você espera.

    
por 01.02.2011 / 10:59