2016-02-08 7 views
0

Я просто удалил несколько файлов, используя svn --force delete path/folder copy. Однако пространство между folder и copy заставило его подумать, что ему пришлось удалить несколько вещей, поэтому теперь он удалил мою оригинальную папку.Где удаляются файлы в SVN?

Я еще не установил свою оригинальную папку, поэтому все изменения исчезли. К счастью, я не сильно изменился в этой конкретной папке, так что это в основном для будущего использования, если я в конечном итоге сделаю ту же самую глупость: как мне вернуть или восстановить файлы, которые ранее не были зафиксированы? Где я могу найти эти файлы? Они не попали в мой мусорный бак.

ответ

3

Они удалены, чисты и просты. К сожалению, documentation for the delete command говорит только это:

Файлы (и каталоги, которые не были завершены), будут немедленно удалены из рабочей копии, если опция --keep-local не дается.

Для доказательства, мы должны смотреть вниз Waaaay в источнике SVN, где svn_io_remove_file2 в конечном итоге вызывает apr_file_remove, что:

  • если вы на Windows, invokesDeleteFile. Этот метод просто удаляет файл; если программисты хотели отправить его в Корзину, вместо этого они должны были бы использовать SHFileOperation и передать ему флаг FOF_ALLOWUNDO.
  • если вы на * NIX (включает в себя операционную систему Mac OS), invokesunlink, который выполняет следующие действия:

    ... файл удаляется и место, которое он использовал становится доступным для повторного использования

Примечание: Я хотел бы сделать более глубокую связь с точками в коде, но веб-доступ к SVN и APR хранилища не позволяют линейного уровня связывания :(

+0

Ok, так что потерял T hanks для ответа, постараюсь держать голову над моим телом в следующий раз, когда удалю копии: D – Rvervuurt

+2

Да, лично я не думаю, что 'svn delete' должен удалять неподдерживаемые файлы с вашего диска; слишком много людей, я думаю, предположим, что он просто «расчитает» его на добавление. –

+0

Я бы действительно по умолчанию переместил его в корзину. Мог бы сделать псевдоним для этого, чтобы не допускать идиотизма. – Rvervuurt