36

我们有一个想要进行版本控制的 PHP 项目。现在,我们三个人正在开发该项目的开发版本,该版本位于一个外部文件夹中,我们所有的 Eclipse IDE 都链接到该文件夹​​中,因此没有版本控制。

对此进行版本控制的正确方法和最佳方法是什么?

我们设置了一个 SVN,但我们只需要找到一种很好的签入和签出方法,以便我们在开发服务器上进行测试。有任何想法吗?

4

8 回答 8

27

我们处于类似的情况,这就是我们最终做的事情:

  • 设置两个分支——发布和开发分支。
  • 对于开发分支,包括一个将存储库部署到开发服务器的提交后挂钩,以便您进行测试。
  • 准备好后,将更改合并到发布分支中。我还建议在那里部署一个提交后挂钩。

您还可以在他们的工作站上为每个团队成员设置单独的开发服务器。我发现它加快了速度,尽管您确实有更多的设置时间。

我们不得不使用单一的开发服务器,因为我们使用的是专有的 CMS 并且遇到了许可问题。所以我们的提交后挂钩是一个简单的 FTP 机器人。

于 2008-08-07T16:56:03.330 回答
5

这是我们所做的:

  • 每个开发人员都有一个配置为像我们的集成服务器一样的虚拟机
  • 集成服务器为 Trunk、每个用户提供空间,并为分支提供一些插槽
  • 生产服务器
  • 提交提交时,挂钩位于电子邮件的 Subversion 中

在项目开始时,用户创建一个分支并在他们的个人 VM 上检查它,并获取数据库的干净副本。他们做他们的工作,边做边做。

一旦他们在自己的个人空间中完成了所有工作,他们就会登录到集成服务器并检查他们的分支,运行他们的测试等。当所有通过他们的分支时,他们就会合并到 Trunk 中。

重建主干,运行全套测试,如果一切顺利,它会获得大的批准印章,在 SVN 中标记,并在晚上结束时提升到生产。

如果在任何时候其他人进行了提交,我们会收到一封电子邮件,并且可以将这些更改合并到我们的各个分支中。

于 2008-08-07T21:15:48.067 回答
3

Beanstalk具有内置的提交后挂钩,用于部署到开发、登台和生产服务器。

于 2008-08-08T18:17:23.550 回答
2

使用 subversion 进行 PHP 开发的一种方法是为一个或所有三个开发人员设置一个存储库,并使用这个存储库,更多地作为同步工具,而不是真正的版本控制。

你可以,

  • 做一个回购

  • 添加项目的整个 PHP 文档结构

  • 将此 repo 的副本签出到开发服务器上的正确位置

  • 使用 svn 钩子,在提交时激活

每当团队中的任何人签入任何代码时,此挂钩都会自动更新开发服务器的内容。

挂钩位于:

svn_dir/repo_name/hooks/post-commit

可能看起来像:

/usr/bin/svn up /path_to/webroot --username svn_user --password svn_pass

这会将您在开发服务器上的工作副本更新为最新的签入。

于 2008-08-07T17:04:14.220 回答
2

分发的东西呢?例如,您可以从 Mercurial 开始,尝试不同的工作流程,看看哪一个最适合您。

于 2010-03-17T21:09:37.787 回答
0

你们每个人都可以在本地运行它,也可以在自己的开发服务器上运行它(甚至是同一个具有不同端口的服务器......)。

于 2008-08-07T16:49:36.870 回答
0

一种可能的方法(可能有更好的方法):

你们每个人都应该有自己的签出版本的项目。

在您的计算机上拥有服务器的本地副本,并全天在那里对其进行测试。然后在每天(或任何时候)结束时,将准备测试的任何内容合并在一起,然后将其签出到开发服务器并进行测试。

于 2008-08-07T16:57:58.960 回答
0

另一个可用于构建的工具是TeamCity,它可免费用于 20 种构建配置(对于大多数小型公司/项目来说足够了)。这样您就可以运行测试以及安排构建。

于 2008-09-19T09:18:51.807 回答