虽然这是一个老生常谈的问题,但答案仍然可以接受,但我认为仍然有另一个问题。
首先,让我先说一下,我认为“ 功能”并不是完成此任务的正确工具,而是应提出一套替代工具。
团队协作的先决条件是拥有一个临时服务器,用于测试与生产服务器分开的项目开发版本。所有开发代码都在登台服务器上进行测试,并且只有在稳定并准备好部署时才推送到生产服务器。但是,开发人员不能直接在登台服务器上工作。每个开发人员都在自己的工作站上工作,使用版本控制和源代码管理(SCM)将其工作与团队的其他成员协调。
SCM系统允许团队成员在代码的不同分支上并行工作,而不会互相干扰。为了测试目的,只有主分支部署在登台服务器上。
为了在生产,暂存和工作站之间镜像数据库,有一个名为“ 备份和迁移”的模块,如果您在共享主机上而不管理自己的数据库,则可以使用该模块。如果您要管理自己的数据库服务器,则这是该服务器上的唯一项目,并且使用mysql,以下命令对非常方便:
转储:
mysqldump --all-databases --opt -u root -p > DUMP.sql
恢复:
mysql -u root -p < DUMP.sql
如果您的数据库不是该服务器上唯一的数据库,请对仅转储数据库的某个版本的脚本mysqldump
(如果不使用mysql,则编写等效脚本)。
制定一个策略,使它是生产服务器上的主数据库。登台服务器和工作站应该是生产数据库的副本,反之亦然。
请注意,Drupal 7将其所有管理员设置保留在数据库中。这意味着在生产站点,登台站点和工作站之间镜像数据库将迁移没有功能的 admim设置。
现在,共享代码:
在开发团队的成员之间共享代码的标准方法是使用SCM系统。Drupal碰巧默认使用git这样的系统进行管理。
Git允许使用本地或远程存储库。如果团队成员位于相同的物理空间中,则可以在登台服务器上设置本地存储库。如果它们在地理上分布,则可以设置一个远程存储库。如果您不介意其他人对正在开发的代码具有读取权限,则可以使用Drupal.org上的沙箱作为远程存储库。您还可以在GitHub上使用项目区域。 GitHub不仅是一个存储库,而且还提供了一些协作工具,并允许公共和私有存储库。
基本上,SCM系统允许团队成员从团队成员共享的存储库中提取源代码和文档,并在对其进行处理后再次将其推回。SCM会跟踪更改,如果发生冲突(例如,有人试图推送不包含其他团队成员已进行的更改的代码),它将告诉您并提出解决此冲突的方法。
通常,通过与团队成员之间如何分配任务的亲切沟通,不会有冲突。但是,通过SCM系统跟踪事件,即使发生错误或通信失败,也可以解决冲突。
有很多关于git(GIYF)入门和使用的教程。我将推荐两个:git-scm网站和Scott Chacon的Pro Git。