Cofanie określonych zmian w Subversion

Załóżmy, że mam zestaw commitów w folderze repozytorium...

123 (250 new files, 137 changed files, 14 deleted files)
122 (150 changed files)
121 (renamed folder)
120 (90 changed files)
119 (115 changed files, 14 deleted files, 12 added files)
118 (113 changed files)
117 (10 changed files)

Chcę otrzymać kopię roboczą, która zawiera wszystkie zmiany od wersji 117, ale nie zawiera zmian dla wersji 118 i 120.

EDIT: aby być może wyjaśnić problem, chcę cofnąć zmiany wprowadzone w 118 i 120, zachowując wszystkie inne zmiany. Folder zawiera tysiące plików w setkach podfolderów.

Jaki jest najlepszy sposób na osiągnięcie to?

Odpowiedź, Dzięki Bruno i Bert, jest komendą (w tym przypadku do usunięcia 120 po wykonaniu pełnego połączenia)

svn merge -c -120 .

Zauważ, że Numer wersji musi być podany z minusem wiodącym. "-120" Nie " 120 "

Author: neves, 2008-09-24

3 answers

Aby cofnąć poprawki 118 i 120:

svn up -r HEAD       # get latest revision
svn merge -c -120 .  # undo revision 120
svn merge -c -118 .  # undo revision 118
svn commit           # after solving problems (if any)

Zobacz także opis w cofanie zmian .

Zwróć uwagę na minus w argumencie -c -120. Przełącznik -c (lub --change) jest obsługiwany od wersji Subversion 1.4, starsze wersje mogą używać -r 120:119.

 31
Author: Bruno De Fraine,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-30 07:24:40

Jest prostszy sposób, jeśli używasz TortoiseSVN, klienta Windows dla Subversion. Po prostu kliknij, aby wyświetlić Zaloguj się w zaktualizowanej kopii roboczej, wybierz wersje, które chcesz cofnąć, kliknij prawym przyciskiem myszy i wybierz "Przywróć zmiany z tych wersji".

Jest to bezpieczne działanie, ponieważ zmiany są stosowane tylko w obszarze roboczym. Aby zmodyfikować swoje repozytorium, nadal musisz się zobowiązać.

Jest to jedna z najlepszych cech TortoiseSVN. Zawsze byłem facetem z linii poleceń., ale Żółw zmienił moje zdanie.

 8
Author: neves,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-08 19:10:36

Przypuszczam, że możesz utworzyć gałąź z wersji 117, a następnie połączyć wszystko z wyjątkiem 118 i 120.

svn copy -r 117 source destination

Następnie sprawdź tę gałąź i stamtąd zrób svnmerge.py merge -r119,120-123

EDIT: to nie cofnie zmian w gałęzi / bagażniku. Zamiast tego użyj svn merge.

 -2
Author: Christian Davén,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-24 10:38:33