Web开发;没有服务器源代码控制支持


Web development; no server source control support

我正在使用CodeIgniter PHP框架开发web应用程序。我正在使用的服务器不支持任何类型的源代码控制(例如Subversion),除非你去更高的价格层。

我仍然想把代码在某种形式的源代码控制。这样做有意义吗?

  1. 在本地机器上安装git或SVN并在那里开发
  2. 将更改从我的本地机器复制到服务器上的开发目录(使用FileZilla, WinSCP等)并测试
  3. 将更改从开发目录复制到服务器上的生产目录

听起来合理吗?有没有更好的选择?谢谢!

如果您在本地使用svn,这有点危险,因为您需要保护您的计算机-我认为最好的方法是与提供完全支持svn/git的商业站点合作-例如http://www.beanstalkapp.com/或http://www.github.com

您可以在本地机器(SVN, Git等)上使用源代码控制,并使用Capistrano等开源工具通过SSH将代码从本地源代码控制库部署到服务器。或者,如果您仅限于FTP,这篇博客文章有一个潜在的解决方案。

使用像Capistrano这样的工具,而不是直接通过FileZilla或WinSCP将本地机器上的文件镜像到服务器上的一个优点是,Capistrano将版本您已部署的文件,因此,如果您最终破坏了某些内容并需要快速回滚到以前部署的版本,它可以像更改到以前部署目录的符号链接一样简单。

听起来合理吗?

部分地,在p.1。但即使在这种情况下,我还是建议你把你的存储库也放在一些存储库托管(BitBucket, GitHub, Assembla)

对于pp. 2-3:你的部署必须是自动的和非交互式的,因此——你必须选择另一个工具(用于在提交后钩子的SCM-of-choice)

更好的替代2-3可能是:

  • 使用两个不同的分支(DEVEL和PROD)作为DEVEL和PROD的源目录
  • Post-commit钩子,它将仅在提交的修订文件中更改的上载到相应的目录(FTP为NCFTP, ssh为SCP with scenario)
  • 主要开发发生在DEVEL分支
  • PROD有只从DEVEL合并

工作流与scm无关,可扩展到任何合理数量的分支和开发人员