Как "восстановить" удаленную папку в Subversion/TortoiseSVN?
Мы случайно удалили папку "теги" из нашего репозитория Subversion, где мы только хотели удалить один конкретный тег. Каков самый простой способ вернуть папку "тегов"?
Мы используем TortoiseSVN в качестве нашего клиента, и я подумал, что когда я перейду в браузер репо и покажу лог, будет что-то вроде "отменить изменения из этой ревизии", аналогично тому, что вы можете увидеть в аналогичном диалоговом окне вашей рабочей копии, Но там нет такой команды...
Ответы
Ответ 1
Просто скопируйте удаленную папку из предыдущей версии.
В браузере репозитория нажмите кнопку с надписью HEAD (в правом верхнем углу), чтобы показать версию там, где ваша папка все еще существует, затем щелкните ее правой кнопкой мыши и выберите "Копировать в..." и введите путь туда, где вы хотите, чтобы папка была заново создана (вероятно, тот же путь, который уже находится в текстовом поле).
Ответ 2
для энтузиастов командной строки:
-
сначала найдите номер версии, где произошло ваше удаление:
svn log -v http://svnserver/path/to/folderContainingDeletedFolder
скажем, вы обнаружите, что каталог был удален в редакции 999
(кстати, вам может быть проще найти номер версии с браузером svn repo)
-
скопируйте папку из версии минус 1
svn copy http://svnserver/path/to/folderContainingDeletedFolder/[email protected] http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder -m "undeleted folder"
вуаля, все готово!
в вашем случае это может быть:
svn copy http://svnserver/project/[email protected] http://svnserver/project/tags -m "undeleted folder"
Ответ 3
Большинство из этих ответов будут работать в определенной степени, но правильный ответ - это Даниэль. Сделайте обратное слияние. Таким образом, вы сохраняете историю версий.
svn merge -r R1:R2
где R1 - это ревизия, в которой вы находитесь, а R2 - это ревизия, содержащая удаленный файл/папку.
Ответ 4
Вам нужно будет сделать обратное слияние.
Подробнее о том, как это сделать (и почти все, что вам когда-либо понадобилось или нужно делать с SVN), доступна официальная книга онлайн.
Ответ 5
Перейдите к Repository Browser
вашего repository
, щелкните правой кнопкой мыши родительскую папку, где находится удаленная папка. Теперь Show Log
родительской папки и выберите предыдущую ревизию, в которой вы совершили операцию удаления. У вас будет список и щелкните правой кнопкой мыши по папке из информации о ревизии и выберите Update to this Revision
.
Сделано
Ответ 6
После ответа от raudi, который работал у меня после этого пересмотра.
Некоторым клиентам svn может понадобиться номер версии, указанный с использованием параметра -r version вместо использования @после папки следующим образом:
svn copy svn://svnserver/project/tags svn://svnserver/project/tags **-r 998** -m "undeleted folder"