版本控制/维护开发本地副本和工作实时副本和数据库

时间:2011-12-18 21:12:57

标签: database svn version-control controls

这是一个经常讨论的主题,但通过我的所有研究,我实际上并没有找到合理的答案。

我离线开发我的网站,然后通过我的主机帐户实时启动它们。

我使用codeigniter,在此基础上,我的离线和在线副本之间存在一些根本区别,即基本网址和数据库配置。因此,我不能简单地离线开发和测试我的网站,然后上传它们,因为它需要进行小的配置更改,这些更改很容易被忽视,很好地导致无法正常运行的网站。

另一个因素是,当我离线开发时,我可能会在创建一些功能时添加数据库表或列。当我将本地开发上传到我的主机时,它们通常不起作用,因为我忘记上传新的数据库结构。显然这不可能发生 - 没有任何机会可以破坏或破坏现场网站。

除此之外,我希望能够记录我的开发 - 版本控制的各种类型,如果我开发一个功能,然后其他东西停止工作,我可以很容易地向后看,至少看到代码可能导致变化的变化。

我的第四个要求如下:如果我在没有开发笔记本电脑的情况下去度假一周,然后得到错误报告,我无法修复它。如果我在实时副本上修复它,不仅危险,而且我不可避免地在我的本地副本上更新它 - 因此当我下次更新我的实时副本时,该更改将丢失。有没有办法在任何计算机上我都可以访问我的开发设置,编辑和测试,启动到实时网站,同时也提交它,使我的笔记本电脑本地副本是最新的。

所以是的..一般来说,我正在寻找一种解决方案,使我的开发过程更有效/更合适。有什么想法吗?

由于

2 个答案:

答案 0 :(得分:0)

  1. 不要只通过复制进行部署。使用脚本(我使用Apache Ant)进行部署,该脚本将自动为每个环境复制特定文件,替换某些值等。

  2. 这只需要严谨。在开发时制作待办事项列表,并检查服务器上的每个修改是否完成。您还可以在具有与生产服务器类似配置的预生产服务器上测试部署过程,确保一切正常,然后在生产服务器上应用相同的,经过测试的过程

  3. 只需使用版本控制系统即可。 SVN或Git是两个免费候选人。

  4. 让您的版本控制服务器随处可用。如果它是一个开源项目,则存在免费托管解决方案。当然,如果您没有可用的开发计算机,则必须检查整个项目,并可能安装一些工具以便能够开发,测试和部署。尽量让它变得尽可能简单,或者始终让您的笔记本电脑可用。如果您打算工作,请随身携带工具箱。如果你不打算工作,那就不要工作了。完成一些开发后,请提交到服务器。当您返回笔记本电脑时,请从服务器更新您的工作副本。

答案 1 :(得分:0)

对JB的补充和澄清

  1. 使用任何可以使用分支机构的VCS(以良好方式工作) - 您的本地和prod系统适用于单独的分支机构,在这些分支机构中,您可以共享公共代码但具有分支机构 - 具体配置。它需要在您的日常工作流程中进行一些更改(“test”中的代码,“prod”合并完成,部署/通过工具,而不是手动/ 仅在合并后 ...),但这是公平的价

  2. 再次更改工作流程。正如JB所说 - 不要手动部署,不要部署错误的分支,不要在完成合并之前部署“prod”。但是现在构建工具相当聪明,你可以在构建器

  3. 中检查这样的前置条件
  4. 只需使用VCS,也许DVCS会更好。我说Git作为第一个VCS有很强的“禁忌”,但即使没有它,你也有很多选择 - SVN(与DVCS比较糟糕的分支),Bazaar(不是我梦想的工具,但是,谁知道),Mercurial ,Fossil SCM,Monotone

  5. 不要在SCM之外进行实时工作,从不任何一个变更来源是开发者的快乐规则。或者根本不在空闲时间工作,或者总是可以为您启用代码库(免费代码托管/ GoogleCode,SourceForge,BitBucket,Github,Assembla,LaunchPad /或自己的服务器),根据需要获取,更改,保存,部署