Wycofywanie złych zmian za pomocą svn w Eclipse

81

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.

Juha Syrjälä
źródło

Odpowiedzi:

30

Masz dwie możliwości, aby to zrobić.

Szybki i brudny wybiera pliki (używając ctrl) w widoku Eksploratora projektów, kliknij je prawym przyciskiem myszy, wybierz, Replace with...a następnie wybierz najlepszą dla siebie opcję z Latest from Repositorylub jakąś Branchwersję. Po pobraniu tych plików modyfikujesz je (spacją lub naprawiasz coś, wywołujesz i zatwierdzasz, aby utworzyć nowszą wersję.

Bardziej Mergeprzejrzystym sposobem jest wybranie w menu zespołu i poruszanie się po kreatorze, który pomoże ci odzyskać starą wersję w aktualnej wersji.

Oba polecenia mają swoje odpowiedniki w wierszu poleceń: svn reverti svn merge.

Fernando Barrocal
źródło
1
Najnowsze z repozytorium to błędnie wpisane, więc nie wiem, gdzie powinno być pomocne. Poza tym eclipse nie chce ci pomóc w rozwiązaniu tego problemu, ponieważ tylko opcja wzmianki jest dostępna, jeśli wybierzesz wiele plików (prawdopodobnie dlatego, że ich najnowsza wersja jest inna).
Macilias
79

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:

  1. 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ć.

  2. 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.

kirlich
źródło
14

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.

Matt
źródło
6

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.

Tuukka Mustonen
źródło
1

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.

Nick Higgs
źródło
0

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.

Gora
źródło