Возвратиться к старым ревизиям в хранилище (откат)

При помощи диалога журнала ревизий

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

  1. Выберите файл или папку, в которых вы собираетесь убрать изменения. Если вы желаете убрать все изменения, это должна быть папка верхнего уровня.

  2. Выберите TortoiseSVNЖурнал для отображения списка ревизий. Возможно, вам понадобиться использовать кнопки Показать все или Следующие 100 для отображения нужных вам ревизий.

  3. Выберите ревизию, которую вы хотите вернуть. Если вы хотите отменить диапазон ревизий, то выберите первую и, удерживая клавишу Shift, выберите последнюю. Если вы хотите выбрать отдельные ревизии и диапазоны, то используйте клавишу Ctrl при выборе ревизий. Выполните правый щелчок на выбранных ревизиях, после чего выберите Контекстное менюОтменить изменения из этой ревизии.

  4. Или, если вы желаете сделать более раннюю ревизию новой ведущей, выполните правый щелчок на выбранной ревизии, затем выберите Контекстное менюВернуть к этой ревизии. Это действие отменит все изменения после выбранной ревизии.

Вы выполнили отмену изменений внутри вашей рабочей копии. Проверьте результат, затем зафиксируйте изменения.

Используя диалог слияния

Если вы хотите ввести номера ревизий списком, то используйте диалог Слияние. В предыдущем методе слияние используется негласно, в этом методе оно применяется явно.

  1. В вашей рабочей копии выберите TortoiseSVNСлить...[7].

  2. В диалоге Тип слияния выберите Слияние диапазона ревизий.

  3. В поле От: введите полный URL-адрес хранилища вашей папки рабочей копии. Это будет URL по умолчанию.

  4. В поле Диапазон ревизий для слияния введите список ревизий для отката (или используйте диалог журнала для их выбора, как описано выше).

  5. Убедитесь, что установлен флажок Обратное слияние.

  6. В диалоге Параметры слияния согласитесь со значениями по умолчанию.

  7. Нажмите кнопку Слить для выполнения слияния.

Вы отменили изменения в вашей рабочей копии. Проверьте, что результаты такие, как вы ожидали, а затем зафиксируйте изменения.

Используя svndumpfilter

Поскольку данные в TortoiseSVN никогда не пропадают, ваши «отменённые» ревизии всё ещё существуют как промежуточные ревизии в хранилище. Только ведущая ревизия была изменена к предыдущему состоянию. Если вы желаете полностью убрать ревизии из хранилища и удалить все когда-либо существовавшие следы, вы должны будете применить более экстремальные меры. Это делать не рекомендуется, если только у вас нет очень веских оснований. Одной из возможных причин может быть фиксация конфиденциального документа в общедоступном хранилище.

Единственный способ удалить данные из хранилища - это использование инструмента командной строки Subversion svnadmin. Описание того, как с ним работать, содержит раздел Обслуживание хранилища (Repository Maintenance) книги о Subversion.



[7] теперь слияние произодится при помощи мастера, в котором для этой задачи есть специальный пункт Произвести слияние диапазона ревизий. На следующей странице мастера укажите нужный диапазон ревизий (можно использовать журнал) и отметьте флажок Обратное слияние. Подробнее об этом рассказывает «Слияние с диапазоном ревизий» - прим. переводчика