Subversion: как я могу зафиксировать обновление до ревизии? - PullRequest
13 голосов
/ 25 мая 2010

У меня есть ситуация, когда:

  • Разработчик работает над проектом SVN.
  • Человек проверяет проект SVN, уходит, ребенок / кошка / жена сидит / убивает / лунатизм/ что угодно на компьютере и вставляет gobbledygook asdfg-код.Человек фиксирует проект.
  • Разработчик видит плохие файлы и обновляет до версии обратно до последней рабочей версии

Все хорошо, пока разработчик не захочет зафиксировать проект.Если разработчик внес изменения в файл, о котором идет речь, он будет исправлен.НО, если нет - разработчик только обновил до ревизии и не внес никаких дальнейших изменений - этот файл не будет зафиксирован, и любые обновления в проекте передадут вам файл asdfg-кода gobbledygook.

Вопрос: Если я только "Обновить до ревизии" файла, как я могу зафиксировать его снова, не редактируя файл вручную?

Ответы [ 5 ]

7 голосов
/ 25 мая 2010

Я думаю, что вы выбрали неправильный маршрут вокруг проблемы.

Вместо того, чтобы изменить ревизию, на которую вы смотрите, вы должны иметь:

  1. Обновлено до последней редакции, включая мусор
  2. нашел коммит мусора в журнале ревизий и выбрал отменить это изменение
  3. совершил очистку с любыми другими изменениями, внесенными в вашу рабочую копию, или без них

Итак, что бы вы сделали сейчас, это обновитесь до последней версии (применив изменение мусора) и отмените их изменение, что вернет вас в строй. Как будто они внесли изменения в то время, когда вы работали, и вообще не имели изменений.

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

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

3 голосов
/ 04 сентября 2014

Если вы работаете в Windows и используете TortoiseSVN:

  1. Щелкните правой кнопкой мыши по каталогу, выберите «TortoiseSVN> Объединить ...»
  2. Выберите «Объединить диапазон ревизий»
  3. В поле «URL для слияния» выберите текущую ветку (ту, которая извлечена в текущем каталоге)
  4. В типе «Диапазон редакций для слияния» или выберите («Показать журнал») самую последнюю неправильную версию
  5. Пометить флажок «Обратное слияние»

Тогда после слияния просто коммит! :)

2 голосов
/ 25 мая 2010

Вы можете просто отменить изменения, используя следующие

svn merge -c -RevisionWhichWasWrong ^/trunk

RevisionWhichWasWrong - это последняя версия, которую вы зарегистрировали. После этого просто выполните

svn commit 

и все.

Кстати: регистрация невозможна, если вы никогда не вносили изменения в содержимое файлов.

0 голосов
/ 20 января 2015


1 - Обновите специальную версию до последней версии.

2 - экспортировать эту версию в папку.

3 - Обновить рабочую копию до последней версии.

4- Перезаписать экспортированные файлы и папки в папку рабочей копии.

5- Совершить!

0 голосов
/ 25 мая 2010

Хороший вопрос! Насколько я знаю, это возможно только путем ручного добавления пробела или чего-то еще в файл, так что Subversion видит файл как измененный. После этого он создает новую ревизию.

...