2010-02-12 38 views
0

我最近刚开始越来越熟悉SVN,虽然它似乎是“正常”的代码开发非常简单,它让我有点困惑web开发时,正确使用SVN。如何开发一个Web应用程序

Web开发需要Web服务器直接与源进行交互以测试(通常很小且非常频繁的)更改,所以我猜项目的文档根目录应该是工作副本。但是每个用户都应该将他或她自己的工作副本合并并提交到存储库,然后再导出。当你不得不一遍又一遍地调整样式表来满足所有浏览器时,整个循环显然是不可行的。

用户显然不能在同一个工作副本上工作(这是svn的观点),并且您无法检出文档根中的不同工作副本以获取路径原因,那么使用svn和web的最佳方式是什么应用开发?每个用户都应该在客户机上安装一个webserver/php解释器吗?

回答

1

我一直都是这样做的,每个用户都有自己的webserver/php解释器,尽管你需要的是你自己的apachectl,它传递了用户特定的httpd.conf。然后每个用户需要自己的httpd.conf。所以你需要复制的是httpd.conf和apachectl,每个人都可以共享相同的apache安装。

2

总而言之,是的。

您的开发环境需要与生产环境分开。一旦你在你的机器上测试了一个变化,那么你可以将它提交给SVN。要查看他人所做的更改,请更新您的工作副本。

然后,当你想使一个版本中,您从SVN导出到生产服务器(或测试服务器QA一鼓作气上)。

+0

这不是他的问题,是吗?他的问题是如何处理整个团队中的多份工作副本。 –

+0

这就是我所说的;处理它的方法是让每个用户在他们自己的机器上测试修改,然后“公共”区域就是SVN仓库。我正在描述工作流程并回答“每个用户都应该在客户端机器上安装Web服务器/ php解释器?”的问题。 –

3

每个开发人员都有一个带有IDE,本地网络服务器和SVN客户端工具的工作站。 webapp在每个工作站中签出,以便开发人员可以将更改提交回购。

0

根据团队规模和结构,不会是在这种情况下明智的

  • 通过LAN在这种情况下,同一个工作拷贝工作,并聘请在操作系统级别
  • 文件明智锁定

  • 保持“工作”信息库,在其中所有的改变都非常频繁致力于让其他人可以更新他们的工作拷贝,一个“最后的”回购协议团队在一天结束时承诺的内容,还是达到某个预定义点?

脚本化的Web应用程序通常没有构建过程。想象一下,有人在CSS文件上工作,每隔几秒进行一次更改并在浏览器中检查出来。想象一下其他人正在处理相关的HTML文件,也是这样做的。

如果他们有自己独立的测试环境,他们将永远无法看到其他人的变化是如何与他们的工作体现。而且我知道如何在浏览器中调整一些CSS细节 - 可能需要几十个步骤,直到某些事情变得正确。根据团队的结构,这可能会导致交互非常繁琐。

如果我错了,随时纠正我,我没有在Web应用程序开发团队有很多SVN的经验。

+0

共享相同的工作副本是svn应该避免的事情之一,但在web dev中这似乎是很自然的事情。因此我怀疑。 –

+0

2-repository方法可能是最好的 - 一个让团队同步,一个做实际的提交。你的人只需要经常提交和更新。冲突将立即变得可见。尽管如此,我从来没有尝试过。 –

+0

当然,更新工作副本时,每个人都可以看到其他人的变化。没有构建过程的事实是无关紧要的。我看不到任何理由分享工作副本(不寒而栗)或有多个存储库。 –

1

Web开发与其他任何类型的源代码(如胖客户端)没有什么不同。他们都是一样的:

  • 开发人员签出一个版本的系统。
  • 他们对检出的内容进行更改。
  • 适当时(*)他们检查更改回存储库。
  • 事情经过测试(在某种程度上)
  • 接受更改。
  • 系统已签出(在其他地方),并用于升级生产。

开发的所有软件应该至少有三种不同的情况:

  • 发展(为每个开发人员)
  • 测试(每个测试组)
  • 生产

如果您直接将“开发”更改为生产副本,通常会被视为鲁莽。它看起来很快,但你并没有正确考虑“风险”(它会在某一天让你感到痛苦)。如果您只是在开发中的服务器开发人员之间共享Web服务器,那么您仍然在寻求麻烦。

每个开发实例都应该有自己的“完整”环境来工作。也就是说,每个开发人员都应该有自己的Web服务器,他们自己的源代码,他们自己的配置等。使用存储库将它们放在一起,这是其工作的一部分。发展结构应该尽可能接近测试和生产结构。它减少了安装过程中的错误。