2010-09-22 14 views
68

Ho una copia funzionante di un repository sul mio computer e so che è stato aggiornato sul server. Mi piacerebbe sapere come ottenere la differenza tra la nuova versione e la versione nella mia copia di lavoro utilizzando gli argomenti della riga di comando svn.Controlla diff nei file sul server

C'è un modo per me per fare questo?

+0

vedere anche http://superuser.com/questions/150213/subversion-how-to-compare-differences- between betweenincoming-changes – craq

risposta

104

La copia di lavoro è revisione BASE. L'ultima copia dal repository è revisione HEAD. Ciò confrontare la vostra copia di lavoro contro la revisione HEAD:

svn diff -r HEAD <file> 

realtà che sputerò i cambiamenti in senso inverso, vale a dire che ti dice come andare dalla testa ai BASE. Quindi tecnicamente vuoi:

svn diff -r BASE:HEAD <file> 

Riesci a risparmiare i colpi della tastiera? Solo tu e la tua divinità conoscete questa risposta.

+1

+1 per wit. selezionato per la correttezza –

+9

Il file di copia di lavoro può essere diverso dalla base (quando si hanno modifiche locali al file).Dovresti capire che differisce il file senza le modifiche locali con il server. –

+0

La risposta successiva risponde alla domanda originale di modifiche locali diverse a HEAD – Chadwick

15

La differenza tra copia di lavoro e HEAD; i cambiamenti che avrebbe bisogno di essere fatto per quello che oggi è nel repository (HEAD), per produrre la vostra copia di lavoro :

svn diff -r HEAD --old=<file> 

di possibile interesse, la differenza tra BASE e HEAD; cambiamenti che sono stati controllati nel repository dal momento dell'ultimo aggiornamento copia di lavoro:

svn diff -r BASE:HEAD <file> 

E, naturalmente, la differenza tra BASE e copia di lavoro; le modifiche apportate dopo l'ultimo aggiornamento copia di lavoro:

svn diff <file> 


ci sono tre versioni in discussione: BASE, copia di lavoro e HEAD.

  • BASE: <file> come ultimo estratto/aggiornato. Che copia di lavoro sarebbe tornare a dopo l'utilizzo svn revert
  • copia di lavoro: le modifiche locali per <file> che è stato estratto/aggiornato di recente, BASE
  • HEAD: ultime modifiche in repository. Equivalente a BASEiff nessuna modifica è stata commessa dal <file> è stata verificata/aggiornata come copia di lavoro.