Откат плохих изменений с помощью svn в Eclipse

Допустим, я внес несколько плохих изменений в репозиторий Subversion. Затем я совершаю хорошие изменения, которые хочу сохранить.

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

Я в основном ищу способ сделать это через плагины Eclipse (Subclipse или Subversive), но команды командной строки также интересны.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
82
0
100 675
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

У вас есть два варианта сделать это.

Quick and Dirty выбирает ваши файлы (с помощью ctrl) в представлении Project Explorer, щелкает их правой кнопкой мыши, выбирает Replace with..., а затем вы выбираете лучший для вас вариант из Latest from Repository или какой-либо версии Branch. После получения этих файлов вы изменяете их (с пробелом или исправляете что-то, ваш вызов и фиксируете их, чтобы создать новую ревизию.

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

Обе команды имеют эквиваленты в командной строке: svn revert и svn merge.

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

Macilias 28.08.2015 18:11

В svnbook есть раздел о том, как Subversion позволяет вам отменить изменения из конкретной ревизии, не затрагивая изменения, которые произошли в последующих ревизиях:

http://svnbook.red-bean.com/en/1.4/svn.branchmerge.commonuses.html#svn.branchmerge.commonuses.undo

Я не часто использую Eclipse, но в TortoiseSVN вы можете сделать это из диалога журнала; просто щелкните правой кнопкой мыши ревизию, которую вы хотите отменить, и выберите «Отменить изменения из этой ревизии».

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

Я написал пару сообщений в блоге на эту тему. Один, ориентированный на Subclipse: http://markphip.blogspot.com/2007/01/how-to-undo-commit-in-subversion.html, и другой, ориентированный на командную строку: http://blogs.collab.net/subversion/2007/07/second-chances/

В затмении Ганимед (Subclipse)

Выберите проект / файл, содержащий плохие изменения, и во всплывающем меню выберите:

Команда -> Показать историю

Изменения, относящиеся к этому проекту / файлу, будут показаны на вкладке «История».

Найдите ревизию, в которой были зафиксированы «плохие изменения», и во всплывающем меню выберите:

Отменить изменения из версии X

Это объединит изменения в файлах, измененных в плохой ревизии, с ревизией, предшествующей плохой ревизии.

Отсюда есть два сценария:

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

  2. Если вы зафиксировали некоторые изменения для этого файла (плохая ревизия не является последней ревизией для этого файла), вам придется вручную разрешить конфликт. Предположим, у вас есть файл readme.txt с неверным номером версии 33. Кроме того, вы сделали еще одну фиксацию для этого файла в версии 34. После выбора Отменить изменения из редакции 33 в вашей рабочей копии будет следующее:

readme.txt.merge-left.r33 - плохая ревизия

readme.txt.merge-right.r32 - до плохой ревизии

readme.txt.working - версия рабочей копии (такая же, как в r34, если у вас нет незафиксированных изменений)

Исходный файл readme.txt будет помечен как конфликтующий и будет содержать объединенную версию (в которой удаляются изменения из плохой версии) с некоторыми маркерами (

Команда - Отметить как решенное

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

Обратите внимание, что это не удаляет ревизию из истории ревизий в репозитории svn. Вы просто сделали новую ревизию, в которой удаляются изменения из плохой ревизии.

Если вы хотите создавать по одному файлу за раз, вы можете перейти в представление истории для файла, если у вас установлен плагин Eclipse SVN. "Команда-> Показать историю"

В представлении «История» найдите последнюю подходящую версию этого файла, щелкните правой кнопкой мыши и выберите «Получить содержимое». Это заменит вашу текущую версию содержимым этой версии. Затем вы можете зафиксировать изменения, когда все исправите.

В Eclipse с использованием Subversive:

Щелкните правой кнопкой мыши свой проект> Команда> Объединить

В окне слияния выберите ревизии, которые вы хотите вернуть, как обычно, но также установите флажок «Обратное слияние».

Сливайте как обычно.

У меня такая же проблема, но опция CleanUp eclipse у меня не работает.

1) установите TortoiseSVN
2) Перейдите в проводник Windows и щелкните правой кнопкой мыши каталог проекта
. 3 Выберите вариант очистки (отметив опцию прерывания блокировки)

Это работает.

Надеюсь, это кому-то поможет.

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