Каков наилучший способ отката набора изменений с помощью Subversion?

Я использую различные системы управления версиями некоторое время, но когда дело доходит до исправления изменений, я еще не эксперт. Может кто-то помочь с учетом этого сценария:

Сценарий

  • Учитывая, что ошибка была исправлена ​​в редакции # 5
  • И 3 файла были изменены в редакции # 5
  • И изменения в 2 файлах были связаны с ошибкой
  • Когда клиент обнаруживает ошибку в выпуске версии № 9 (HEAD)
  • Затем 2 файла, вызывающие ошибку из ревизии # 5, должны быть возвращены в версию # 4
  • И изменения от версии № 6 до HEAD должны применяться к двум файлам

Я ожидаю, что должен быть способ сравнить версии №4 и №5 двух файлов и создать патч, который отменяет изменения в редакции № 5, которые затем могут быть применены к ревизии HEAD для отката дефекта.

Ответы

Ответ 1

Ниже приведена ссылка на svn, в которой рассказывается о возвратах и ​​истории.

Чтобы сделать diff, вы сделали бы что-то вроде svn diff -r 4: 5 somefile.txt

Ответ 2

Обычно обратное слияние будет достаточно, чтобы отменить зафиксированные изменения...

Ответ 3

Чтобы узнать подробности, см. svn manual - Отмена изменений

Как описано в знаке, вы хотите сделать:
svn merge -r 5: 4 file1 file2
Это означает слияние при изменении от 4 до 5 назад, т.е. отменить изменения

Вы также можете ввести:
svn merge -c -5 file1 file2
Это означает применение изменений, которые произошли при передаче ревизии 5 назад.

Затем вы должны вручную просмотреть изменения.

Наконец, вы должны зафиксировать изменения (выше слияния изменилась только ваша рабочая копия).

Ответ 4

Я предполагаю, что вы используете TortoiseSVN в своем ответе.

Я не думаю, что ваш сценарий приведет к откату файлов, потому что вы все равно хотите сохранить историю каждого файла. В большинстве случаев то, что вы собираетесь делать, это просто найти и исправить ошибку и внести новое изменение в этот файл.

Если вы хотите сравнить две версии, это довольно легко в tortoiseSvn, щелкните правой кнопкой мыши на файле, затем зайдите в TortoiseSvn- > Show Log. Затем выберите обе версии, которую вы хотите сравнить, щелкните правой кнопкой мыши и затем сравните версии.

Если вы хотите найти, кто несет ответственность за ошибку, вы можете использовать пункт меню Blame в TortoiseSVN... Это позволит вам узнать, кто изменил каждую строку и в какой версии.

О, и если вы хотите вернуть файл обратно в предыдущую версию, вы можете сделать это в TortoiseSvn- > Show Log, затем вы выберете версию, к которой хотите вернуться, щелкните правой кнопкой мыши и выберите "Вернуться к этой версии".

Ответ 5

Я бы пошел с ответом Этьена. Но под "Вернуть к этой ревизии" есть также опция "Отменить изменения из этой ревизии". Этот вариант идеально подходит Роберту Уокеру, который должен отменить изменения из версии № 5. Не забудьте зафиксировать изменения.

Ответ 6

проверить текущую версию, затем svn merge -r 5: 4 file1 file2 (что из памяти, и может быть не совсем правильно)

Ответ 7

Я думаю, вам нужно сначала свернуть слияние между 5: 4, а затем вернуть правильный файл

вы, вероятно, попадаете в странное состояние в файлы 2buggy Это можно с надеждой решить вручную.

Ответ 8

Если вы используете http://tortoisesvn.tigris.org/, то это довольно простой процесс. Просто щелкните правой кнопкой мыши по файлу и выберите "журнал", чтобы получить список изменений между теперь и выбранной реверсией. Затем нужно переустановить два файла в редакции № 4 и внести изменения:)