przepraszam, że wykorzystuję trochę miejsca tylko na powtórzenie poprzedniej odpowiedzi - ale z tym zawsze mam kłopoty.
Powiedzmy, że zaktualizowałem lokalne pliki do najnowszej wersji, czyli 854. Następnie chciałbym uzyskać starszą wersję - wersję pliku z kilku wersji wcześniejszych, powiedzmy wersję 851.
Kopiowanie zadziała:
svn copy -r 851 svn+ssh://<repository URL>/l3toks.dtx ./l3toks.dtx
.. jednak nie przeszkadza mi szukanie adresu URL repozytorium :)
Aktualizacja pozornie może działać:
svn up -r 851 ./l3toks.dtx
... jednak oznacza to również kopię lokalną jako „świeżo wyewidencjonowaną” lub raczej „taką samą jak wersja online” (np. w Tortoise / RabbitVCS dostajesz zielony znacznik OK) - co oznacza, że nie możesz tego zrobić svn ci -m "rolled back to r 851"
: po prostu dlatego, że lokalna subversion
plik wykonywalny nie zauważy żadnych lokalnych zmian i nie będzie przejmował się przesyłaniem czegokolwiek do repozytorium online.
I, jak już odpowiedziałem, odwrotne scalanie działa - ale w tym przypadku nie należy polegać na składni skrótów; ale konkretnie określ:
svn merge -r HEAD:851 l3toks.dtx
--- Reverse-merging r854 through r852 into 'l3toks.dtx':
U l3toks.dtx
Muszę przyznać - nigdy bym nie zrozumiał zdania " Odwrotne scalanie r854 do r852 do pliku ", które oznaczałoby " Właśnie dostałem r851 z twojego pliku i nadpisałem to, co miałeś wcześniej lokalnie - i jest oznaczone jako inne niż ostatnia wersja online, więc możesz to sprawdzić online jako nową wersję „ wycofania ”, ale myślę (i mam nadzieję :)) tak właśnie działa :)
Następnie można svn diff
szybko sprawdzić, czy lokalnie otrzymaliśmy właściwą wersję; a także, plik zostanie oznaczony czerwonym wykrzyknikiem w Tortoise / RabbitVCS (to znaczy inaczej niż ostatnia zatwierdzona wersja), więc svn ci -m "rolled back to r 851"
może zostać uruchomiony tym razem.
Zwróć również uwagę, że jeśli w końcu zmienisz zdanie po scaleniu odwrotnym ( tj. I tak chcesz nadal pracować nad najnowszą wersją HEAD, tutaj 854 - po przywróceniu lokalnie do 851, ale jeszcze nie zatwierdziłeś wycofania ), nie powinieneś używać svn up
, ponieważ po prostu powie, że jest już „ W wersji 854 ”; użyj zamiast tego svn revert --recursive .
lub podobnego ...
Twoje zdrowie!
Ref: Jak przywrócić zmiany za pomocą Subversion - Jacob Wright - Flex, AIR, PHP itp.
EDYCJA: ... i najwyraźniej dokładnie taki sam efekt svn merge -r HEAD:851 l3toks.dtx
, jaki można osiągnąć za pomocą:
svn export -r 851 l3toks.dtx
A l3toks.dtx
Export complete.