Вопрос

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

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

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

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

Решение

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

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

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

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

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

В Eclipse Ganymede (Subclipse)

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

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

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

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

Вернуть изменения из редакции X

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

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

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

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

  • readme.txt.merge-left.r33 - неверная редакция

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

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

    Исходный файл readme.txt будет помечен как конфликтующий и будет содержать объединенную версию (где удаляются изменения из неверной ревизии) с некоторыми маркерами (< < < < < < < .working и т. д.). Если вы просто хотите удалить изменения из неверной ревизии и сохранить изменения, сделанные после этого, тогда все, что вам нужно сделать, это удалить маркеры. В противном случае вы можете скопировать содержимое одного из 3 файлов, указанных выше, в исходный файл. Что бы вы ни выбрали, когда вы закончите, пометьте конфликт как разрешенный

    Команда - Марк решен

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

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

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

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

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

    Щелкните правой кнопкой мыши свой проект > Команда & Gt; Слияние

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

    Объединяйте как обычно.

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

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

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

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

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

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

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

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

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

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