我们计划在我们的项目中使用Git,这是一个grails应用程序在框架上有多个组件。我们计划将框架和每个组件保存在一个单独的存储库中。因此,根据客户要求,我们可以混合和匹配组件。组件不能单独运行它取决于框架。
采用以下示例,其中A和B是组件,F是框架,
F
/ \
A B
因此,当我们想要对组件进行一些更改时,我们需要获取组件A,它应该自动获取F(框架)。当我们对框架和组件进行更改时,这些更改都应该转到相应的存储库。
我查看了子模块,但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
+ 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
因此,组件文件夹结构和文件合并在一起以运行应用程序。
请提出解决此问题的方法。
答案 0 :(得分:4)
答案 1 :(得分:2)
这是git submodules的用途。
答案 2 :(得分:0)
关于您可以做的最好的事情是使用一个巨大的存储库。这不是很好,绝对不是git
的标准做法,但确实满足您的要求。
~/main
。为此,提交一些基本文件,可能是README,或者一个空的grails-app文件夹,或类似文件。 master
和framework
分支。master
的新分支。这些组件的任何开发都需要在这些分支上进行(或者需要对其历史进行修改以使其看起来像是这样)。~/project1
,~/project2
等)将克隆此存储库并使用master
分支来开发主项目。据推测,前几次提交将是git merge framework
和git merge component-x
之类的命令,以便将项目的所有要求都纳入master
。component-x
的任何改进都需要提交到component-x
分支。这样可以将改进推送回主存储库,然后从那里转移到其他项目中并合并到他们的master
分支中。同样,这主要是hackery,如果可能的话,使用子模块会更好。但似乎grails并不真的想要很好地发挥它。