Usunąłem plik z repozytorium i teraz chcę go przywrócić. Najlepsze, co potrafię, to:
- aktualizacja do wersji przed usunięciem
- skopiuj pliki w inne miejsce
- aktualizacja do głowy
- skopiuj pliki z powrotem
- Dodaj ich
- popełnić
To po prostu brzydko pachnie i powoduje utratę całej historii. Musi być lepszy sposób na zrobienie tego. Szukałem już w książce SVN, ale nic nie znalazłem, a teraz przeglądam listę tagów SVN.
svn
tortoisesvn
restore
BCS
źródło
źródło
Odpowiedzi:
Użyj scalania svn:
A więc przykład:
Dla TortoiseSVN (myślę ...)
Jest to jednak całkowicie niesprawdzone.
Edytowane przez OP : Działa to na mojej wersji TortoiseSVN (starego rodzaju bez przycisku „Następny”)
Sztuczka polega na połączeniu wstecz . Uznanie dla sean.bright za wskazanie mi właściwego kierunku!
Edycja: używamy różnych wersji. Metoda, którą opisałem, działała doskonale z moją wersją TortoiseSVN.
Warto również zauważyć, że jeśli było wiele zmian w zatwierdzeniu, które scalasz odwrotnie, będziesz chciał cofnąć te inne zmiany po zakończeniu scalania przed zatwierdzeniem. Jeśli tego nie zrobisz, te dodatkowe zmiany również zostaną cofnięte.
źródło
Problem z robieniem scalania svn, jak zasugerował Sean Bright, polega na tym, że przywraca inne zmiany wprowadzone w tej samej wersji, co usunięcie. Kopia svn to bardziej ukierunkowana operacja, która wpłynie tylko na usunięte pliki.
Używając Tortoise SVN możesz wskrzesić plik, który został usunięty z katalogu kopii roboczej oraz z późniejszych wersji SVN, poprzez kopię svn w następujący sposób:
Usunięty plik będzie teraz znajdował się w folderze kopii roboczej. Aby ponownie dodać go z powrotem do SVN, kliknij prawym przyciskiem myszy przywrócony plik i wybierz Zatwierdź SVN.
Uwaga: Ta metoda zachowa poprzednią historię przywracanego pliku, jednak aby zobaczyć poprzednią historię w dzienniku TortoiseSVN, musisz upewnić się, że opcja „Zatrzymaj przy kopiowaniu / zmianie nazwy” jest odznaczona w oknie dialogowym Komunikaty dziennika.
źródło
svn cp -r 1993 http://example.com/svn/trunk/path@1993 http://example.com/svn/trunk/path
merge
, ale nie odkryłem tego.Aby uzyskać kompletność, właśnie to znalazłbyś w książce svn, gdybyś wiedział, czego szukać. Oto, co już odkryłeś:
Cofanie zmian
Wskrzeszanie usuniętych elementów
To samo z nowszej (i szczegółowej) wersji książki:
Cofanie zmian
Wskrzeszanie usuniętych elementów
źródło
Użyj funkcji kopiowania Tortoise SVN, aby cofnąć zatwierdzone zmiany:
Mam nadzieję, że to pomoże
źródło
Wydaje się, że zawsze używam kopiowania svn jako operacji na serwerze, więc nie jestem pewien, czy działa z dwiema ścieżkami roboczymi.
Oto przykład przywracania usuniętego pliku do lokalnej kopii roboczej projektu:
Będąc w katalogu projektu. Działa to również w przypadku przywracania całych katalogów.
źródło
Jeśli używasz Tortoise SVN, powinieneś być w stanie cofnąć zmiany z samej wersji do kopii roboczej (efektywnie wykonując scalanie odwrotne), a następnie wykonać kolejne zatwierdzenie, aby ponownie dodać plik. Kroki, które należy wykonać:
źródło
Najłatwiejszym sposobem, w jaki mogłem przywrócić pliki i nie stracić historii wersji, jest użycie kopii SVN , powyższy przykład scalania wydaje mi się bardziej złożonym sposobem osiągnięcia tego samego. Dlaczego zachodzi potrzeba scalenia, jeśli po prostu chcesz przywrócić wersję?
W tym przypadku używam następujących i działa całkiem dobrze.
Wydaje się, że zawsze używam
svn copy
jako operacji serwera, więc nie jestem pewien, czy działa z dwiema ścieżkami roboczymi.źródło
Z SVN dla żółwia :
źródło
Powinieneś móc po prostu wyewidencjonować jeden plik, który chcesz przywrócić. Spróbuj na przykład
svn co svn://your_repos/path/to/file/you/want/to/restore@rev
gdzierev
jest ostatnia wersja, w której plik istniał.Musiałem to zrobić dokładnie jakiś czas temu i jeśli dobrze pamiętam, użycie
-r
opcjisvn
nie zadziałało; Musiałem użyć:rev
składni. (Chociaż mogłem zapamiętać to wstecz ...)źródło