Как «восстановить» удаленную папку в Subversion / TortoiseSVN? - PullRequest
93 голосов
/ 15 февраля 2010

Мы случайно удалили папку 'tags' из нашего хранилища Subversion, где мы намеревались удалить только один конкретный тег. Какой самый простой способ вернуть папку 'tags'?

Мы используем TortoiseSVN в качестве нашего клиента, и я подумал, что когда я зайду в браузер репо и покажу журнал, будет что-то вроде «отменить изменения из этой ревизии», аналогично тому, что вы видите в аналогичном диалоге на вашей рабочей копии , Но там нет такой команды ...

Ответы [ 6 ]

110 голосов
/ 15 февраля 2010

Просто скопируйте удаленную папку из предыдущей версии.

В обозревателе хранилища нажмите кнопку с надписью HEAD (в верхнем правом углу), чтобы показать ревизию, в которой ваша папка еще существует, затем щелкните правой кнопкой мыши эту папку и выберите «Копировать в ...» и введите путь туда, где вы хотите, чтобы папка была заново создана (вероятно, тот же путь, который уже находится в текстовом поле).

73 голосов
/ 12 мая 2011

для энтузиастов командной строки:

  • сначала найдите номер ревизии, где произошло удаление:

    svn log -v http://svnserver/path/to/folderContainingDeletedFolder
    

скажем, что вы обнаружите, чтокаталог был удален в ревизии 999 (кстати, вам может быть проще найти номер ревизии в браузере репозитория svn)

  • скопировать папку из ревизии минус 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"
11 голосов
/ 13 августа 2012

Большинство из этих ответов будут работать в определенной степени, но правильный ответ - Даниил. Сделайте обратное слияние. Таким образом, вы сохраняете историю версий.

svn merge -r R1:R2

где R1 - ревизия, в которой вы находитесь, а R2 - ревизия, содержащая удаленный файл / папку.

7 голосов
/ 15 февраля 2010

Вам нужно будет выполнить обратное слияние .

Для получения подробной информации о том, как это сделать (и почти все, что вы когда-либо хотели бы или нужно делать с SVN), официальная книга доступна онлайн .

3 голосов
/ 04 августа 2011

Исходя из ответа Рауди, который работал для меня после этой ревизии.

Некоторым svn-клиентам может понадобиться номер редакции, указанный с помощью параметра -r revision вместо @ после папки следующим образом:

svn copy svn://svnserver/project/tags svn://svnserver/project/tags **-r 998** -m "undeleted folder"
2 голосов
/ 15 февраля 2010

Перейти к Repository Browser вашего repository, щелкните правой кнопкой мыши родительскую папку, в которой существовала ваша удаленная папка Теперь Show Log родительской папки и выберите предыдущую ревизию, в которой вы совершили операцию удаления. Вы получите список и щелкните правой кнопкой мыши на папке из информации о редакции и выберите Update to this Revision.

Готово

...