Возможно ли иметь в Subversion специфичные для пользователя свойства svn: x (например, svn: ignore и svn: externals)? - PullRequest
1 голос
/ 20 августа 2009

Мои соавторы и я часто обнаруживаем, что хотели бы иметь возможность устанавливать разные свойства svn: ignore и svn: externals для наших собственных рабочих копий проекта. Не похоже, что функциональность svn, связанная со свойствами, требует, чтобы эти свойства были версионными, но мы еще не нашли способ развернуть эти свойства.

Ответы [ 4 ]

2 голосов
/ 20 августа 2009

Думайте о SVN как о файловой системе. Если бы вы хотели достичь своих целей, что бы вы делали в файловой системе? Каждый из вас создал бы где-нибудь копию оригинальных файлов.

Вы можете сделать то же самое с Subversion (svn copy). Свойства, установленные в новых подкаталогах, будут действительны только для этих подкаталогов, но не для исходных файлов.

Но есть цена: теперь вы должны синхронизировать (объединить) ваши изменения вручную (точно так же, как вы должны были бы делать это, когда вы делаете это в локальной файловой системе без подрывной деятельности).

Я не знаю ни одной VCS, которая бы позволяла вам бесплатно.

2 голосов
/ 20 августа 2009

Нет, свойства относятся к файлу / каталогу, в котором они установлены. Пользовательские свойства не существуют.

Зачем вам разные svn: externals? Один из способов справиться с этим - иметь свой собственный каталог в репозитории, содержащий только внешние данные. Таким образом, вы можете контролировать свой собственный набор внешних элементов.

Соглашения и макет хранилища - это то, с чем вы должны согласиться. Subversion на самом деле не позволяет пользователям настраивать свой вид хранилища.

0 голосов
/ 20 августа 2009

Muhahahahaha!

A полностью непрактичное решение для получения специфичного для пользователя (ну, фактически, для рабочей станции) svn: externals:

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

svn://localhost/local-externals

Пусть каждый разработчик установит свое привилегированное свойство svn: externals в корневом каталоге указанного репозитория.

svn co svn://localhost/local-externals
svn pe svn:externals local-externals
...
svn commit local-externals

В вашем центральном репозитории включите ссылку svn: externals на svn: // localhost / local-externals

svn co svn://example.com/repo/project/trunk
svn pe svn:externals
    ... define an reference to svn://localhost/local-externals
svn commit trunk

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

Вы могли бы сделать это, но я думаю, что я считаю себя безумно уверенным даже из-за этого.

0 голосов
/ 20 августа 2009

Чтобы развернуть эти свойства, удалите их из папки или файла, к которому они прикреплены (затем подтвердите). Если вы используете командную строку, вы можете использовать "svn propdel", чтобы удалить их.

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

Чтобы получить различные «представления» одного и того же кода, вам может потребоваться ветвление , каждый из которых работает над своими собственными ветками и регулярно объединяет свои изменения в ствол. Это похоже на рабочий процесс, который вы пытаетесь достичь с различными свойствами для пользователя.

Для другого взгляда на svn: ignore вы можете установить разные ' global-ignores ' для своих клиентов.

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