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