2009-10-14 18 views
22

Lokalne usunięcie pliku, po którym następuje aktualizacja svn, przywraca lokalną kopię tego pliku. Jednak wydaje się, że nie dotyczy to folderów. Czy istnieje sposób na sprawdzenie, czy działa również dla folderów?Jak przywrócić lokalnie usunięty folder?

EDIT: To właśnie wyjście konsola wygląda następująco:

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: Użyłem svn od ponad dwóch lat i nigdy nie miałem tego błędu przed. Ale nie zmieniłem żadnych ustawień. Jedyne co mogłem wymyślić to to, że utworzyłem Lokalne Repozytorium z SVN Tortoise dzisiaj na moim zewnętrznym dysku twardym, aby zarchiwizować jakieś niespokrewnione stare rzeczy. Ale to nie powinno być przyczyną problemu, ponieważ zachowanie występuje zarówno na lokalnej kopii z tego lokalnego repozytorium, jak i mojego kodu z Google Project Hosting.

EDIT3: WTF Nagle nie mogę już odtworzyć błędu. Wszystko działa tak, jak powinno. Ale niczego nie zmieniłem.

EDIT4: W EDIT1 plik wydaje się być oznaczony jako usunięty, ale nie jest tak, ponieważ polecenie svn commit nie zrobiło nic. Ani też Tortoise Check for modifications nie zawierał żadnej listy.

Uwaga: Gdy problem nadal występował, przywrócenie folderu przywracała w pełni rekurencyjna aktualizacja.

+0

Czy próbowali za pomocą git? –

Odpowiedz

65

Wpadłem dzisiaj na ten problem z svn 1.5.6. svn up --force the_dir_path Naprawiono to dla mnie.

Aby odtworzyć:

$ 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

Dla każdego, kto próbuje dosłownie "dir" (tak jak ja), powinien on zostać zastąpiony katalogiem, który chcesz odzyskać. –

+7

To jedyna odpowiedź, która rozwiązała to dla mnie. Przywracanie, rekurencyjne przywracanie itp. Nie działało. Dzięki! – Laurent

+0

dzięki za uratowanie mnie :) – Stevko

14

Prawdopodobnie chcesz użyć polecenia svn revert zamiast przechodzić przez proces usuwania elementów, a następnie aktualizować, aby je przywrócić. Użyj przełącznika -R, aby rekurencyjnie przywrócić pliki/katalogi.

svn Informacja o pomoc dla revert jest następujący

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

Usuwanie folderu z aktualizacją svn jest przydatnym sposobem czyszczenia plików śmieci/tymczasowych w tym folderze. – StackedCrooked

+0

A jeśli folder zostanie uszkodzony, zwykle łatwiej jest go usunąć i przywrócić niż próbować naprawić. – StackedCrooked

+7

Przywracanie nie odtwarza usuniętych folderów – Damien

5

korzystanie svn revert (-R) foldername aby ją z powrotem. usunąłeś go, używając svn rm i svn up, który go nie odtworzy, ponieważ nadal jest oznaczony jako usunięty

+0

Nie zrobił' svn rm', ale po prostu 'rm'.Miałem również ten problem i powrót nie naprawił tego. Tylko 'update --force 'zrobił. – Laurent

+0

@ Laurent, dziękuję (jeśli nadal tu jesteście), jeśli mielibyście to jako odpowiedź, głosowałbym na to. – 244an

3

używać do przypadkowo usunięte poleceniem folderu

SVN UPDATE

na folderze nadrzędnym

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