2011-06-06 7 views
57

Sto cercando di unire le ultime modifiche dal tronco a un ramo del mio progetto, ma il problema è che non so quale revisione del tronco ho controllato che alla fine creato il ramo da. Penserei che SVN l'abbia registrato da qualche parte. Qualcuno sa come posso trovare il numero di revisione?Trova revisione nel tronco che è stato creato un ramo da

+0

Se si utilizza svn 1.5 o successivo, non è necessario conoscere questo numero di revisione per eseguire l'unione. 'svn merge ^/trunk .' lo capirà da solo. Se ciò non sta accadendo, potrebbe essere necessario "svnadmin upgrade' il tuo repository. – slowdog

+0

Hmmm ... Sottoclip chiede la revisione iniziale, dovrò vedere se può fare un'unione in questo modo – Andy

risposta

67

Dalla riga di comando, il --stop-on-copy flag può essere utilizzato per aiutare a mostrare dove è stato copiato da un ramo:

svn log --verbose --stop-on-copy $REPOSITORY/branches/feature 

L'ultima riga del dirà qualcosa di simile:

Changed paths: 
    A /branches/feature (from /trunk:1234) 
+0

ahh uomo. Vorrei che ci fosse un'opzione "stop on N copies"! dovrà attraversarli manualmente. Grazie! – Andy

+0

Penso che una mossa svn verrà considerata come una "copia" ... poiché è una copia ed elimina in un colpo solo. Quindi, se crei un ramo e poi lo rinomini (rinominalo come nel comando tartaruga da rinominare), si disattiva "quando è iniziato questo ramo?" dati. Lo dico solo perché "rinominare" non suona come "creare" ... purtroppo l'ho imparato nel modo più duro. – granadaCoder

12

Stai utilizzando TortoiseSvn o riga di comando?

Riga di comando: svn log --stop-on-copy e quindi controllare il numero di giri più basso.

tortoisesvn: right-click, tortoise-svn, show log, make sure 'stop on copy' is *checked* and press refresh. Scroll to the bottom and find the smallest rev number. enter image description here

+0

effettivamente stavo usando Subclipse – Andy

+1

Non completamente corretto. Quando si crea un ramo è possibile specificare su quale revisione si basa il ramo (usando -r) - es. 'svn copy -r 1234 svn: //foo.com/trunk svn: // foo.com/branches/b1'. La revisione di base non è necessariamente uguale a quella in cui è stato creato il ramo. La risposta di @ richq mostra come ottenerlo correttamente. – harmic

2

Se avete utilizzato per creare un svn copytag/branch, allora svn log si può dire da dove è stato copiato la tua roba nel ramo. Ad esempio, supponiamo di avere svn://svn/trunk/foo e abbiamo creato un ramo svn://svn/branches/super_foo. Esegui svn log -v svn://svn/branches/super_foo, ti dirà qualcosa del genere - /branches/super_foo from /trunk/foo:22890, che significa che hai copiato la revisione 22890 del tronco nel tuo ramo.

0

Per l'applicazione Cornerstone, per vedere dove ha origine un tag o ramo, guarda nella timeline.

9

Forse un po 'tardi ma.

Se siete attualmente nel ramo è possibile eseguire:

svn log -r 1:HEAD --limit 1 --stop-on-copy 

visualizza la prima revisione del ramo vale a dire quando è stato creato.

+0

Questa è la risposta corretta. Non elenca migliaia di revisioni inutili, solo per guardare l'ultimo. – bobbogo

+1

Suggerirei di aggiungere l'opzione '-v' al comando precedente in modo da poter ottenere anche il messaggio' (from path: rev) '. –

Problemi correlati