Вопрос отката версии SVN - PullRequest
6 голосов
/ 19 марта 2010

Я использую SVN (TortoiseSVN) и часто сталкиваюсь со следующей ситуацией:

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

Я нашел несколько решений этой проблемы (например, stackoverflow.com/questions/402159/roll-back-or-revert-entire-svn-repository-to-an-older-revision или rustyrazorblade.com/2007/04 /how-to-roll-back-commits-to-an-earlier-version-of-a-repository-in-svn/).

Однако мне интересно, есть ли простой способ отката к определенной ревизии. Я думал, что управление версиями просто хорошо для таких вещей (или я что-то неправильно понимаю?).

Есть ли простая команда / кнопка / и т.д. что обновляет мой локальный репозиторий до старой ревизии и объявляет его самой новой?

Поскольку я предполагаю, что для этого нет «встроенной» функции, я хотел бы знать, по какой причине разработчики решили отказаться от интеграции этой функции. Кто-нибудь знает это?

Ответы [ 4 ]

3 голосов
/ 25 марта 2010

В TortoiseSVN есть более простой (или, по крайней мере, более интуитивно понятный) способ сделать это. Я предполагаю, что то, что он фактически делает за кулисами, является "обратным слиянием", о котором упоминали другие.

  1. Щелкните правой кнопкой мыши файл / папку, которую вы хотите откатить.
  2. Нажмите «Показать журнал» в меню TortoiseSVN.
  3. Выберите ревизии, которые вы хотите отменить.
  4. Щелкните правой кнопкой мыши по этим ревизиям.
  5. Выберите « Вернуть изменения из этой ревизии » - не путайте с «Вернуть к этой ревизии»!
  6. Нажмите «Да»
  7. Помните, что это только меняет вашу рабочую копию. Подтвердите, что это сделало то, что вы ожидали, и затем подтвердите, поместив что-то в ваше сообщение журнала об «откате» или «обратном объединении»
3 голосов
/ 19 марта 2010

По какой-то причине люди из SVN решили назвать это «Обратным слиянием». В диалоговом окне «Объединение TortoiseSVN» установите флажок «Обратное слияние» и убедитесь, что в поле «Ревизии» указано что-то вроде HEAD-324 (где 324 - версия, к которой вы возвращаетесь).

2 голосов
/ 19 марта 2010

Я не уверен, правильно ли я вас понимаю, поскольку, например, указанная вами ссылка ( Откат или возврат всего хранилища SVN к более старой ревизии ) уже имеет решение: обратное объединение (как упомянул Powerlord).

Из документации по слиянию ТСВН:

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

Я думаю, что важно иметь в виду, что вы не «откатываете изменения», а «объединяете их», а затем повторно фиксируете. Вы, так сказать, «продолжаете идти вперед» (потому что в SVN нет «реверса»; в конце концов, это контроль версий, а не «забывать вещи»:)).

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

0 голосов
/ 19 марта 2010

Я бы переместил текущий ствол в ветку для безопасного хранения, а затем сделал бы копию с номером ревизии, который вы хотите вернуть в ствол.

...