2009-10-14 13 views
22

L'eliminazione locale di un file seguita da svn update ripristina la copia locale di quel file. Tuttavia questo non sembra applicarsi alle cartelle. C'è un modo per farlo funzionare anche per le cartelle?come ripristinare una cartella eliminata localmente?

EDIT: Questo è ciò che l'output della console si presenta come:

C:\svn\Google Project Hosting\xulwin\xulrunnersamples>rmdir /S /Q treeview 

C:\svn\Google Project Hosting\xulwin\xulrunnersamples>svn up 
D treeview 
Updated to revision 50. 

EDIT2: Ho usato svn per oltre due anni e non ho mai avuto questo errore prima. Ma non ho cambiato nessuna impostazione. L'unica cosa che posso pensare è che ho creato un Local Repository con Tortoise SVN oggi sul mio disco rigido esterno per eseguire il backup di alcune vecchie cose non correlate. Ma questo non dovrebbe essere la causa del problema perché il comportamento si verifica sia sulla copia locale da questo repository locale che sul mio codice da Google Project Hosting.

EDIT3: WTF Non riesco più a riprodurre il problema. Funziona tutto come dovrebbe ora. Ma non ho cambiato nulla.

EDIT4: In EDIT1 il file sembra essere contrassegnato come eliminato, ma non lo è dato che il comando svn commit non ha fatto nulla. Neanche Tortoise Check per le modifiche elencava nulla.

Nota: quando si verifica ancora il problema, un aggiornamento completamente ricorsivo ha ripristinato la cartella.

+0

Hai provato a usare git? –

risposta

65

Mi sono imbattuto in questo problema oggi con svn 1.5.6. svn up --force the_dir_path risolto per me.

Per ricreare:

$ svn up 
Updated to revision X. 
$ rm -rf the_dir_path 
$ svn up 
D the_dir_path 
Updated to revision X. 
$ svn up 
Updated to revision X. 
$ svn up --force the_dir_path 
A .... 
A .... 
Updated to revision X. 
+0

Per tutti coloro che cercano di digitare "dir" letteralmente (come me), dovrebbe essere sostituito con la directory effettiva che si desidera recuperare –

+7

Questa è l'unica risposta che ha risolto per me. Ripristina, ripristina ricorsiva, ecc. Non ha funzionato. Grazie! – Laurent

+0

grazie per avermi salvato :) – Stevko

14

Probabilmente si desidera utilizzare il comando svn revert piuttosto che passare attraverso il processo di eliminazione degli elementi e quindi l'aggiornamento per ripristinarli. Utilizzare l'opzione -R per ripristinare in modo ricorsivo i file/le directory.

svn aiuto informazioni per Revert è la seguente

revert: Restore pristine working copy file (undo most local edits). 
usage: revert PATH... 

    Note: this subcommand does not require network access, and resolves 
    any conflicted states. However, it does not restore removed directories. 

Valid options: 
    --targets ARG   : pass contents of file ARG as additional args 
    -R [--recursive]   : descend recursively, same as --depth=infinity 
    --depth ARG    : limit operation by depth ARG ('empty', 'files', 
          'immediates', or 'infinity') 
    -q [--quiet]    : print nothing, or only summary information 
    --changelist ARG   : operate only on members of changelist ARG 
          [aliases: --cl] 

Global options: 
    --username ARG   : specify a username ARG 
    --password ARG   : specify a password ARG 
    --no-auth-cache   : do not cache authentication tokens 
    --non-interactive  : do no interactive prompting 
    --trust-server-cert  : accept unknown SSL server certificates without 
          prompting (but only with '--non-interactive') 
    --config-dir ARG   : read user configuration files from directory ARG 
    --config-option ARG  : set user configuration option in the format: 
           FILE:SECTION:OPTION=[VALUE] 
          For example: 
           servers:global:http-library=serf 
+2

Eliminare una cartella seguita da un aggiornamento svn è un modo pratico per ripulire i file junk/temporanei all'interno di quella cartella. – StackedCrooked

+0

E se la cartella viene corrotta, di solito è più veloce semplicemente eliminarla e ripristinarla piuttosto che provare a ripararla. – StackedCrooked

+7

Revert non ricrea le cartelle eliminate – Damien

5

uso svn revert (-R) foldername per riportarlo. lo hai cancellato usando svn rm e non lo ricreamo per te, perché è ancora contrassegnato come cancellato

+0

Non ha eseguito' svn rm' ma solo 'rm'.Ho anche avuto questo problema e il ripristino non ha risolto il problema. Solo 'update --force' ha fatto. – Laurent

+0

@Laurent, grazie (se sei ancora qui), se tu avessi quella risposta avrei votato. – 244an

3

che uso per il comando cartella accidentalmente cancellati

SVN UPDATE

sulla cartella principale

0
svn status|grep ^D|^Ct -c9-|xargs -n1 svn revert 
Problemi correlati