Multiple Git репозиторий - PullRequest
       0

Multiple Git репозиторий

0 голосов
/ 03 августа 2011

Мы планируем использовать Git для нашего проекта, который представляет собой приложение Grails, имеющее несколько компонентов на платформе. Мы планировали хранить фреймворк и каждый компонент в отдельном репозитории. ТАК, что в зависимости от требований заказчика мы можем смешивать и подбирать компоненты. Компоненты не могут работать самостоятельно, это зависит от среды.

Возьмите приведенный ниже пример, где A и B - это компоненты, а F - это платформа

     F
   /  \
  A    B

Таким образом, когда каждый из нас хочет внести некоторые изменения в компонент, нам нужно выбрать компонент A, и он должен автоматически выбрать F (Framework). Когда мы вносим изменения в каркас и компонент, оба изменения должны идти в соответствующий репозиторий.

Я изучил подмодули, но структура каталога, используемая в приложении grails, не подходит. Файлы приложений, как показано ниже,

Component
    + grails-app
       + conf                 ---> location of configuration artifacts 
           + hibernate        ---> optional hibernate config
           + spring           ---> optional spring config
       + controllers          ---> location of controller artifacts
       + domain               ---> location of domain classes
       + i18n                 ---> location of message bundles for i18n
       + services             ---> location of services
       + taglib               ---> location of tag libraries
       + util                 ---> location of special utility classes 
       + views                ---> location of views
           + layouts          ---> location of layouts

За этой структурой каталогов следуют все компоненты, а также структура. У Framework, который является основным проектом, есть еще один файл, как показано ниже,

Framework
    + grails-app
       + conf                 ---> location of configuration artifacts 
           + hibernate        ---> optional hibernate config
           + spring           ---> optional spring config
       + controllers          ---> location of controller artifacts
       + domain               ---> location of domain classes
       + i18n                 ---> location of message bundles for i18n
       + services             ---> location of services
       + taglib               ---> location of tag libraries
       + util                 ---> location of special utility classes 
       + views                ---> location of views
           + layouts          ---> location of layouts
   + lib
   + scripts                  ---> scripts
   + src
       + groovy               ---> optional; location for Groovy source files
                                   (of types other than those in grails-app/*)
       + java                 ---> optional; location for Java source files
   + test                     ---> generated test classes
   + web-app
       + WEB-INF

Таким образом, структура папки компонента и файлы объединяются для запуска приложения.

Пожалуйста, предложите решение этой проблемы.

Ответы [ 3 ]

4 голосов
/ 03 августа 2011

Взгляните на подмодуль git .

2 голосов
/ 03 августа 2011

Это то, для чего нужны подмодули git .

0 голосов
/ 04 августа 2011

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

  • Начните с нового репозитория, скажем ~/main.Для этого зафиксируйте некоторые базовые файлы, например README, или пустую папку приложения grails, или подобное.
  • Создайте ветку, а затем зафиксируйте вашу структуру.Теперь у вас есть две ветви и почти пустая ветвь master и ветвь framework. 1010 *
  • Создайте новую ветвь с master для каждого компонента.Любая разработка этих компонентов должна осуществляться в этих ветвях (или их история должна быть искажена, чтобы она выглядела так, как она была).
  • Каждый новый проект (~/project1, ~/project2 и т. Д.)будет клонировать этот репозиторий и использовать ветку master для разработки основного проекта.Предположительно, первые несколько коммитов будут такими командами, как git merge framework и git merge component-x, чтобы передать все требования для проекта в master.
  • Любые улучшения component-x необходимо будет зафиксировать в component-x ветка.Это позволяет откатывать улучшения обратно в главный репозиторий, а затем извлекать их оттуда в другие проекты и объединять в их master ветки.

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

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