2009-10-11 65 views
0

我基本上对如何将最新文件导出到我的web服务器感到困惑。 我与其他3名开发人员一起工作,所以颠覆​​是必须的。我们喜欢Subversion允许多个用户编辑同一个文件的想法。颠覆集成web服务器的web开发

Pushing from subversion to web server

这家伙说,使用SVN出口,但不会是messup如果多人在同一时间提交。我可以用提交钩子脚本来做些什么吗?

+0

你是什么东西“搞乱向上”,因为多个人犯一次是什么意思? – ctford 2009-10-11 15:45:55

回答

0

如果您只想将个人更改导出到您自己的服务器,那么您应该在单独的分支上开发其他开发人员。将分支导出到本地服务器,然后在准备好分享更改时合并分支。

但是,如果可行的话,我会鼓励你们在同一分支上工作,因为你拖延时间越长,合并的痛苦就越多。

这是否回答你的问题?

1

SVN导出会抓取当前版本的存储库(或者,如果您指定了特定版本)并将其放到本地文件系统上,使其实际上不受版本控制。这意味着,如果您执行导出操作,则不能随后从该导出目录执行签入操作(因为它缺少与中央SVN回购站交谈所需的.svn文件夹)。

您可以创建一个post-commit挂钩来为您自动执行此过程 - 这样Web服务器始终拥有最新版本的存储库。人们“同时提交”并不重要,因为SVN将其视为原子操作。最终,您将最终获得Web服务器上的最新版本。

这可能会有问题 - 如果有人引入了一个问题,或一个错误,或者没有做出最新的自己并因此搞砸了某些东西,那么这会自动推送到您的网络服务器。由于显而易见的原因,这种类型的东西可以避免生产Web服务器 - 但真正归结为您自己的需求。

根据您的开发环境和web服务器环境,您可能也会看到类似Capistrano的东西。如果你在Windows下工作,它可能会成为一个负担,而如果你的网络服务器也是Windows,这几乎是不可能的。但是,如果/当你确实得到它的设置,它会很棒 - 它将处理所有的“通过ssh连接,cd到正确的目录,导出”以及任何你想为部署自动化的任务。

+0

你说这可能会导致问题,如果你没有做到最新自己 但我想颠覆会告诉你,你的文件已过时如果有人已经提交了相同的文件之前你 – Ageis 2009-10-11 16:32:26

+0

SVN会抱怨,如果你尝试检入中央服务器上具有较新版本的文件。如果您正在检入中央服务器上未更改的文件,它将*不*投诉。但是,这不*意味着没有重大变化。您可以想象,对于某个网站,某人更改了您所依赖的JavaScript或CSS文件,以便您的更新能够正常工作。或者对于诸如ASP.NET,Ruby on Rails等Web应用程序,如果您依赖另一个过期的文件中的某些内容,则它们还具有其他依赖关系,可能导致网站完全失败。 – Matt 2009-10-11 16:45:44

0

我会使用CruiseControl来建立你的项目。你可以有你的SVN主干和一个生产分支。当有人检入后备箱时,可以自动建立一个dev.domain.com站点,然后当你签入生产分支时,让它自动建立该站点。如果您在生产中遇到问题,它还可以让您轻松回滚。

http://cruisecontrol.sourceforge.net/