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

Вернуть svn-папку в предыдущую версию

Чтобы вернуть конкретную папку в SVN в ее предыдущее состояние, я в настоящее время использую следующее:

svn rm folder
svn commit -m 'removed folder to revert to previous version'
svn co http://pathto/repo/[email protected]
cd folder
rm -rf .svn //recursively if many folders
svn add folder
svn commit -am 'reverted to the previous version'

Кажется, слишком много проблем для того, что должно быть довольно распространенным случаем использования. Я должен делать это неправильно. Как еще вы можете это сделать?

4b9b3361

Ответ 1

Почему бы не использовать svn merge?

Предполагая, что вы хотите вернуться из текущей версии HEAD (последняя версия) в версию 268:

cd folder
svn up
svn merge -r HEAD:268 .

Затем разрешите все конфликты вручную (не должно быть ничего, если нет локального изменения) и:

svn commit -m "- reverted to revision 268"

Чтобы вернуть одно изменение (например, сделанное в редакции 666):

cd folder
svn merge -c -666 .

Чтобы вернуть локальные изменения (еще не зафиксировано):

cd folder
svn revert -R .

Ответ 3

Почему бы не использовать 'svn merge'? Вот почему: "Затем разрешите любые конфликты вручную [..]"

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

т.е. Я бы предпочел рецепт оригинального запроса с небольшим улучшением. Если вы используете 'svn export' для получения старой версии, вам не нужно удалять файлы .svn:

svn rm folder
svn commit -m 'removed folder to revert to previous version' .
svn export -r 268 http://pathto/repo/folder
svn add folder
svn commit -m 'reverted to the previous version' folder

Ответ 4

вы также можете использовать

svn revert folder/*

который вернет весь файл под folder