Размещение выбранных папок под контролем версий - PullRequest
1 голос
/ 13 января 2011

У меня есть SVN-репозиторий на моем хост-сервере (linux), и мне нужно выполнить локальную работу над ними на моем компьютере с Windows (Tortoise SVN установлен). Чтобы упростить мой вопрос, структура dir выглядит так:

root
|--------sub1
|--------sub2
|--------sub3
...
|--------subN

с дополнительными подпапками под каждым subX. Скажем, я хочу только некоторые подпапки «sub1» и «sub3» под контролем версий. Но в Windows, когда я фиксирую изменение с помощью tortoisesvn, я все еще хочу иметь возможность щелкнуть правой кнопкой мыши корневую папку, нажать кнопку фиксации и получить любые изменения, которые существуют в любом месте под root, в любых выбранных папках для фиксации. Проблема в том, что, думаю, использование игнорирования было бы очень громоздким, поскольку было бы так много папок, которые нужно игнорировать, на разных уровнях структуры.

Итак, я хочу поставить все под контроль версий, а затем сказать svn: «Хорошо, теперь игнорируйте все, кроме X и Y». Какой самый простой способ сделать это?

Спасибо, Ионы

Ответы [ 4 ]

4 голосов
/ 14 января 2011

Просмотрите информацию о Разреженных каталогах в Руководстве по Subversion .

Это займет немного работы, и я не знаю, поддерживает ли TortoiseSVNэто, но это будет делать то, что вы хотите.

Когда вы делаете первоначальный заказ, вы должны использовать опцию --depth=empty.Это извлечет ваш репозиторий, но без каких-либо папок в рабочем каталоге.Затем для каждой папки, которую вы хотите, вам нужно сделать svn update --set-depth infinity.Это обновит эту одну папку и сохранит ее обновленной.

$ svn co --depth=empty http://svn/repos/project/trunk myproj
checked out revision 123133

$ cd myproj
$ svn update --set-depth=infinity sub1
[yadda, yadda, yadda]
$ svn update --set-depth=infinity sub2
[yadda, yadda, yadda]

Если вы не возражаете против множества пустых папок в вашем рабочем каталоге, вы можете использовать immediates вместо empty.Это будет проверять все на этом уровне, но не в подкаталогах.Вы увидите папки, но они не будут содержать ничего.Затем вы можете сделать svn update на нужные вам папки.Но, если вы не используете --set-depth, ваши подпапки будут иметь проблемы с обновлением позже.

0 голосов
/ 13 января 2011

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

svn: ignore игнорирует файлы (из svn status) в соответствии с вашимшаблон.то есть.svn propset svn:ignore "*.xml" folder/ будет игнорировать любые XML-файлы (НЕ под управлением версией) в каталоге папки.Таким образом, это не поможет вам, потому что, как только вы добавите файл и попытаетесь его игнорировать, все последующие изменения все равно будут приняты во внимание для фиксации.

Поскольку черепаха SVN автоматически добавляет любые созданные файлы (используя графический интерфейс пользователя)), вам придется отменить изменения папок, которые вы хотите исключить.

Надеюсь, это поможет

0 голосов
/ 14 января 2011

Я не думаю, что есть способ игнорировать все, а затем не игнорировать конкретные. Вам придется игнорировать те, которые вы хотите игнорировать. Команда, которую я использую для этого:

svn propset svn:ignore "sub1 sub2 sub3 ... subN" ./rootDir

Вам нужно будет импортировать нужные каталоги в SVN, затем запустить propset, а затем зафиксировать. Затем добавьте фактически игнорируемые каталоги в rootDir.

РЕДАКТИРОВАТЬ: Ошибка в выше. Должно быть:

 svn propset svn:ignore -F file.txt ./rootDir

Причина в том, что для нескольких свойств, переданных propset, необходимо, чтобы они были разделены новой строкой. Смотрите здесь .

Итак, для вашей задачи выше я бы сделал:

ls > file.txt

Затем сотрите каталоги, которые вы действительно хотите контролировать по версии, затем вызовите svn propset сверху с этим файлом.

0 голосов
/ 13 января 2011

В CVS (предшественнике SVN) был файл .cvsIgnore.Я думаю, что нет файла .svnIgnore с SVN, но я знаю, что есть функциональность svn: ignore.Попробуйте поиск в Google по запросу ".svnIgnore file", чтобы узнать, подходит ли вам что-нибудь из этого.

...