Когда следует проект мульти-модуль для разделения на отдельные хранилища деревьев?

голоса
6

В настоящее время у нас есть проект со стандартным хранилищем подрывного макетом:

./trunk
./branches
./tags

Однако, как мы движемся вниз по дороге OSGi и модульный проект, мы закончили с:

./trunk/bundle/main
./trunk/bundle/modulea
./trunk/bundle/moduleb ./tags/bundle/main-1.0.0
./tags/bundle/main-1.0.1
./tags/bundle/modulea -1.0.0

«Сборки» еще довольно монолитная в том, что он строит все модули в последовательности, хотя я начинаю задаваться вопросом, должны ли мы реорганизовать сборки / хранилище для чего-то более, как:

./bundle/main/trunk
./bundle/main/tags/main-1.0.0
./bundle/main/tags/main-1.0.1
./bundle/modulea/trunk
./bundle/modulea/tags/modulea- 1.0.0

В этой модели я предположил бы, что каждый модуль строят себя, и хранящий его двоичный файл в хранилище (Maven, плюща, или другой путь самого хранилища диверсии).

Существует ли рекомендация или «передовая практика,» более макеты проектов, как только один идет модульной?

Задан 18/08/2008 в 10:51
источник пользователем
На других языках...                            


4 ответов

голоса
7

Subversion книга содержит два раздела по этому вопросу:

Запись в блоге на тему: «Subversion Repository Layout»

Короткий ответ, хотя: в то время как ваш пробег будет меняться (каждая ситуация индивидуальна), ваша /bundle/<project>/(trunk|tags|branches)схема является довольно распространенной и, вероятно , хорошо работать для вас.

Ответил 18/08/2008 в 11:45
источник пользователем

голоса
6

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

ветви
  название проекта
    module1
      филиал имя
    module2   
      возможно, другой Гиса имя
    Имя филиала-на-а-выше уровня, в том числе, как-модулей
      module1
      module2
теги
  ... (такой же, как ветвь)
хобот
  название проекта
    module1
    module2

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

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

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

Ответил 18/08/2008 в 11:27
источник пользователем

голоса
3

Просто мои два цента ...

Я просто хочу подчеркнуть , комментарий в документации SVN (уже цитировал в другой ответ, так же резьба) http://svnbook.red-bean.com/en/1.4/svn.reposadmin.planning.html#svn.reposadmin.projects .chooselayout

Отрывок ссылается на следующую структуру: / багажник / расч / календарь / таблица / ... / теги известково / календарь / таблица / ... филиалы / расч / календарь / электронные таблицы /

«Там нет ничего особенно неправильно о таком раскладе, но он может или не может показаться интуитивно понятным для пользователей. Особенно в больших, мульти-проектных ситуации с большим количеством пользователей, эти пользователи могут, как правило, знакомы только с одним или двумя из проектов в хранилище. Но проекты-как-ветвь братья и сестры, как правило, де-подчеркнуть проект индивидуальности и сосредоточиться на всем множестве проектов как единое целое. Это социальная проблема, хотя. Нам нравятся наш первоначально предложил механизм для чисто практических reasons- это легче спросить (или изменить, или мигрировать в другом месте) всю историю одного проекта, когда есть один путь хранилища, который содержит всю историю-прошлое, настоящее, маркируется и разветвленными для этого проекта и только этого проекта «.

Для моих, я склонен согласиться довольно сильно с этим и предпочитаю следующую структуру: / Utils / известково / ствол / метки / филиалы / календарь / ствол / метки / филиалы / ... офисные / табличный / ствол / метки / филиалы /

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

Давайте используем пример: Если проект-1 зависит от ModuleA v1.1 и v2.3 moduleB, я не хочу новый ModuleA v2.x появляться в тегах. В самом деле, когда, возвращаясь несколько дней / недель / месяцев до этого меченого освобождения, я был бы вынужден открыть дескриптор пучка в меченой версии проекта--читать версию ModuleA на самом деле требуется.

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

Это просто мои два цента.

Ответил 04/03/2009 в 13:04
источник пользователем

голоса
0

Я ответил на аналогичный вопрос в StackOverflow вопрос Структура управления версиями . Это на самом деле подходит даже лучше , так как здесь мы делаем развитие тяжелой OSGi и имеют много пучков. Я должен повторить комментарии Андерс Sandvig: держать ствол / метки / ветви на корневом уровне , так как вы только расшириться ограниченный набор модулей. Он также не мешает модули здания индивидуально.

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

Ответил 20/08/2008 в 09:13
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more