2010-02-04 3 views
1

В настоящее время я работаю с коллекцией проектов, которые являются их собственными отдельными ветвями/расширениями общего основного проекта, и я ищу способ управлять тем, как проекты сотрудничают ,Управление версиями для нескольких проектов, расширяющих один проект

Я понимаю, что следующее немного расплывчато, у меня есть только небольшой опыт управления версиями помимо основных потребностей одного проекта. Я ищу, если кто-то сталкивался с чем-то подобным раньше, и если да, то как они его решали? (т. е. какие технологии/функции использовались или это просто вопрос создания передовой практики?)

Мне повезло, что мне разрешили полностью избавиться от SVN и перейти к чему-то еще, если это более уместно ,

Мы

  • Сердечник источник подрывной дерево (Родовое дерево), который получает обновления.
  • Ряд деревьев-источников Subversion для определения домена, которые будут использовать файлы, изменять существующие файлы и добавлять новые файлы в основное исходное дерево для создания конечного продукта.

Наш процесс

  • Изменения в исходном дереве ядра вручную включены в область конкретных деревьев
  • Иногда изменяется в области конкретных деревьев считаются «общий»/достаточно хорошо, чтобы быть (и, в конечном итоге, все другие деревья, относящиеся к конкретному домену)

Что мы хотел бы это технология (или технология), которые могут

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

Заранее благодарим за любую помощь.

ответ

1

Я бы рассматривал их как отдельные проекты в вашей системе контроля версий.

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

Или вы можете использовать svn: externals, чтобы SVN автоматически проверял версию вашего основного проекта, всякий раз, когда вы просматриваете проект, специфичный для домена.

+0

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

+0

Я не совсем уверен, что вы имеете в виду, о проектах, специфичных для домена, изменяющих основной проект. Если вам нужны разные версии основного проекта, тогда вам придется иметь дело с ветвлением и синхронизацией ветвей и т. Д. Это будет проще, если вы сможете избежать этого, возможно, если проекты DS расширяют классы из основного проекта вместо их замены. –

+0

Или, если они легко меняются, вы можете использовать подход Ant выше. У вас будет экспортированная копия основного проекта, поэтому скрипт Ant может изменить некоторые его файлы, и вы просто не совершаете эти изменения. –

Смежные вопросы