Powiedzmy, że dokonałem pewnych złych zmian w repozytorium Subversion. Następnie dokonuję dobrych zmian, które chcę zachować.
Jaki byłby najłatwiejszy sposób na cofnięcie tych złych zmian w Eclipse i utrzymanie dobrych zmian? Zakładając, że pliki odnoszące się do złych zmian to nie to samo, co te, które dotyczą dobrych zmian. Jak to się zmienia, jeśli dobre zmiany zostały wprowadzone w tych samych plikach co złe zmiany?
Szukam głównie sposobu, aby to zrobić za pomocą wtyczek Eclipse (Subclipse lub Subversive), ale polecenia wiersza poleceń są również interesujące.
źródło
In Eclipse Ganymede (Subclipse)
Wybierz projekt / plik, który zawiera złą zmianę iz wyskakującego menu wybierz:
Zespół -> Pokaż historię
Rewizje związane z tym projektem / plikiem będą widoczne w zakładce Historia.
Znajdź wersję, w której zostały wprowadzone „złe zmiany” iz menu podręcznego wybierz:
Cofnij zmiany z wersji X
Spowoduje to scalenie zmian w plikach zmodyfikowanych w złej wersji z wersją przed złą wersją.
Stąd są dwa scenariusze:
Jeśli nie dokonałeś żadnych zmian w tym pliku (zła wersja jest ostatnią wersją tego pliku), po prostu usunie zmiany dokonane w złej wersji. Te zmiany są scalane z twoją kopią roboczą, więc musisz je zatwierdzić.
Jeśli wprowadziłeś jakieś zmiany dla tego pliku (zła wersja nie jest ostatnią wersją tego pliku), będziesz musiał ręcznie rozwiązać konflikt. Powiedzmy, że masz plik readme.txt z, a zły numer wersji to 33. Ponadto dokonałeś kolejnego zatwierdzenia tego pliku w wersji 34. Po wybraniu opcji Przywróć zmiany z wersji 33 będziesz mieć następujące w kopii roboczej:
readme.txt.merge-left.r33 - zła wersja
readme.txt.merge-right.r32 - przed złą wersją
readme.txt.working - wersja kopii roboczej (taka sama jak w r34, jeśli nie masz żadnych niezatwierdzonych zmian)
Oryginalny plik readme.txt zostanie oznaczony jako skonfliktowany i będzie zawierał scaloną wersję (w której zostaną usunięte zmiany ze złej wersji) z pewnymi znacznikami (<<<<<<< .working itp.). Jeśli chcesz tylko usunąć zmiany ze złej wersji i zachować zmiany wprowadzone później, to wszystko, co musisz zrobić, to usunąć znaczniki. W przeciwnym razie możesz skopiować zawartość jednego z 3 plików wymienionych powyżej do oryginalnego pliku. Cokolwiek wybierzesz, kiedy skończysz, oznacz konflikt jako rozwiązany
Zespół - oznaczenie rozwiązane
Pliki tymczasowe zostaną usunięte, a plik zostanie oznaczony jako zmieniony. Podobnie jak w 1, musisz zatwierdzić zmiany.
Należy zauważyć, że nie usuwa to wersji z historii wersji w repozytorium svn. Po prostu wprowadziłeś nową wersję, w której zmiany ze złej wersji zostały usunięte.
źródło
Jeśli chcesz wykonywać tylko 1 plik naraz, możesz przejść do widoku historii dla pliku, zakładając, że masz zainstalowaną wtyczkę Eclipse SVN. „Zespół-> Pokaż historię”
W widoku Historia znajdź ostatnią dobrą wersję tego pliku, kliknij prawym przyciskiem myszy i wybierz „Pobierz zawartość”. Spowoduje to zastąpienie aktualnej wersji zawartością tej wersji. Następnie możesz zatwierdzić zmiany, gdy już wszystko naprawisz.
źródło
W Eclipse używając Subversive:
Kliknij prawym przyciskiem myszy swój projekt> Zespół> Scal
W oknie scalania wybierz wersje, które chcesz przywrócić, jak zwykle, ale zaznacz także pole wyboru „Odwrócone scalanie”.
Scal jak zwykle.
źródło
Napisałem kilka postów na blogu na ten temat. Jeden zorientowany na Subclipse: http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html i taki, który jest skoncentrowany na wierszu poleceń: http: //blogs.collab. net / subversion / 2007/07 / druga szansa /
źródło
W svnbooku znajduje się sekcja o tym, jak Subversion umożliwia cofnięcie zmian z określonej wersji bez wpływu na zmiany, które wystąpiły w kolejnych wersjach:
http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo
Nie używam zbyt wiele Eclipse, ale w TortoiseSVN można to zrobić z okna dialogowego dziennika; po prostu kliknij prawym przyciskiem myszy wersję, którą chcesz przywrócić i wybierz „Cofnij zmiany z tej wersji”.
W przypadku, gdy pliki, dla których chcesz cofnąć „złe zmiany”, miały „dobre zmiany” w kolejnych wersjach, proces jest taki sam. Zmiany z „złej” wersji zostaną cofnięte, pozostawiając nietknięte zmiany z „dobrych” wersji, jednak mogą wystąpić konflikty.
źródło
Mam ten sam problem, ale opcja zaćmienia CleanUp nie działa dla mnie.
1) zainstaluj TortoiseSVN
2) Idź do eksploratora Windows i kliknij prawym przyciskiem myszy na katalog swojego projektu
3 Wybierz opcję CleanUp (zaznaczając opcję break lock)
To działa.
Mam nadzieję, że to komuś pomoże.
źródło