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