2013-09-22 3 views
1

При поиске SVN вернуться команды объяснение, я увидел следующее объяснение:нужны разъяснения по SVN вернуться

это субкоманда не требует доступа к сети, и решает любые конфликтующих государств. Однако он не восстанавливает удаленные каталоги.

Я хочу знать, почему он не нуждается в сетевом доступе и почему он не восстанавливает удаленные каталоги.

+2

Когда вы говорите «Я видел следующее объяснение», часто полезно предоставить ссылку на него, чтобы другие могли прочитать, о чем вы говорите, и убедиться, что это надежный источник, и вы ничего не истолковали. – alroc

ответ

1

svn revert не требует доступа к сети, потому что каждая рабочая копия хранит «первозданную» копию каждого файла, как она была загружена из репозитория при последнем обновлении. Итак, revert копирует этот файл в вашу рабочую копию.

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

1

svn сохраняет информацию о рабочей копии в папках .svn и использует ее для выполнения некоторых задач управления рабочей копией без доступа к репозиторию, то есть к сети. Если вы просматриваете эти каталоги, вы найдете там локальный файл базы данных и скопированные подкаталоги с кучей файлов .svn-base. Они отражают состояние вашей рабочей копии в последний раз, когда вы выполнили svn update или svn checkout. Поэтому, если вы измените файл в своей рабочей копии, то svn может определить разницу на основе соответствующего локально сохраненного файла .svn-base и, следовательно, может отменить изменения.

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

Похоже, что вы читаете помощь старой версии клиента svn, опубликованной в ответ на вопрос this question.

С версией 1.7 (по крайней мере, я не могу подтвердить, с какой версией именно это изменение произошло) и выше svn help revert состояний:

Примечание: это суб-команда не требует доступа к сети, и решает любые конфликтующие государства.

И после некоторого тестирования на одном из моих локальных копий:

Удаление с использованием файловой системы

Cmd-$> rd /Q /S <working copy> 

или удаление с помощью команды SVN

Cmd-$> svn remove <working copy> 
D   <working copy> 
D   <working copy>\<file1> 
D   <working copy>\<file2> 

Использование команды

Cmd-$> svn revert -R . 

Я смог вернуться в обоих случаях.

Смежные вопросы