SVN: Вы можете удалить каталоги только из локальной проверки (не из хранилища)?

Предположим, что у вас есть каталог под управлением subversion, который содержит несколько файлов и множество подкаталогов, например:

file1.txt
file2.txt
file3.txt
dir1/
dir2/
dir3/
dir4/
:
dirXX/

Теперь вам нужны файлы и некоторые из папок, но не все. Это можно сделать с помощью SVN. Просто сделайте проверку нерекурсивной:

svn checkout -N <URL>

Это проверяет только первый каталог и файлы внутри. Подкаталоги не включены. Даже если вы идете в каталог проверки и запускаете "svn up", он будет обновлять только проверенные ранее файлы, он не будет добавлять каталоги. Теперь вы можете выборочно добавлять нужные каталоги, явно обновляя их. Например, если вам нужны только dir2 и dir4, вы можете перейти в каталог checkout и выполнять

svn up dir2
svn up dir4

Если вы запускаете универсальныйsvn up"в будущем он будет обновлять только файлы и эти два каталога, он не будет добавлять другие каталоги.

Теперь проблема: что если я решу в какой-то момент, что мне больше не нужен dir2? Как мне от этого избавиться? Кажется, нет никакого способа сделать это, кроме удаления всей проверки и начала с нуля.

Когда вы просто удалите dir2, следующий "svn up"Верну, как"svn status«Конечно, теперь он отображается как отсутствующий («! »перед его именем).svn remove«конечно, удалит его, но при следующем коммите он также удалит его из репозитория, что не должно происходить.

Даже новая функция разреженного каталога («мелкая проверка») в SVN 1.5 здесь бесполезна:

Реализация поверхностных проверок в Subversion 1.5 хороша, но не поддерживает пару интересных вариантов поведения. Во-первых, вы не можете удалить телескоп рабочей копии. Запуск svn update --set-deep empty в рабочей копии бесконечной глубины не приведет к удалению всего, кроме самого верхнего каталога, - он просто выдаст ошибку.
- http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html

Это невозможно с SVN? Кто-нибудь когда-либо придумал умный обходной путь к этому?

Просто создайте каталог извлечения (без SVN), а затем извлеките отдельные подкаталоги из хранилища непосредственно как подкаталоги к этому каталогу, и это будет работать для каталогов: теперь каждый каталог представляет собой отдельную выписку, может быть обновлен и больше не нужен. Вы можете просто удалить его. Тем не менее, как мне получить файлы (например, file1.txt)? SVN не позволяет извлекать отдельные файлы, вы можете извлекать только целые каталоги.

Ответы на вопрос(5)

Ваш ответ на вопрос