Eu acredito que você precisa:
svn diff -rBASE:HEAD
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?
Eu acredito que você precisa:
svn diff -rBASE:HEAD
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.
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
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í.
E sim, eu sei que sugerir que você mude de produto não é uma solução ideal, mas é uma solução, no entanto.
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
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.
Tags svn version-control comparison