经过一番研究,我们选择在下一个项目中与 Drupal 合作,我们是一个分布式团队。
由于 Drupal 将所有内容存储在数据库中(基于我们到目前为止所看到的),作为一个分布式团队,我们如何才能在这个项目上协同工作?我们应该采取哪些最佳实践?
我们考虑过使用共享数据库服务器来完成此任务,但它只会破坏我们启动此项目所需的性能。对此有什么建议吗?
杰里米的回答(+1)已经相当全面了。以下是一些其他更实用的建议没有特别的顺序.
免责声明:这对我有用。其他人可能有其他建议,甚至不同意。如果是这样的话,我会非常高兴听到反馈和替代/更好的建议!
强调每个团队成员都应该通过更新代码和数据库来开始他/她的会议。您可以通过组合轻松编写所有这些内容的脚本ssh
and rsync
命令。我有时会创建一个脚本(update-project.sh
),从存储库更新代码并立即从主服务器下载并导入最新的数据库。
永远不要忘记打电话http://example.com/update.php
每次更新代码时。每次提交后在暂存站点上运行此命令,并在每次更新/拉取/签出后在本地计算机上运行此命令。
通过 SQL 查询而不是使用 GUI 对数据库进行任何更改。这样你只需将该查询包装到一个hook_update_N()实施在你的你的模块.install文件,并且你是安全无害的(如果你遵守第 2 点!)[一些 gui 工具输出等价的......这也很方便!]。
只要有可能,请包含在hook_update_N()模块设置也发生变化。这并不总是可能的。如果不可能:请参阅第#7 点和第#8 点。
创建或修改视图时,完成后将其导出到文件。与第 3 点相同的原则,但适用于视图。顺便说一句,这种方法还有一个好处是提供回滚机制,以防您后来意识到自己犯了错误。
使用主存储库。不要选择太多的分布式版本控制系统。始终从同一个中央存储库拉取和推送代码。
始终在您的提交中包含评论。特别是如果某些代码更改更改了某些功能/API/通用逻辑,请务必在提交消息中包含警告。如果需要,可以将详细信息放入changelog.txt 文件中。
提交时,立即在主数据库上重现您尚未设法包含在您的数据库中的任何手工数据库更改。hook_update_N()
执行。如果您的团队成员按照#1 中所述开始他们的会议,那么这是必须的。
对版本控制下的内容要有选择性。例如:排除sites/default/settings.php
但评估哪些内容(如果有的话)需要进行版本控制sites/default/files
(开发需要图像吗?和附件?)。
有一些有用的贡献模块可以提供帮助。 Like 进出口,它允许您在存储库中管理您的 CCK 和视图或节点导出它允许您导出节点,然后将它们导入到另一个 drupal 安装中。
Use the 简单测试模块广泛地。这是一个good无论如何,想法,但是当在团队中工作时great想法:这样您就可以确保您的更改不会破坏其他人的工作。
玩得开心!我喜欢团队合作,并且我相信人们应该尽可能地尝试这样做。它更有趣,更多的学习,最重要的是......更好的代码! :)
加分点(并非特指团队发展):
-
尽量不要使用临时服务器来插入实际内容。理想情况下,您应该仅在代码以某种方式冻结或使用导入路由/模块时才开始创建内容:drupal 在表之间分散信息很多,并且钩子系统使得很难跟踪哪些模块在何处存储了哪些信息:如果您开发在具有真实数据的数据库上,您将不可避免地最终在某个时候破坏一些表,并且您可能只有在投入生产的前一天才意识到这一点。 :(
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)