Любое изменение, которое вы вносите в репо, требует фиксации, так что да, после выполнения svn delete
вам нужно svn commit
.Точно так же, когда вы добавляете файлы, это изменение, которое необходимо зафиксировать.В обоих случаях можно отменить добавление и удаление без фиксации.
С точки зрения добавления и удаления файлов в одной транзакции, опять же, что «просто работает», вы фактически выпустите:
svn delete C.cpp
svn add D.cpp
svn commit
Если вы хотите восстановить удаленный файл, то вы можете просто восстановить файл из более ранней версии репозитория svn, а затем повторить (см. Также Как правильно восстановить удаленный файл из SVN? ).
Главное, что вы должны помнить при удалении файлов: вы должны удалить его, используя инструменты Subversion (т.е. из командной строки как svn delete
или используя Delete внутриTortoiseSVN. Просто удалив его с помощью del
, rm
или файлового менеджера, такого как проводник Windows, SVN увидит файл как " отсутствует ", а не " удален ", иПри фиксации репо удаление не будет зафиксировано, поэтому при следующем обновлении рабочей копии отсутствующие файлы будут восстановлены. Таким образом, вы используете subversion для удаления файла, чтобы subversion знала, что вы действительно хотите удалить его.
Ваш последний вопрос - какая версия SVN и насколько велика репо (с точки зрения количества файлов). По сути, T-SVN должен пройтись по дереву и проверить каждый файл на соответствие репо-версии, чтобы увидеть, что этоНачиная с SVN 1.7, формат рабочей копии изменился: в базе данных содержалось много метаданных, а также улучшено хранилище нетронутых копий (т. е. что такое файлкед вроде когда вышел из svn) означает что он быстрее чем был.Если вы не используете 1.7, то стоит проверить.Кроме того, если у вас большой репозиторий, но вы работаете только в небольшой его части, рассмотрите возможность использования редких выписок, чтобы уменьшить размер вашей локальной рабочей копии.См. этот ответ до Извлечение одного файла из Subversion для краткого обзора или редких проверок.