Znalazłem różne przykłady, jak przywrócić zatwierdzenie SVN
svn merge -r [current_version]:[previous_version] [repository_url]
lub
svn merge -c -[R] .
Ale żadne z nich nie działa. Próbowałem tych poleceń i sprawdziłem pliki, które zostały zmienione ręcznie.
Jak przywrócić zatwierdzenie z numerem wersji 1944? Jak sprawdzić, czy przywrócenie zostało wykonane (bez przeglądania rzeczywistego pliku, zmiany zostały cofnięte)?
Odpowiedzi:
Oba przykłady muszą działać, ale
svn merge -r UPREV:LOWREV .
cofnij zakressvn merge -c -REV .
cofnij pojedynczą wersjęw tej składni - jeśli bieżącym katalogiem jest WC i (jak należy to zrobić po każdym scaleniu), zatwierdzisz wyniki
Czy chcesz zobaczyć dzienniki?
źródło
svn: Merge source required
. Nie ma kości.svn merge -c -42587,-42589 .
Jeśli używasz klienta TortoiseSVN , można to łatwo zrobić za pomocą okna dialogowego Pokaż dziennik .
źródło
svn merge -r 1944:1943 .
powinien przywrócić zmiany r1944 w kopii roboczej. Następnie możesz przejrzeć zmiany w kopii roboczej (z diff), ale musisz zatwierdzić, aby zastosować przywrócenie do repozytorium.źródło
svn merge -r 1944:1943 .
zamiast tego, ale nic się nie zmieniło.svn status
niesvn diff
daje.svn: Try 'svn help' for more info svn: Merge source required
svn merge -r 1945:1943 .
wydaje się, że zadziałało. Wydaje mi się, że rozumiem: musisz scalić wersję „przed” „złym” zatwierdzeniem w działającym repozytorium. Jest to dobre, gdy chcesz wykonać proste „przywrócenie” poprzedniego zatwierdzenia. A jeśli chcesz cofnąć zmiany wprowadzone w wersji 1900?Najpierw przywróć kopię roboczą do 1943 r.
Po drugie, sprawdź, co zostanie zatwierdzone.
Po trzecie, zatwierdzić wersję 1945.
Po czwarte, spójrz na nowy dziennik.
źródło
Nie można „odrzucić” wersji, ale można przywrócić kopię roboczą do wersji 1943 i zatwierdzić ją jako wersję 1945. Wersje 1943 i 1945 będą identyczne, skutecznie cofając zmiany.
źródło
svn dump
a następniesvn load
. Ale oczywiście nie należy tego używać w normalnych okolicznościach.$ git revert
. Trudno mi było nauczyć się SVN po tak długim używaniu Gita.Jak powiedziano, poniższe czynności wykonają próbę próbną. HEAD jest bieżącą wersją, poprzednia jest PREV, a następnie ścieżka do pliku lub zatwierdzonego elementu:
Jeśli suchy przebieg wygląda dobrze, uruchom polecenie bez --dry-run
Sprawdź zmianę w wersji i ponów zatwierdzenie. Aby przeglądać numery wersji, spróbuj:
źródło
źródło
Alex, spróbuj tego: svn merge [WorkingFolderPath] -r 1944: 1943
źródło
Chociaż podane już sugestie mogą działać dla niektórych osób, nie działa to w moim przypadku. Podczas scalania użytkownicy,
rev 1443
którzy dokonują aktualizacjirev 1445
, nadal synchronizują wszystkie zmienione pliki,1444
nawet jeśli są równe1443
scaleniu. Potrzebowałem użytkowników końcowych, aby w ogóle nie widzieli aktualizacji.Jeśli chcesz całkowicie ukryć zatwierdzenie, możesz utworzyć nowy oddział przy poprawnej wersji, a następnie zamienić gałęzie. Jedyne, co musisz zrobić, to usunąć i ponownie dodać wszystkie blokady.
To zadziałało dla mnie, być może będzie pomocne dla kogoś innego =)
źródło
To uratowało mi życie.
Miałem ten sam problem, po cofnięciu również nie widziałem starego kodu. Po uruchomieniu powyższego polecenia otrzymałem czysty stary kod wersji.
źródło
Próbowałem wyżej, (
svn merge
) i masz rację, to robi jack. jednakwydaje się działać, ale nie jest stały (mój svn po prostu pokazuje starą wersję). Więc musiałem
W moim szczególnym przypadku moim celem jest
interfaces/AngelInterface.php
. Dokonałem zmian w pliku, zatwierdziłem je, zaktualizowałem komputer kompilacji, uruchomiłem kompilator phpdoc i stwierdziłem, że moje zmiany były stratą czasu.svn log interfaces/AngelInterface.php
pokazuje moją zmianę jako r22060, a poprzednie zatwierdzenie w tym pliku to r22059. Więc mogęsvn update -r 22059 interfaces/AngelInterface.php
i skończy się z kodem, jak to było w -r22059. Następnie :-Alternatywnie mógłbym zrobić to samo w katalogu, podając
. -R
w miejsceinterfaces/AngelInterface.php
wszystkich powyższych.źródło
Jeśli chcesz całkowicie usunąć zatwierdzenia z historii, możesz również wykonać zrzut repo przy określonej wersji, a następnie zaimportować ten zrzut. Konkretnie:
Komenda svnrdump wykonuje tę samą funkcję co zrzut svnadmin, ale działa na zdalnym repozytorium.
Następnie wystarczy zaimportować plik zrzutu do wybranego repozytorium. Zostało to przetestowane, aby działało dobrze na Beanstalk.
źródło