版本控制PHP Web项目
我们有一个要进行版本控制的PHP项目。现在,我们三个人正在开发该项目的开发版本,该版本位于所有Eclipse IDE都链接到的外部文件夹中,因此没有版本控制。
什么是版本控制的正确方法和最佳方法?
我们已经设置了SVN,但是我们只需要找到一种签入和签出的好方法,就可以在开发服务器上进行测试。有任何想法吗?
解决方案
回答
你们每个人都可以在本地运行,也可以在自己的开发服务器上运行(甚至可以在具有不同端口的同一台服务器上运行它)。
回答
我们处于类似的情况,这就是我们最终要做的事情:
- 设置两个分支-发布和开发分支。
- 对于开发分支,请包括一个提交后钩子,该钩子将存储库部署到开发服务器,以便我们进行测试。
- 准备就绪后,将更改合并到发行分支中。我还建议我们放入一个提交后挂钩,以在那里进行部署。
我们还可以在他们的工作站上为每个团队成员设置单独的开发服务器。我发现它可以加快速度,尽管我们确实需要更多的设置时间。
我们必须使用单个开发服务器,因为我们使用的是专有CMS,并遇到了许可问题。因此,我们的提交后挂钩是一个简单的FTP bot。
回答
一种可能的方法(可能有更好的方法):
你们每个人都应该有自己的项目的签出版本。
在计算机上拥有服务器的本地副本,并在一整天内对其进行测试。然后,在每一天(或者任何时候)结束时,将准备好要测试的所有内容合并在一起,然后将其检出到开发服务器上并进行测试。
回答
使用Subversion进行PHP开发的一种方法是为一个或者所有三个开发人员设置一个存储库,并使用该存储库而不是真正的版本控制,更多地用作同步工具。
你可以,
- 进行回购
- 添加项目的整个PHP文档结构
- 将此仓库的副本检出到开发服务器上的正确位置
- 使用svn钩子,在提交时激活
每当团队中的任何人检入任何代码时,该钩子都会自动更新开发服务器的内容。
挂钩位于:
svn_dir/repo_name/hooks/post-commit
可能看起来像:
/usr/bin/svn up /path_to/webroot --username svn_user --password svn_pass
这会将我们在开发服务器上的工作副本更新为最新的签入。
回答
这是我们的工作:
- 每个开发人员都有一个虚拟机,该虚拟机的配置类似于我们的集成服务器
- 集成服务器具有用于Trunk,每个用户的空间,以及一些用于分支的插槽
- 生产服务器
- 提交后,钩子位于Subversion的电子邮件中
在项目开始时,用户创建一个分支,并在其个人VM上签出该分支,并获取数据库的干净副本。他们努力工作,随心所欲。
一旦他们完成了自己个人空间中的所有操作,便会登录到集成服务器并检出其分支,运行测试等。当所有通过其分支的内容合并到Trunk中。
重建了Trunk,运行了全套测试,如果一切顺利,它会获得批准,并用SVN标签,并在深夜升级为Production。
如果在任何时候做出了其他人的提交,我们都会收到一封电子邮件,并将这些更改合并到我们的各个分支中。
回答
Beanstalk具有内置的提交后挂钩,用于部署到开发,登台和生产服务器。
回答
可以用于构建的另一个工具是TeamCity,它可免费用于20种构建配置(对于大多数小型公司/项目来说足够了。)通过这种方式,我们可以运行测试以及安排构建。
回答
那分发的东西呢?例如,我们可以从Mercurial开始,尝试不同的工作流程,然后查看最适合工作流程。