适用于Drupal项目的小型分布式团队的最佳实践是什么?

时间:2009-11-30 17:06:13

标签: drupal distributed

经过一些研究,我们选择在下一个项目上与Drupal合作,我们是一个分布式团队。

由于Drupal存储(基于我们迄今为止所看到的)所有内容都存储在数据库中,作为一个分布式团队,我们如何在这个项目上一起工作?我们应该采取哪些最佳做法?

我们考虑过使用共享数据库服务器完成此任务,但它只会破坏我们为实现此项目所需的性能。有关于此的任何建议吗?

4 个答案:

答案 0 :(得分:7)

杰里米的回答(+1)已经非常全面了。在无特定顺序中还有一些更实用的建议。

免责声明: 这对我有用。其他人可能有其他建议甚至不同意。如果是这种情况,我会非常高兴听到反馈和备用/更好的建议!

  1. 指出每个团队成员都应该通过更新代码和数据库来开始他/她的会话。您可以使用sshrsync的组合轻松编写所有这些内容。 update-project.sh个命令。我有时会创建一个脚本(http://example.com/update.php)来更新存储库中的代码,并立即下载并从主服务器导入最新的数据库。

  2. 每次更新代码时都不要忘记调用hook_update_N()每次提交后在登台网站上运行此命令,并在每次更新后在本地计算机上运行此命令/拉/结帐。

  3. 通过SQL查询对数据库进行任何更改,而不是使用GUI。这样您只需将查询包装到<{3}}实现中< em> yourmodule.install 文件,你安全无恙(如果你遵守#2点!)[有些gui工具输出相当于......那也很方便!]。

  4. 尽可能在hook_update_N()中添加对模块设置的更改。这种情况始终无法实现。如果不可能:请参阅第7点和第8点。

  5. 创建或修改视图时,请在完成后将其导出到文件中。与第3点相同但应用于视图的原则相同。顺便说一下,这种方法也有提供回滚机制的好处,以防你后来发现自己犯了错误。

  6. 使用主存储库。不要使用过多的分布式版本控制系统。始终从同一个中央仓库中拉出并推送您的代码。

  7. 始终在您的提交中包含注释。特别是如果某些代码更改更改了某些功能/ API /公共逻辑,请在提交消息中包含警告。如果需要,可以将详细信息放入changelog.txt文件中。

  8. 提交时,立即在主数据库中重现您未在sites/default/settings.php实施中设置的任何手工制作的数据库更改。如果您的团队成员开始他们的会议,如#1中所述。

  9. 选择您在版本控制下的内容。例如:排除sites/default/files,但要评估{{1}中需要版本化的内容(如果有的话) (开发和附件所需的图像?)。

  10. 有一些有用的贡献模块可以提供帮助。hook_update_N()类似,它允许您在存储库中管理您的CCK和视图或允许import/export您可以导出节点,然后在另一个drupal安装中将它们导回。

  11. 广泛使用node export无论如何这是一个的想法,但在团队中工作时很棒想法:这样你就可以确定你的改变没有破坏别人的工作。

  12. 玩得开心!我喜欢在团队中工作,我相信每次他/她都应该尝试这样做。它更有趣,更多学习,最重要的是......更好的代码! :)

  13. 奖励积分(具体指团队发展):

    • 尽量不要使用您的临时服务器进行实际内容插入。理想情况下,只有在代码以某种方式冻结或使用导入路由/模块时才应开始创建内容:drupal在表格中散布信息很多并且钩子系统很难跟踪哪些模块存储了哪些信息:如果你在具有真实数据的数据库上开发,你将不可避免地在某些时候打破一些表,你可能会意识到只有前一天投入生产。 :(

答案 1 :(得分:5)

首先,最佳做法。

您应该始终将您的实时数据库视为主数据库。您可以使用数据库转储来获取此分布式团队的每个成员的实时数据库。这可以确保团队中的每个成员都在同一个基地工作。

您应该使用版本控制系统来共享您的代码,这样您就可以使用相同的代码库,但可以控制何时合并代码。

在开发人员之间共享数据库,或者在开发人员之间共享代码库会引起混淆,应该避免。

现在有更多基于意见的想法

应在实时服务器上创建和编辑您网站的内容。

您应该以托管,可重复的方式发布代码。理想情况下,您应该有一个临时服务器,以便在代码上线之前对其进行测试。

棘手的部分是内容和配置更改。我主张这些应该在虚拟模块中的更新功能中完成。然而,有时这很难做到,或者在某些情况下无法可靠地进行更改。因此应该保持平衡,大多数配置更改应该在代码中完成,因此它们是可重复的,并且可以轻松地在开发人员之间分配。但是对于不易编码的配置更改,或者在发布窗口之外需要的配置更改,您可以直接在实时服务器上进行更改。重要的是,您可以使您的代码和数据库在开发和实时之间保持一致状态。

答案 2 :(得分:1)

Simpletest是一个非常宝贵的工具,因为正在开发模块“A”的开发人员可以运行测试套件并确保他/她没有破坏模块“B”然后提交(例如)。请参阅Simpletest模块和Selenium IDE。测试驱动的开发以多种方式得到回报。开发人员获得信心,可以更快/更好地工作。

一些好的问题跟踪器和/或项目管理软件可以集中所有项目信息,并促进开发人员之间的通信。维基也很好。项目经理和个人开发人员之间的电子邮件不会让每个人都处于循环中,并且可能会在嘈杂的电子邮件环境中及时迷失。

我喜欢分布式项目的开发人员聊天室。实时聊天非常方便。某些版本控制可以将提交消息写入聊天室。

backup_migrate模块可以方便地从生产服务器上获取最新的数据库夹具。当然你可以通过mysqldump等导出,但是这个小模块是没脑子的。

检查doxygen。强制您的开发人员写入该格式。并注意drupal编码标准。有一个名为“编码器”的模块可以检查它。

答案 3 :(得分:0)

我看到这是一篇关于Drupal配置管理的老帖子。 目前在2013年,我肯定会建议您使用功能模块。这允许您在代码中放置配置并使用版本控制(我建议使用git)在您的环境中传递文件。 有一些警告,但它在大多数情况下都有效。对于警告,使用接受的答案中提到的提示将有助于缓解混淆