Подтвердить что ты не робот

SVN: как вернуться к предыдущей версии?

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

Можно ли удалить ревизии, существующие в SVN?

4b9b3361

Ответ 1

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

svn up -r [revision_number]

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

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

Ответ 2

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

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

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

SVN dump: (полностью удаляет плохие версии)

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

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

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

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

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

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

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

Ответ 3

Вы можете просто обновить версию до версии с помощью

svn up -r 10

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

svn merge -r HEAD:10 yourFile
svn ci yourFile -m "Reverting back to rev 10"

Ответ 4

Получить документы на веб-сайте TortoiseSVN.

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

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

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