Организация проекта SVN: для модуля или для проекта - PullRequest
7 голосов
/ 25 сентября 2008

У меня есть хранилище Subversion, которое содержит несколько подпапок, соответствующих различным приложениям, файлам конфигурации, библиотекам DLL и т. Д. (Я буду называть их «модулями»), которые составляют мой проект. Сейчас мы начинаем «разветвляться» на несколько смежных проектов. То есть каждый проект высокого уровня будет использовать несколько модулей, возможно, слегка измененных от проекта к проекту. Количество проектов меньше (~ 5), чем количество модулей (~ 20)

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

репо:

module 1
    Project 1
    Project 2
    ...

    Project 5
module 2
    Project 1
    ....
    Project 5
....
module 20
    Project 1
    ...
    Project 5

-или-

репо:

Project 1
   module 1
   module 2
   ...
   module 20
Project 2
   module 1
   module 2
   ...
   module 20
...
Project 5
   module 1
   module 2
   ...
   module 20

Ответы [ 5 ]

3 голосов
/ 25 сентября 2008

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

Может иметь смысл разделять как проекты, так и модули, например ::1005*

Projects
   Project 1
   Project 2
   ...
Modules
   Module 1
   Module 2
   ...

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

1 голос
/ 25 сентября 2008

Я бы организовал по проектам ТО по модулям (ваш второй пример). Основная причина в том, что управление проектом, по крайней мере для меня, связано с большими затратами, чем с управлением модулями.

Каждый отдельный проект нуждается в собственной настройке сценария сборки, файле свойств и т. Д., И намного легче отслеживать на компьютере 5 рабочих копий, чем 20.

1 голос
/ 25 сентября 2008

Я предпочитаю 1-й.

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

т.е. наш флагманский продукт имеет ревизию 48123, наш новый проект имеет ревизию 31. Если у вас есть зависимости между хранилищами, вы можете использовать svn externals.

0 голосов
/ 25 сентября 2008

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

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

0 голосов
/ 25 сентября 2008

Я думаю, что использование вами «высокого уровня» для описания того, что представляет собой проект, предполагает, что у вас должна быть настройка Projects / modules.

Однако вы можете настроить модули и проекты, т. Е. Они находятся на одном уровне в репозитории SVN. Ваши проекты могут полагаться на модули, и, если возможно, проекты могут предоставлять конкретные реализации действий, превращая модуль в базовый модуль со стандартными, но переопределяемыми реализациями.

...