Как "восстановить" удаленную папку в 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"