Подтвердить что ты не робот

Как восстановить локально удаленную папку?

Локальное удаление файла с последующим обновлением svn восстанавливает локальную копию этого файла. Однако это не похоже на папки. Есть ли способ заставить его работать и с папками?

EDIT: Вот как выглядит консольный вывод:

C:\svn\Google Project Hosting\xulwin\xulrunnersamples>rmdir /S /Q treeview

C:\svn\Google Project Hosting\xulwin\xulrunnersamples>svn up
D    treeview
Updated to revision 50.

EDIT2: Я использовал svn уже более двух лет, и раньше у меня не было этой ошибки. Но я не изменил никаких настроек. Единственное, о чем я могу думать, это то, что я создал локальный репозиторий с Tortoise SVN сегодня на моем внешнем жестком диске, чтобы создать резервную копию некоторых несвязанных старых вещей. Но это не должно быть причиной проблемы, потому что поведение происходит как на локальной копии из этого локального репозитория, так и на моем коде из Google Project Hosting.

EDIT3: WTF я внезапно не могу воспроизвести ошибку. Все работает так, как должно. Но я ничего не менял.

EDIT4: В EDIT1 файл кажется помеченным как удаленный, но это не так, поскольку команда svn commit ничего не сделала. Также Tortoise Check для изменений ничего не изменил.

Примечание. Когда проблема все еще возникала, полностью рекурсивное обновление действительно восстанавливало папку.

4b9b3361

Ответ 1

Я столкнулся с этой проблемой сегодня с помощью svn 1.5.6. svn up --force the_dir_path исправил это для меня.

Для воссоздания:

$ svn up
Updated to revision X.
$ rm -rf the_dir_path
$ svn up
D the_dir_path
Updated to revision X.
$ svn up
Updated to revision X.
$ svn up --force the_dir_path
A ....
A ....
Updated to revision X.

Ответ 2

Вероятно, вы захотите использовать команду svn revert, а не процесс удаления элементов, а затем обновление, чтобы вернуть их. Используйте ключ -R для рекурсивного возврата файлов/каталогов.

Информация о помощи svn для revert выглядит следующим образом

revert: Restore pristine working copy file (undo most local edits).
usage: revert PATH...

  Note:  this subcommand does not require network access, and resolves
  any conflicted states.  However, it does not restore removed directories.

Valid options:
  --targets ARG            : pass contents of file ARG as additional args
  -R [--recursive]         : descend recursively, same as --depth=infinity
  --depth ARG              : limit operation by depth ARG ('empty', 'files',
                            'immediates', or 'infinity')
  -q [--quiet]             : print nothing, or only summary information
  --changelist ARG         : operate only on members of changelist ARG
                             [aliases: --cl]

Global options:
  --username ARG           : specify a username ARG
  --password ARG           : specify a password ARG
  --no-auth-cache          : do not cache authentication tokens
  --non-interactive        : do no interactive prompting
  --trust-server-cert      : accept unknown SSL server certificates without
                             prompting (but only with '--non-interactive')
  --config-dir ARG         : read user configuration files from directory ARG
  --config-option ARG      : set user configuration option in the format:
                                 FILE:SECTION:OPTION=[VALUE]
                             For example:
                                 servers:global:http-library=serf

Ответ 3

используйте svn revert (-R) foldername, чтобы вернуть его. вы удалили его с помощью svn rm, а svn up не воссоздали его для вас, поскольку он по-прежнему помечен как удаленный

Ответ 4

Я использую для случайно удаленной команды папки

ОБНОВЛЕНИЕ SVN

в родительской папке

Ответ 5

svn status|grep ^D|^Ct -c9-|xargs -n1 svn revert