让我们不分步骤解释您想要做的事情:
- 开发人员正在编写发送到服务器的代码。
- 开发人员完成工作后,可以部署进行测试。
- 如果部署成功,开发人员可以提交他们的代码供其他人使用。
请注意,我没有提到分支。每个开发人员都可以使用一个分支,但没有真正的理由这样做。对于只有三名开发人员的情况,我不会为开发而分支。然而,有些人喜欢这种模式--尤其是如果他们习惯于Git和Gitflow。
您可能需要的是一些可以帮助您流程的工具。以下是两个您应该查看的免费且开源的工具:
Jenkins是一个持续集成工具。大多数人认为Jenkins是可以编译代码的地方,但是很可能您的开发环境不需要编译。
然而,Jenkins不仅可以编译代码。 Jenkins可以设置为在每次提交代码时自动
构建。或者,它可以设置为在特定时间或开发人员请求进行构建时
构建。或者,任何这些的组合。
即使您不编译,您可能希望执行自动化测试,Jenkins可以作为
构建过程的一部分执行这些测试--即使您实际上不编译代码。 Jenkins还可以存储
构建工件(例如您要部署的压缩文件),并可以通过按一个按钮来部署这些工件。
Jenkins有整套
插件可用于增强您的构建过程。
我不喜欢使用版本控制系统将文件部署到HTTP服务器。我发现使用Jenkins是控制部署的好方法。
我看过的大多数网站都没有良好的开发部署环境,有时甚至根本不存在。Vagrant是一种可以使用虚拟机模拟生产和测试环境的方法来轻松设置环境。每个开发者都可以拥有自己的一个暂存服务器,而不是只有一个暂存服务器。
您可以使用类似
VirtualBox的工具设置一个虚拟环境,使其看起来像您的暂存环境。一旦完成此操作,开发者可以下载Vagrant文件,并自动安装和启动暂存环境。这可以让开发人员在将代码提交到您的Subversion存储库之前测试其代码。
使用Vagrant在提交之前预先测试更改可能会简化您的流程。您可能需要三个分支(每个开发者一个)来允许每个开发者在您的暂存服务器上测试其代码。使用Vagrant,开发者可以在虚拟环境中进行暂存测试,而无需提交其更改,从而消除了分支的需求。
关于提交后挂钩呢?
post-commit钩子的问题在于它们会阻塞您的存储库,直到该post-commit钩子完成为止。想象一下,您的post-commit钩子将更改部署到服务器上。这个部署可能只需要十秒左右的时间,但这意味着每次有人将他们的代码提交到Subversion时,他们都要等待十秒左右。开发人员会对Subversion变慢感到不满,并且会减少提交次数。
使用像Jenkins这样的工具来完成您的post-commit工作(通过构建过程)意味着Subversion没有被绑定。此外,Jenkins可以使发生的事情更加可见。每个构建都有一个控制台,显示正在进行的操作。如果post-commit过程(Jenkins中的构建方式)失败,则可以检查日志。