Jak "przywrócić" usunięty folder w Subversion / TortoiseSVN?

Przypadkowo usunęliśmy folder 'tags' z naszego repozytorium Subversion, gdzie zamierzaliśmy usunąć tylko jeden konkretny tag. Jak najłatwiej odzyskać folder "tagi"?

Używamy TortoiseSVN jako naszego klienta i pomyślałem, że kiedy przejdę do przeglądarki repo i Pokaż dziennik, pojawi się coś w stylu "Przywróć zmiany z tej wersji", podobnie jak to, co możesz zobaczyć w podobnym oknie na swojej kopii roboczej. Ale nie ma tam takiego rozkazu...

Author: Borek Bernard, 2010-02-15

6 answers

Wystarczy skopiować usunięty folder z poprzedniej wersji.

W przeglądarce repozytorium kliknij przycisk HEAD (w prawym górnym rogu), aby pokazać rewizji, w której folder nadal istnieje, a następnie kliknij go prawym przyciskiem myszy i wybierz " Kopiuj do..."i wprowadź tam ścieżkę, którą chcesz ponownie utworzyć folder (prawdopodobnie tę samą ścieżkę, która jest już w polu tekstowym).

 107
Author: Mikael Sundberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-26 13:01:58

Dla entuzjastów wiersza poleceń:

  • Najpierw znajdź numer wersji, w której nastąpiło usunięcie:

    svn log -v http://svnserver/path/to/folderContainingDeletedFolder
    

Powiedzmy, że katalog został usunięty w wersji 999 (btw: może być łatwiej znaleźć numer wersji w przeglądarce svn repo)

  • Skopiuj folder z revision minus 1

    svn copy http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder@998 http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder -m "undeleted folder"
    
Gotowe!

W Twoim przypadku może to być:

    svn copy http://svnserver/project/tags@998 http://svnserver/project/tags -m "undeleted folder"
 72
Author: raudi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-12 08:15:55

Większość z tych odpowiedzi będzie działać do pewnego stopnia, ale poprawna odpowiedź należy do Daniela. W ten sposób zachowasz historię wersji.

svn merge -r R1:R2

Gdzie R1 to wersja, w której się znajdujesz, a R2 to wersja, która zawiera usunięty plik / folder.

 11
Author: Miles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-28 18:18:37

Będziesz musiał wykonać odwrotne scalanie.

Aby uzyskać szczegółowe informacje na temat tego, jak to zrobić (i prawie wszystko, co kiedykolwiek chcesz lub musisz zrobić z SVN), oficjalna książka jest dostępna online.

 7
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-27 00:00:33

Goto Repository Browser z twojego repository, Kliknij prawym przyciskiem myszy na folderze nadrzędnym, w którym istniał twój usunięty folder. Teraz Show Log folderu nadrzędnego i wybierz poprzednią wersję, w której zatwierdzono operację usuwania. Będziesz miał listę i kliknij prawym przyciskiem myszy na folderze z informacji o wersji i wybierz Update to this Revision.

Jesteś skończony

 2
Author: Abdul Munim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-15 10:57:22

Kontynuując odpowiedź raudiego, która zadziałała dla mnie po tej rewizji.

Niektórzy klienci svn mogą potrzebować numeru wersji podanego za pomocą parametru-r revision zamiast @ po folderze w następujący sposób:

svn copy svn://svnserver/project/tags svn://svnserver/project/tags **-r 998** -m "undeleted folder"
 2
Author: Paul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-15 11:19:14