Возврат в подрывной деятельности - PullRequest
1 голос
/ 09 августа 2011

Скажем, я хочу отменить некоторые изменения между версией n и (n-1) в Subversion.

Я бы просто вернул файлы из версии (n-1) - возьму их из репозитория и вернусь как последняя версия в багажнике.

Здесь, кажется, они хотятсделайте ветку из версии (n-1) и объедините ее со стволом.

Как это лучше или "более правильно"?

В этом случае это несколько файлов в одномкаталог.Эти файлы не имеют других последних изменений.

Ответы [ 3 ]

2 голосов
/ 09 августа 2011

Чтобы убрать плохой коммит для вас и для других ...

«возврат» не тот, который вы ищете, потому что он влияет только на локальные изменения. чтобы отменить уже отправленную ревизию, вы должны использовать «svn merge», используя синтаксис отрицания, поставив «-» (minu) перед ревизией, которую вы хотите удалить. Пример:

current rev: 1337

bad rev: 1330

$sh> svn merge -c -1330 svn://your.svn.url:/your.svn.path .
$sh> svn ci -m "removed revision 1330"

так что вы делаете обратное объединение своего репозитория с версией "-1330" и затем делаете повторную регистрацию, удаляя изменения с 1330 для вас и других разработчиков.

Будет

0 голосов
/ 02 сентября 2011

Используйте svn merge, это очень полезно для вашего сценария.

svn merge -c n http://xxxx/xxx/xx
0 голосов
/ 09 августа 2011

Чтобы удалить изменения между конкретными ревизиями, скажем 1000 и 1010 в прошлом:

От проверенного до типа рабочей копии данных:

svn merge -r 1010:1000 .

При этом удаляются все измененияв вашей рабочей копии между версиями 1000 и 1010 (не включая изменения, добавленные к самой 1000).С этим можно поиграть, если у вас нет локальных модификаций и вы не проверяете результаты, пока не убедитесь, что они сделали то, что хотели.

В вашем конкретном случае с тех порвы хотите удалить только одну ревизию, которую можете использовать '-c' вместо более общей -r:

svn merge -c 2000 .

Это эквивалентно -r 1999: 2000, в котором удалены изменения между 1999 и 2000.

...