mi dispiace occupare un po 'di spazio solo su una reiterazione della risposta precedentemente fornita, ma è qualcosa con cui finisco sempre nei guai.
Diciamo che ho aggiornato i file locali all'ultima revisione, che è 854. Quindi, vorrei ottenere una revisione precedente: la versione del file da qualche revisione precedente, diciamo revisione 851.
Copia funzionerebbe:
svn copy -r 851 svn+ssh://<repository URL>/l3toks.dtx ./l3toks.dtx
.. tuttavia, non posso essere disturbato a cercare l'URL del repository :)
L'aggiornamento sembra funzionare:
svn up -r 851 ./l3toks.dtx
... tuttavia, contrassegna anche la copia locale come "appena estratto", o piuttosto "uguale alla revisione online" (ovvero in Tortoise / RabbitVCS viene visualizzato un segno di spunta verde OK) - il che significa che non è possibile farlo svn ci -m "rolled back to r 851"
: semplicemente perché il locale subversion
eseguibile non noterà alcuna modifica locale e non si preoccuperà di caricare nulla nel repository online.
E, come già risposto, la fusione inversa funziona - ma in questo caso, non si dovrebbe fare affidamento sulla sintassi del collegamento; ma dichiarare specificamente:
svn merge -r HEAD:851 l3toks.dtx
--- Reverse-merging r854 through r852 into 'l3toks.dtx':
U l3toks.dtx
Devo ammettere che non avrei mai capito la frase " Unire inversa r854 attraverso r852 nel file " significa " Ho appena ottenuto r851 del tuo file e ho sovrascritto tutto ciò che avevi precedentemente localmente - ed è contrassegnato come diverso dall'ultima revisione online, quindi puoi ricontrollarlo online come una nuova revisione " rollback" ", ma immagino (e spero :)) che sia quello che fa :)
Dopo questo, si può usare svn diff
per una rapida verifica se abbiamo ottenuto la giusta revisione a livello locale; e inoltre, il file sarà contrassegnato da un punto esclamativo rosso in Tortoise / RabbitVCS (ovvero, diverso dall'ultima versione impegnata), e quindi svn ci -m "rolled back to r 851"
può essere eseguito questa volta.
Inoltre, tieni presente che se alla fine cambi idea dopo la fusione inversa ( ovvero desideri comunque continuare a lavorare sull'ultima versione HEAD, qui 854 - dopo aver eseguito il rollback a 851 localmente, ma non hai ancora eseguito il rollback ), non dovresti usarlo svn up
, perché dirà semplicemente che è già " Alla revisione 854 "; usa invece svn revert --recursive .
o simili ...
Saluti!
Rif: Come ripristinare le modifiche utilizzando Subversion - Jacob Wright - Flex, AIR, PHP, ecc.
EDIT: ... e apparentemente, esattamente lo stesso effetto di svn merge -r HEAD:851 l3toks.dtx
, può essere ottenuto con:
svn export -r 851 l3toks.dtx
A l3toks.dtx
Export complete.