我应该在项目中采购控制型模块吗?


7

有人告诉我,在开发过程中,我应该将所有控制权都sites/放入我的代码存储库(例如SVN)中。

假设我永远不会触及任何的contrib模块我使用(的ctoolsviews等等),但只能创建自己的主题,我还是应该这样做吗?

还是我应该只控制所有内容sites/all/themes/

谢谢

Answers:


10

在我的团队中,我们已经转移到仅采购特定于我们当前项目的东西。例如,如果使用的是Views,则将适当的条目添加到drush make -file中,并版本化that,而不是模块本身。

这给我们留下了一个非常小的存储库,其中包括特定于当前站点,当前主题和功能导出的任何自定义模块。

除非您绝对不能使用drush和drush make,否则我不明白为什么要在其他地方对版本进行良好控制的版本控制代码。而且,如果您打算破解其中一个模块,则应再次将其添加为子模块,而不要在自己的存储库中对代码进行版本控制。(我相信这在SVN中称为供应商分支)。

编辑:有关更多详细信息和更高级的设置,您可以查看以下存储库:git@github.com:letharion / Drupal-build-scripts.git脚本以bash编写,以支持我的团队工作流程,其中包括建筑物基本安装配置文件(NodeStream),然后是我们特定于站点的配置文件,每个配置文件的make文件,用于应用补丁或对各个构建步骤进行其他更改的钩子等。我希望我能有时间重新-在不久的将来将其编写为紧急扩展。


感谢您的详细说明。是的,我确实使用drush并计划尽可能地自动化。而且我不打算更改核心或贡献模块中的任何代码。
cherouvim 2012年

+1版本化make文件是一个好主意,想我以后再做吧;)
Clive

1
@Letharion我与多个开发人员同时开发同一个网站时,不太了解它的工作原理?AFAIK drush make总是下载所有依赖项并尝试覆盖站点/默认值,即使这些模块已经过D / L,或者是否有一些未记录的选项仅下载更新/新的模块?换句话说:我了解使用Drush make重新安装的好处,但是如何在分布式团队中使用它使模块依赖项保持同步?
Creynders

我已经使用这种方法已有一年多了,但是现在我在质疑,与与每天可能不会重新构建平台的其他开发人员合作时,将所有内容都存储在回购中是否真的更好?此外,这种方法与Acquia为其云托管构建存储库的方式并不完全兼容。
大卫·梅斯特

6

与@Letharion的答案相反,将某些内容放入SVN对某些组织来说是有意义的,而这实际上取决于您如何进行部署。如果您需要“回到过去”并查看网站的旧版本,则可以将contrib模块和主题放入SVN中。

当您怀疑contrib模块中的错误或看到不同的行为时,此示例很方便。能够从过去还原完整版本会有所帮助。

当我需要弄清楚客户端对站点做了什么时,我还发现在SVN中拥有完整的站点快照非常方便。我可以拍摄其版本的完整快照,并将其作为分支添加到SVN中进行比较。


为了及时返回,我还需要相应的完整数据库备份。因为某些设置和配置在数据库中。那正确吗?
cherouvim 2012年

是。备份和迁移模块和/或暂存存档备份是您的朋友。
mpdonadio

1
使用此方法,您可以从版本控制和备份中克隆整个安装,这对于开发或调试实时站点非常有用。
基思
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.