PHP站点上的文件签出/版本控制

时间:2009-06-26 00:07:49

标签: php version-control

我意识到这个问题已被问过100次,但我找不到任何答案我的问题。

我们在多个地点有多个开发人员在同一个项目上工作。有些使用Windows,有些使用Mac,我们的服务器是Linux,每个开发人员使用不同的开发应用程序(Dreamweaver,Eclipse等)。每个开发人员都在自己的计算机上运行某种形式的Apache / PHP / MYSQL,其版本与我们的实时服务器相同。

在服务器上我们有live(bug free)站点和我们的测试站点(每个都有自己的mysql数据库)。一旦所有内容在我们的测试站点上正常运行,我们就会将修改后的文件复制到实际站点。

我们正在寻找的是

  • 某种方式允许开发人员“检出”测试网站上的文件,然后在他们完成工作后“签入”。

  • 我们希望能够记录结账的日期/时间并办理登机手续。

  • 我们还希望能够在完成测试后将选定的文件夹/文件复制到实际网站。

开发人员拥有不同程度的命令行知识,从无到有专家。

是否有可能是SVN的GUI版本?

我还应该补充一点,它不一定是免费选项,如果这些要求附带付费解决方案也可以。

任何信息都将受到赞赏。

6 个答案:

答案 0 :(得分:1)

有两种简单的技巧可以部署到“实时”网站:

1)在“实时”网站上使用SVN客户端查看您的软件。当有部署更改时,请运行SVN UPDATE命令。 (务必告诉您的网络服务器不要在.svn文件夹中提供文件!)

2)在“直播”网站上有两个根文件夹。什么时候部署,SVN EXPORT到第二个文件夹。在您的Web服务器配置中,将文档根目录更改为第二个文件夹,然后重新启动Web服务器。如果部署中存在一些无法预料的问题,只需切换回第一个文件夹即可。

一般来说,您希望开发人员仅在本地环境中测试他们的更改。当需要对完整产品进行测试时,请将“测试”服务器与“实时”服务器完全相同,理想情况下使用相同的部署方法。

找到一个脚本迷,可以为你自动完成所有部署,或使用像springloops.com这样的东西。从长远来看,消除手动部署过程可能会让你更快乐(凌晨3点,你认为你已经修复了最后的部署问题,所以你去睡觉。当你在下午12:30醒来并意识到你的网站有整个早上一直在下降......它发生了)。

对于GUI,使用scplugin for Mac OS X,TortoiseSVN for Windows。在Eclipse中,使用其中一个eclipse svn插件。

答案 1 :(得分:1)

Mac的其他SVN GUI选项包括VersionsCornerstone,两者都运行良好。如果有人使用Coda进行开发,它也内置了SVN支持。

问题的其他方面已经得到解答。

答案 2 :(得分:0)

SVN有很多GUI,是的,它可以让你解决你列出的许多问题。

Eclipse有SVN插件,Mac和PC客户端运行良好。几个月前我问了一个setup with graphic designers,并得到了一些有用的答案。

答案 3 :(得分:0)

你意识到这个问题已被问到很多。只需尝试任何主要的版本控制系统。 Subversion,Git,Mercurial,TFS,任何东西。他们都会为你想做的事而努力。

但是,“测试服务器”上的“中央存储库”的情况不一定适用;你只需要从中央服务器再次结账。

答案 4 :(得分:0)

正如acrosman指出的那样,有很多(开源)GUI工具(例如Tortoise,Subclipse(Eclipse),Subversive(Eclipse))。我认为Subversion永远不是一个糟糕的选择,并且可以使用在每次提交后运行的Hook脚本轻松地将当前的Head修订版导出到开发服务器。记录也以同样的方式工作。对我来说最烦人的部分是保持存储库中的测试数据库和配置文件一致。

答案 5 :(得分:0)

我们有以下设置......

多个办公室中的多个用户,每个办公室都运行Windows(使用Tortoise SVN)和WAMP或OSX(使用Syncro Subversion Client)。两个系统都有其他客户端,但我们选择了这些客户端。

每个人都可以访问我们的中央开发服务器。

当他们在本地系统上工作时,他们会定期检查SVN(开发)服务器的更新并获取更新。在开发服务器上,我们有一个脚本设置,每隔x分钟运行一次,检查到Web根目录(仅当有新的更新时)。该脚本还使用当前SVN版本号更新单个文件,然后我们在开发网站上显示该版本,以便每个人都知道正在运行的内容以及最近更新的时间。

它已经为我们工作了好几年,并且已被证明是最有帮助的。