Вопрос

Предположим, у меня есть набор коммитов в папке репозитория...

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)

Я хочу получить рабочую копию, которая включает все изменения, начиная с версии 117, но НЕ включает изменения для версий 118 и 120.

Редактировать:Чтобы, возможно, прояснить проблему, я хочу отменить изменения, которые были внесены в 118 и 120, сохранив при этом все остальные изменения.Папка содержит тысячи файлов в сотнях вложенных папок.

Каков наилучший способ достичь этого?

Ответ, спасибо Бруно и Берту, это команда (в данном случае за удаление 120 после выполнения полного слияния)

svn merge -c -120 .

Обратите внимание, что номер редакции должен быть указан с начальным минусом."-120", а не "120"

Это было полезно?

Решение

Чтобы отменить изменения 118 и 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)

Также смотрите описание в Отмена изменений.

Обратите внимание на минус в -c -120 аргумент.Тот Самый -c (или --change) коммутатор поддерживается начиная с Subversion 1.4, более старые версии могут использовать -r 120:119.

Другие советы

Есть более простой способ, если вы используете TortoiseSVN, клиент Windows для Subversion.Вы просто щелкаете, чтобы просмотреть журнал в своей обновленной рабочей копии, выбираете правки, которые хотите отменить, щелкаете правой кнопкой мыши и выбираете "Отменить изменения из этих редакций".

Это безопасная операция, потому что изменения применяются только в вашем рабочем пространстве.Вам все равно придется взять на себя обязательство изменить свой репозиторий.

Это одна из лучших особенностей TortoiseSVN.Я всегда был специалистом по командной строке, но Черепаха заставила меня передумать.

Я полагаю, вы могли бы создать ветку из редакции 117, а затем объединить все, кроме 118 и 120.

svn copy -r 117 source destination

Затем проверьте эту ветку и оттуда выполните svnmerge.py merge -r119,120-123

Редактировать: Это не отменяет изменения в ветке / магистрали.Использование svn merge вместо этого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top