Відкат поганих змін за допомогою svn в Eclipse


81

Скажімо, я вніс деякі погані зміни до сховища Subversion. Потім я роблю хороші зміни, які хочу зберегти.

Що було б найпростішим способом скасувати ці погані зміни в Eclipse і зберегти хороші зміни? Припускаючи, що файли, що стосуються поганих змін, не збігаються з файлами, що стосуються хороших змін. Як все змінюється, якщо в ті самі файли були внесені хороші зміни, що і погані?

Я здебільшого шукаю спосіб зробити це за допомогою плагінів Eclipse (Subclipse або Subversive), але команди командного рядка також цікаві.

Відповіді:


30

У вас є два варіанти для цього.

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

Більш чистий спосіб - вибрати Mergeв командному меню та перейти за допомогою майстра, який допоможе вам відновити стару версію у фактичній редакції.

Обидві команди мають еквіваленти командного рядка: svn revertі svn merge.


1
Останнє із сховища - це неправильно зареєстроване, тому я не бачу, де це має бути корисним. Окрім цього, eclipse не хоче допомогти вам у вирішенні цієї проблеми, оскільки доступна лише опція згадування, якщо ви вибираєте кілька файлів (можливо, тому, що їх пізня версія відрізняється).
Macilias

79

В Затьмаренні Ганімеда (Підтемніє)

Виберіть проект / файл, що містить погані зміни, і зі спливаючого меню виберіть:

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

Виправлення, пов’язані з цим проектом / файлом, відображатимуться на вкладці Історія.

Знайдіть редакцію, де були скоєні "погані зміни", і зі спливаючого меню виберіть:

Повернути зміни з версії X

Це об’єднає зміни у файлах, змінених у межах поганої версії, з редакцією до поганої версії.

Звідси є два сценарії:

  1. Якщо ви не внесли жодних змін для цього файлу (погана редакція є останньою версією для цього файлу), він просто видалить зміни, внесені в неправильній редакції. Ці зміни об’єднуються з робочою копією, тому вам доведеться їх фіксувати.

  2. Якщо ви внесли деякі зміни для цього файлу (погана версія не є останньою версією для цього файлу), вам доведеться вручну вирішити конфлікт. Скажімо, у вас є файл 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. Ви просто зробили нову редакцію, де видаляються зміни, спричинені поганою версією.


14

Якщо ви хочете зробити по 1 файлу за раз, ви можете перейти до подання історії для файлу, припускаючи, що у вас встановлений плагін Eclipse SVN. "Команда-> Показати історію"

У вікні «Історія» знайдіть останню хорошу версію цього файлу, клацніть правою кнопкою миші та виберіть «Отримати вміст». Це замінить вашу поточну версію вмістом цієї версії. Тоді ви можете внести зміни, коли ви все це виправили.


6

В Eclipse за допомогою Subversive:

Клацніть правою кнопкою миші свій проект> Команда> Об'єднати

У вікні злиття виберіть версії, які потрібно повернути, як зазвичай, але також увімкніть прапорець "Змінене злиття".

Злийте як зазвичай.



1

У svnbook є розділ про те, як Subversion дозволяє повернути зміни з певної версії, не впливаючи на зміни, що відбулися в наступних редакціях:

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

Я мало використовую Eclipse, але в TortoiseSVN ви можете зробити це з діалогового вікна журналу; просто клацніть правою кнопкою миші на редакції, яку потрібно скасувати, і виберіть "Скасувати зміни з цієї редакції".

У тому випадку, якщо файли, для яких ви хочете скасувати "погані зміни", мали "хороші зміни" в наступних редакціях, тоді процес той самий. Зміни з "поганої" версії буде скасовано, а зміни з "хорошої" версії будуть недоторканими, однак ви можете отримати конфлікти.


0

У мене така сама проблема, але опція CleanUp eclipse для мене не працює.

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

Це працює.

Сподіваюся, це комусь допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.