SVN: как вернуться к предыдущей ревизии? - PullRequest
34 голосов
/ 22 февраля 2011

В проекте, над которым я работаю, была допущена серия ошибок. Как мне вернуться к известной рабочей ревизии и построить на ее основе? Скажем, у меня 15-я редакция, но я хочу вернуться к 10-й редакции - и работать над 10-й и далее. Я использую Zend Studio.

Могу ли я удалить ревизии, которые существуют в SVN?

Ответы [ 4 ]

51 голосов
/ 22 февраля 2011

Из командной строки:

svn up -r [revision_number]

Где [revision_number] - это ревизия, к которой вы хотите вернуться.

И нет, вы не можете удалить ревизии, которые уже существуют в SVN.

9 голосов
/ 13 октября 2015

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

svn up -r 10

Но, как предположил Кристоф, это не позволит вам зафиксировать изменения , так как SVN требует от вас обновить вашу рабочую копию до HEAD, прежде чем вы сможете выполнить фиксацию. Вместо этого вы можете

svn merge -r HEAD:10 yourFile
svn ci yourFile -m "Reverting back to rev 10"
9 голосов
/ 21 мая 2012

Три варианта:

Обратное объединение: (самый быстрый, сохраняет неверные ревизии, добавляет новую ревизию)

svn merge $(REPO)@$(GOODREV) $(WC)

Дамп SVN: (полностью удаляет неверные ревизии)

svnadmin dump $(REPO) -r 1:$(GOODREV) > dumpfile
svnadmin load $(NEWREPO) < dumpfile
# Now delete $(REPO), and use $(NEWREPO)

Редактирование вручную: (удаляет неверные ревизии, небезопасно, в крайнем случае)

Единственная причина, по которой вам это может понадобиться, - это если по какой-то причине у вас есть доступ к репозиторию на уровне файлов, но нет доступа к оболочке.Обратите внимание, что это было проверено только на SVN 1.6 и 1.7.

  1. Обновите вашу рабочую копию до $(GOODREV) (Если оставить ее на HEAD, она будет непригодна после того, как мы закончим.)
  2. Примите любые меры для защиты репо от внешнего доступа.Если он подключен к веб-серверу, отключите его сейчас.Доступ третьих сторон к репо во время этого процесса может повредить его.
  3. Сделайте резервную копию вашего репо.(Никогда не болит, на случай, если что-то пойдет не так.)
  4. Измените число в db/current на $(GOODREV).Не изменяйте конец строки LF.
  5. Удалите все пронумерованные файлы (не папки) в db/revs/*/* и db/revprops/*/*, которые> $(GOODREV)
  6. Удалить db/rep-cache.db
  7. Обновите вашу рабочую копию до HEAD, которая теперь должна быть равна $(GOODREV).

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

  1. Удалить все файлы в %APPDATA%\TortoiseSVN\logcache\*
  2. Убить все экземпляры TSVNCache.exe через диспетчер задач.(Обычно он есть, но может быть 2 на WinVista + из-за безопасности UAC, которая предотвращает взаимодействие приложений с повышенными правами с TSVNCache.exe без прав. При первом открытии диалогового окна Save As... с повышенными правамиприложения, с повышенными правами TSVNCache.exe появится.)

Это исправит странное отображение журнала, вызванное конфликтом кеша TortoiseSVN с новым состоянием репо.

0 голосов
/ 30 марта 2017

Получить документы с офисного сайта TortoiseSVN.

  1. Использовать диалог журнала изменений
  2. Использовать диалог слияния

Я использую метод 2 и работаюотлично с моей стороны.

https://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-howto-rollback.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...