团队的Drupal开发工作流

团队的Drupal开发工作流,drupal,Drupal,在我的上一个Drupal项目中,我们有5个人在编码和安装新模块,与我们的客户发布内容的类型相同。由于为了简单起见,我们只选择了一台服务器,因此有时需要许多人编写相同的文件,如style.css或page.tpl.php,或者有些人破坏了代码,使其他人无法工作 对于使用Drupal的团队来说,有什么最佳实践吗?如何利用代码存储库或沙盒?单个服务器可能会给您带来“简单性”,但正如您所经历的那样,它给您带来的是彻底的混乱——如果它没有导致令人不快的、难以复制的、难以修复的崩溃,您是幸运的。不要满足于一

在我的上一个Drupal项目中,我们有5个人在编码和安装新模块,与我们的客户发布内容的类型相同。由于为了简单起见,我们只选择了一台服务器,因此有时需要许多人编写相同的文件,如style.css或page.tpl.php,或者有些人破坏了代码,使其他人无法工作


对于使用Drupal的团队来说,有什么最佳实践吗?如何利用代码存储库或沙盒?

单个服务器可能会给您带来“简单性”,但正如您所经历的那样,它给您带来的是彻底的混乱——如果它没有导致令人不快的、难以复制的、难以修复的崩溃,您是幸运的。不要满足于一个“生产”服务器(在这里,您的客户机可以工作——仅在内容上——如果他们喜欢小风险;-)和一个“暂存”服务器(在升级到开发之前,开发团队的任何东西都要经过一段时间的测试和尝试,这是在一个安静且理想的预先安排的时间完成的)

第二,使用某种版本控制系统。哪一个比使用更重要:
svn
流行且简单,最新的时尚(出于良好的理由)是分布式的,例如
hg
git
,微软和其他公司在该领域有商业产品,等等

关键是,每当有人更新文件时,他们都是在自己的VCS客户机上进行更新的。当一组连贯的更改正确时,它会被推送到VCS,VCS会诊断并指出任何“冲突”(两个开发人员可能进行了相互矛盾的更改的地方),因此当前推送的开发人员负责编辑文件并在允许推送之前修复冲突。只有这样,“当前版本”才能在登台系统上进行更彻底(理想情况下是自动化的!)的测试(或者更好的是,一个“连续构建”系统)


基本上,正如您所观察到的,应对此类冲突应该有两层防御,而您似乎没有部署任何一层。它们都是必不可少的,但是,如果被迫只选择一个,我想我会不情愿地选择生产服务器和暂存服务器之间的区别——开发仍然是混乱的(与任何风投的简单坚固性相比,这是无法容忍的!),但至少不会直接伤害实际的服务系统;-)

这里有一篇关于Drupal中开发工作流的精彩文章。它总结了迄今为止的所有回应,并在等式中添加了“功能”、“强力武器”和其他一些技巧

很好的回答,作为Drupal项目的架构师,我想补充一点,Git真的应该支持它。我们一直在使用Subversion,它已经踢了我们好几次屁股。Drupal.org本身正在转向使用git,因此对于开发人员来说,这也是一个很好的步骤。是的,回答很好。这就是我在Drupal网站上合作的方式。我们目前使用Subversion,它工作得很好。在过去,我们没有使用暂存服务器。相反,我们只是在自己的机器上使用与生产服务器(相同的模块、相同的数据库)紧密匹配的Drupal安装进行开发。我们时不时地从生产服务器获取sql转储,以使内容与我们自己的安装保持同步。在我们的例子中,我们发现每个开发人员拥有自己的服务器非常有用。使用XAMPP和MAMP非常容易。这样,开发人员可以(暂时)完成破坏Drupal的操作,而不会给其他任何人带来问题。当代码看起来稳定时,它会被检入SubVersion并在登台服务器上进行测试(这类似于生产)。这听起来像是一个额外的步骤,一个额外的复杂层次,但我们确实发现它工作得很好。@Graham,+1,我同意你的做法更好——我没有意识到这“非常容易做到”(过去为我做这件事的系统操作人员让这听起来像是他们做了很多工作!)这就是为什么我没有把推荐它作为第一个改进。