我有四个Rails应用程序(还有更多)。他们分享:
我还有一堆与上述Rails应用程序交互的rabbitmq服务。
我正在试图找出如何理智地控制所有这些东西。现在,我将所有东西放在一个巨大的git存储库中,结构如下:
/sites/rails1 /sites/rails2 /sites/rails3 /services/service1 /services/service2 /services/service2 /lib/our_code /lib/common_js /lib/common_css /config/common_configuration_files
这是一种理智的方式吗?
如果我要将所有内容都分解为他们自己的git项目,那么每次更新共享gem / library / css文件(使用gems / bundler或其他任何东西)时,似乎很难单独更新每个项目。
在一个项目中拥有所有内容的不幸之处在于我无法在Heroku上轻松放置一个应用程序或服务。
可以在这里使用git子树合并帮助吗?也许每个站点/服务都是自己的分支?
答案 0 :(得分:2)
每个项目一个回购。共享的东西可以自己的回购。假设文件结构是常量,您可以使用软文件链接来包含这些目录。 Git会尊重这些软文件链接并检查它们,但不会在项目的repo中包含引用的目录。
拥有一个大型仓库会使您的仓库记录难以遵循,因为您将拥有与项目的语义划分无关的分支(即,进入Rails应用程序)。当然,如果你想弄清楚特定文件或目录的发生情况,那么所有的信息都是那里,但你的一般git log --name-status
将包含所有项目的信息, - 这是可取的,也很难过滤掉(没有在git上创建一个特殊的系统)。