2011-12-18 92 views
0

这是一个共同讨论的主题,但通过我所有的研究,我还没有找到一个合理的答案。版本控制/维护开发本地副本和工作活动副本和数据库

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

我利用codeigniter,并在此基础上,我的离线和在线副本之间存在一些根本区别,即基本URL和数据库配置。因此,我不能简单地离线开发和测试我的网站,然后上传它们,因为它需要小的配置更改,这些更改很容易被忽略,并且很好导致没有正常工作的网站。

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

此外,我希望能够有我的开发日志 - 版本控制的种类,如果我开发一个功能,然后别的东西停止工作,我可以很容易回头看,至少看到代码更改可能导致更改。

我的第四个要求如下:如果我没有开发笔记本电脑而放假一周,然后得到一个错误报告,我无法修复它。如果我在现场复制上修复它,不仅是危险的,而且我不可能在我的本地副本上更新它 - 因此,当我下次更新我的活动副本时,该更改将会丢失。有没有一种方法可以在任何计算机上访问我的开发设置,编辑和测试,启动到现场,同时还可以使我的笔记本电脑本地副本保持最新状态。

所以是的..一般在即时寻找一个解决方案,使我的开发过程更有效率/合适。有任何想法吗?

感谢

回答

0
  1. 不要被简单地复制部署。通过使用脚本进行部署(我使用Apache Ant),可以为每个环境自动化特定文件的副本,替换一些值等。

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

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

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

0

小补充和澄清,以JB

  1. 使用任何VCS,它可以工作(在方式)设有分公司 - 本地和督促系统是很好的候选人单独的分支,你在哪里共享公共代码,但具有分支特定的配置。这将需要在你的日常工作流程的一些变化(代码在“测试”,合并完成了“刺”,部署/通过工具,而不是手/ 只有合并后 ...),但它是公平的价格

  2. 再次更改工作流程。正如JB指出的那样 - 不要手动部署,不要部署错误的分支,在完成合并之前不要部署“prod”。但现在的构建工具相当聪明,你可以检查建设者内部的这种先决条件

  3. 只要使用VCS,也许DVCS会好一些。我说Git作为第一个VCS有很强的“No-no”,但是即使没有它,你也有很多选择 - SVN(与DVCS相比较差的分支),Bazaar(不是我梦想中的工具,但是,谁知道),Mercurial ,化石SCM,单调

  4. 不要在带电工作,从未做点儿外SCM。 变化的一个来源是一个快乐开发者的规则。或者根本不工作,或者让代码库始终可供您使用(免费代码托管/ GoogleCode,SourceForge,BitBucket,Github,Assembla,LaunchPad /或自己的服务器),根据需要获取,更改,保存,部署