Как организовать репозиторий Git

Я столкнулся со следующей проблемой, и у меня нет ответа на нее:

У нас есть репо, которое было клонировано из SVN репо. Проект, хранящийся в этом репо, представляет собой что-то вроде программного обеспечения платформы, которое используется различными проектами. Структура репо следующая:

platform
  |- core
  |- additional

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

Если проект хочет использовать платформу и добавить некоторые функции, он создает новая папка в additional , содержащая источники, и добавляет заголовок для этой функциональности в additional / includes

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

Сначала я имел в виду подмодули : сохранить платформу в качестве подмодуля под суперпроект (называется super ), а затем перейдите в super / platform / additional / mystuff , создайте там исходники и добавьте их в super .Но это явно не работает, потому что файлы находятся внутри подмодуля платформы .

Есть ли лучший способ организовать мое репо, чтобы:

  • пользователи платформы могли обновлять свои рабочая копия из центрального репозитория
  • И пользователи платформы могут применять исправления ошибок к репозиторию платформы
  • И проектов, использующих платформу don ' t испортить репо платформы ?

РЕДАКТИРОВАТЬ 1 : Сильно связанные подмодули git покрывают довольно немного моего сценария: тесно связанные вещи, я единственный, кто знает немного больше, чем абсолютные основы git: «Большинство разработчиков имеют лишь очень поверхностные знания о git». Идеальное совпадение!


РЕДАКТИРОВАТЬ 2 : Хотя ответ Майкла выглядит многообещающим, я думаю, что он слишком сложен для использования. Я ищу действительно простую вещь, которая не требует такого большого взаимодействия.

6
задан Community 23 May 2017 в 11:48
поделиться