Zacząłem używać Subversion z TortoiseSVN. Jeśli otworzę dziennik i kliknę prawym przyciskiem myszy starą wersję, zobaczę dwie opcje, które brzmią, jakby przywracały starszą wersję: „Zaktualizuj element do wersji” i „Przywróć tę wersję”.
Rozumiem, że aktualizacja do starszej wersji jest używana, gdy chcesz tylko spojrzeć wstecz na starą wersję, ale tak naprawdę nie chcesz zmieniać repozytorium. Przywróć jest wtedy, gdy faktycznie coś schrzaniłeś i chcesz, aby najnowsza wersja w repozytorium była taka sama, jak starsza wersja.
Powiedzmy, że wersja HEAD to 100, a ja powrócę do 95. To odwróci scalenie mojej kopii roboczej z powrotem do 95. Wtedy mogę zatwierdzić tę zmianę do repozytorium, które utworzy poprawną wersję 101? Czym się to różni, gdybym zaktualizował z powrotem do wersji 95? Czy nadal nie odwraca zmian z ostatnich wersji? Nie mam pojęcia, jak stan mojej kopii roboczej różni się po przywróceniu lub zaktualizowaniu do starszej wersji.
źródło
update to
irevert to/from
traktować zmiany lokalne (niezatwierdzone zmiany)?Aby zrozumieć, w jaki sposób stan kopii roboczej różni się w obu scenariuszach, musisz zrozumieć koncepcję wersji BASE :
Twoja kopia robocza zawiera migawkę każdego pliku (ukrytego w folderze .svn) w tej wersji BASE, co oznacza, że był on ostatnio pobierany z repozytorium . To wyjaśnia, dlaczego kopie robocze zajmują 2x więcej miejsca i jak to jest możliwe, że możesz sprawdzić, a nawet cofnąć lokalne modyfikacje bez połączenia sieciowego.
Zaktualizuj element do wersji zmienia tę wersję podstawową, sprawiając, że BASE jest nieaktualny. Kiedy spróbujesz wprowadzić lokalne modyfikacje, SVN zauważy, że twoja BASE nie pasuje do repozytorium HEAD. Zatwierdzenie zostanie odrzucone, dopóki nie wykonasz aktualizacji (i prawdopodobnie scalenia), aby to naprawić.
Powrót do wersji nie zmienia BASE. Koncepcyjnie jest prawie to samo, co ręczna edycja pliku w celu dopasowania do wcześniejszej wersji.
źródło
update to
irevert to/from
traktować zmiany lokalne (niezatwierdzone zmiany)?Pliki w kopii roboczej mogą wyglądać dokładnie tak samo, ale nadal są to bardzo różne akcje - repozytorium jest w zupełnie innym stanie i będziesz mieć inne opcje dostępne po przywróceniu niż "aktualizacja" do starej wersji .
Krótko mówiąc, „aktualizacja do” wpływa tylko na kopię roboczą, ale „odwrotne scalanie i zatwierdzanie” wpłynie na repozytorium.
Jeśli „zaktualizujesz” do starej wersji, repozytorium się nie zmieniło: w twoim przykładzie wersja HEAD nadal wynosi 100. Nie musisz niczego zatwierdzać, ponieważ po prostu majstrujesz przy kopii roboczej. Jeśli dokonasz modyfikacji w swojej kopii roboczej i spróbujesz zatwierdzić, zostaniesz poinformowany, że twoja kopia robocza jest nieaktualna i będziesz musiał ją zaktualizować, zanim będziesz mógł zatwierdzić. Jeśli ktoś inny pracujący na tym samym repozytorium dokona „aktualizacji” lub jeśli wyewidencjonujesz drugą kopię roboczą, będzie to r100.
Jeśli jednak dokonasz „scalenia wstecznego” ze starą wersją, to twoja kopia robocza nadal będzie oparta na HEAD (zakładając, że jesteś na bieżąco) - ale tworzysz nową wersję, aby zastąpić niechciane zmiany. Musisz zatwierdzić te zmiany, ponieważ zmieniasz repozytorium. Po zakończeniu wszelkie aktualizacje lub nowe kopie robocze oparte na HEAD pokażą r101 z treścią, którą właśnie zatwierdziłeś.
źródło
Zaktualizuj kopię roboczą do wybranej wersji. Przydatne, jeśli chcesz, aby twoja kopia robocza odzwierciedlała czas z przeszłości lub jeśli były dalsze zatwierdzenia do repozytorium i chcesz aktualizować swoją kopię roboczą krok po kroku. Najlepiej zaktualizować cały katalog w kopii roboczej, a nie tylko jeden plik, w przeciwnym razie kopia robocza może być niespójna. Służy do testowania określonego celu obrotów, jeśli twój test zakończył się, możesz użyć tego polecenia, aby przetestować inny obrót lub użyć aktualizacji SVN, aby uzyskać HEAD
Jeśli chcesz cofnąć na stałe wcześniejszą zmianę, użyj Przywróć tę wersję .
- z dokumentu pomocy TSVN
Jeśli zaktualizujesz swoją kopię roboczą do wcześniejszej wersji, wpłynie to tylko na twoją własną kopię roboczą, po wprowadzeniu pewnych zmian i zechcieć zatwierdzić, nie powiedzie się, TSVN ostrzeże Cię, aby najpierw zaktualizować WC do najnowszej wersji. do rewizji można zatwierdzić do repozytorium. wszyscy wrócą do rewizji po wykonaniu aktualizacji.
źródło
Tekst z odniesienia do Żółwia:
Aktualizuj element do wersji Zaktualizuj kopię roboczą do wybranej wersji. Przydatne, jeśli chcesz, aby twoja kopia robocza odzwierciedlała czas z przeszłości lub jeśli były dalsze zatwierdzenia do repozytorium i chcesz aktualizować swoją kopię roboczą krok po kroku. Najlepiej zaktualizować cały katalog w kopii roboczej, a nie tylko jeden plik, w przeciwnym razie kopia robocza może być niespójna.
Jeśli chcesz trwale cofnąć wcześniejszą zmianę, użyj opcji Przywróć tę wersję.
Przywróć tę wersję Przywróć wcześniejszą wersję. Jeśli wprowadziłeś kilka zmian, a następnie zdecydujesz, że naprawdę chcesz wrócić do stanu rzeczy w wersji N, to jest to polecenie, którego potrzebujesz. Zmiany w kopii roboczej zostaną cofnięte, więc ta operacja nie wpłynie na repozytorium, dopóki nie zatwierdzisz zmian. Zwróć uwagę, że spowoduje to cofnięcie wszystkich zmian dokonanych po wybranej wersji i zastąpienie pliku / folderu wcześniejszą wersją.
Jeśli kopia robocza jest w stanie niezmodyfikowanym, po wykonaniu tej czynności kopia robocza zostanie wyświetlona jako zmodyfikowana. Jeśli masz już zmiany lokalne, to polecenie scali cofnięte zmiany z kopią roboczą.
To, co dzieje się wewnętrznie, polega na tym, że Subversion wykonuje odwrotne scalenie wszystkich zmian dokonanych po wybranej wersji, cofając efekt tych poprzednich zatwierdzeń.
Jeśli po wykonaniu tej akcji zdecydujesz, że chcesz cofnąć cofnięcie i przywrócić kopię roboczą z powrotem do jej poprzedniego niezmodyfikowanego stanu, powinieneś użyć TortoiseSVN → Przywróć z poziomu Eksploratora Windows, który odrzuci lokalne modyfikacje dokonane przez tę akcję odwrotnego scalania.
Jeśli chcesz po prostu zobaczyć, jak plik lub folder wyglądał we wcześniejszej wersji, użyj opcji Aktualizuj do wersji lub Zapisz wersję jako….
źródło
@BaltoStar aktualizacja składni wersji:
http://svnbook.red-bean.com/en/1.6/svn.ref.svn.c.update.html
Gdzie 30 to numer wersji. Mam nadzieję, że to pomoże!
źródło