Для возвращения конкретной папки в SVN к ее предыдущему состоянию, я в настоящее время использую следующее:
svn rm folder
svn commit -m 'removed folder to revert to previous version'
svn co http://pathto/repo/folder@268
cd folder
rm -rf .svn //recursively if many folders
svn add folder
svn commit -am 'reverted to the previous version'
Кажется слишком большой проблемой тому, что должно быть случаем довольно общего использования. Я должен делать его неправильно. Как еще можно сделать это?
Почему бы не использовать 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 .
Для этой задачи можно использовать svn merge
, см. http://svnbook.red-bean.com/en/1.1/ch04s04. html # svn-ch-4-sect-4.2 для примера