Come "recuperare" una cartella eliminata in Subversion / TortoiseSVN?
-
20-09-2019 - |
Domanda
Abbiamo eliminato accidentalmente la cartella "tags" dal nostro repository Subversion dove intendevamo eliminare solo un tag specifico.Qual è il modo più semplice per recuperare la cartella "tags"?
Usiamo TortoiseSVN come nostro client e ho pensato che quando vado al browser del repository e mostro il registro, ci sarà qualcosa come "annulla modifiche da questa revisione" in modo simile a quello che puoi vedere in una finestra di dialogo simile sulla tua copia di lavoro.Ma lì non esiste un comando del genere...
Soluzione
Basta copiare la cartella eliminata di ritorno da una revisione precedente.
Nel Browser Repository, fare clic sul pulsante con l'etichetta HEAD (nell'angolo in alto a destra) per mostrare ad una revisione lì la cartella esiste ancora, quindi fare clic destro la cartella e selezionare "Copia in ..." e inserire il percorso ci si vuole la cartella da ricreato (probabilmente lo stesso percorso che è già nella casella di testo).
Altri suggerimenti
per gli appassionati della riga di comando:
-
prima trovare il numero di revisione in cui è accaduto il tuo eliminazione:
svn log -v http://svnserver/path/to/folderContainingDeletedFolder
dici a trovare che la directory è stata eliminata nella revisione 999 (BTW: si potrebbe trovare più facile trovare il numero di revisione con il browser svn repo)
-
copiare la cartella dalla revisione meno 1
svn copy http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder@998 http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder -m "undeleted folder"
voilà il gioco è fatto!
nel tuo caso questo potrebbe essere:
svn copy http://svnserver/project/tags@998 http://svnserver/project/tags -m "undeleted folder"
La maggior parte di queste risposte si adopererà per una laurea, ma la risposta corretta è Daniel. Fare una fusione inversa. In questo modo si mantiene la cronologia delle versioni.
svn merge -r R1:R2
dove R1 è la revisione che ci sei, ed R2 è la revisione che contiene il file / cartella eliminata.
Sarà necessario fare un fusione inversa .
Per i dettagli su come farlo (e praticamente qualsiasi altra cosa che si potrebbe desiderare o necessità di fare con SVN), il libro ufficiale è disponibile linea .
A seguito di risposta di raudi che ha funzionato per me dopo questa revisione.
Alcuni client SVN potrebbe essere necessario il numero di revisione specificato utilizzando il parametro di revisione -r invece di utilizzare @ dopo che la cartella nel seguente modo:
svn copy svn://svnserver/project/tags svn://svnserver/project/tags **-r 998** -m "undeleted folder"
Vai a Repository Browser
del tuo repository
, fai clic con il pulsante destro del mouse sulla cartella principale in cui si trova il tuo cartella eliminata esistito.Ora, Show Log
della cartella principale e seleziona la revisione precedente in cui hai eseguito il commit dell'operazione di eliminazione.Avrai un elenco e fai clic con il pulsante destro del mouse sulla cartella dalle informazioni sulla revisione e seleziona Update to this Revision
.
Hai fatto