Как вы организуете несколько проектов на одном SVN-сервере?
Когда у вас есть несколько связанных проектов (идентифицируемых, автономных приложений, которые совместно используют библиотеки), как вы готовите структуру каталогов вашего сервера SVN? По ветке> проект? По проекту> филиал? Что-то совершенно другое? Или лучше иметь один SVN-сервер для каждого проекта? (Учтите, что некоторые проекты тесно связаны)
9 ответов
Стандартное соглашение
- project1
- ветви
- теги
- хобот
- project2
- ветви
- теги
- хобот
внутри одного репо. Поскольку это наиболее распространенное соглашение, некоторые инструменты просто ожидают, что ваши проекты будут размечены таким образом.
Какие проекты принадлежат, к какому репо относится скорее к суждению. Лично я бы начал с одного репо для всех проектов, управляемых одной и той же группой, например, командой, подразделением или компанией.
Ознакомьтесь с книгой о подрывной деятельности, в которой есть раздел " Рекомендуемая структура репозитория".
Я бы посмотрел на использование внешних. Если у вас есть много связанных проектов, которые все используют одну и ту же кодовую базу, но вы не хотите копировать эту кодовую базу в каждый репозиторий, установите внешнюю ссылку в каждом репозитории, чтобы указывать на общую кодовую базу.
Этот вопрос получает целый раздел в книге SVN. Я бы порекомендовал начать там и спрашивать обо всем, что не ясно или конкретно для вашего проекта.
root / trunk / projectfolders
корень / ветви / проектные папки
Таким образом, кто-то может получить все основные проекты без каких-либо веток, если это необходимо.
Как человек, который поддерживает большие репозитории SVN, позвольте мне сказать вам, НЕ используйте унифицированную магистраль. Все операции будут выполняться намного медленнее. Кроме того, извлечение одного проекта из большого репо не только утомительно и утомительно, но и приведет к космическим потерям, когда вы в конечном итоге захотите отделить даже один проект.
Используйте отдельные репозитории для каждого проекта с каталогами соединительных линий и тегов под репозиториями, и разработчики должны привязываться к другим проектам, используя внешние компоненты, как они были спроектированы.
Ленивый не является адекватной заменой организованным.
Для проектов, которые тесно связаны, я рекомендую:
root > branch > project
Таким образом, можно проверить одну ветку и получить весь код, текущий в этой ветке.
Мы настроили репозитории для каждого проекта, поэтому у каждого могут быть свои собственные ветки / теги и т. Д.
Кроме того, для взаимозависимых проектов вы можете настроить связанные репозитории, чтобы файлы могли быть общими. Это хорошо сработало для нас и оказалось достаточно гибким.
Я использую папку для каждого проекта, а затем разветвляется в каждой папке. Таким образом, если разные команды работают над каждым проектом, им не нужно видеть все дерево, а только свою ветвь.