Добавление одного файла в репозиторий Subversion, но не другие файлы по пути

Контекст заключается в том, что у меня есть готовая CMS, к которой я хочу выполнить настройки; поэтому я хочу сохранить файлы, которые я модифицирую под управлением версии, но я не вижу необходимости поставить все дерево файлов под контроль версий.

Моя проблема заключается в том, что мне нужно добавить файл, который будет храниться под контролем версий, который находится в нескольких подкаталогах вниз, но я не хочу добавлять что-либо еще в репозитории из файла и его родительских папок.

Чтобы проиллюстрировать, скажем, у меня есть следующий файл в моем проекте:

Проект/folder1/folder2/file.txt

Я хочу добавить file.txt в репозиторий, а папка1 находится под управлением версии, но folder2 - нет. Существуют существующие файлы в папке1 и папке2, которые я не хочу, чтобы все было поставлено под контроль версий.

Выполнение svn import folder1/folder2/file.txt, похоже, не работает, так как тогда мне нужно проверить файл, и даже если я сначала удалю локальную версию, SVN сообщит, что существует его родительская папка. Я предполагаю, что это означает, что если я использую параметр -force, это просто скроет содержимое этих папок.

Проблема с svn add folder1/folder2/file.txt заключается в том, что она требует, чтобы каждая родительская папка уже была в репозитории (я понимаю, что он не может найти файл folder2/.svn/entries), но только папка1 находится в репозиторий. Поэтому я решил, что смогу сделать svn add folder1/folder2 в первую очередь. Проблема в том, что это помещает все содержимое папки2 в репозиторий, чего я не хочу. Кажется, решение должно состоять в том, чтобы сделать svn add --depth=empty folder1/folder2, который просто добавляет папку и никакого содержимого, но опция -depth - это новая функция в Subversion 1.5, тогда как я использую 1.4.2, и было бы неплохо избежать обновления на этот пункт.

Итак, мне интересно, есть ли способ избежать опции -depth в более старых версиях Subversion? Или есть другой способ решения этой проблемы: "Мне также интересно, возможно ли, пожалуй, то, как я начал настраивать его, было не так полезно.

Ответы

Ответ 1

Вы должны добавить папку с опцией "--non-recursive":

svn add --non-recursive folder1/folder2

Ответ 2

Если ваша версия клиента равна 1,5 или выше, вы можете просто использовать

svn add --parents folder1/folder2/file.txt

чтобы добавить файл и его родительские каталоги.

Ответ 3

Вы также можете использовать быструю версию "-N", которая является короткой формой "--non-recursive", как в

svn add -N folder1/folder2