Добавление одного файла в хранилище Subversion, но не других файлов по пути - PullRequest
15 голосов
/ 09 октября 2009

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

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

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

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

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

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

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

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

Ответы [ 3 ]

38 голосов
/ 09 октября 2009

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

svn add --non-recursive folder1/folder2
27 голосов
/ 20 марта 2013

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

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

для добавления файла и его родительских каталогов.

16 голосов
/ 23 марта 2012

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

svn add -N folder1/folder2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...