如何将Subversion存储库发布到本地IIS?
在工作中,我们有安装了IIS和Subversion的Windows Server 2003. 我们使用它在本地发布和测试
我们的ASP.NET网站。每个程序员都在其PC上安装了Tortoise,并且可以将内容更新/提交到服务器。托管存储库工作正常。
但是保存在这些存储库中的文件然后需要复制到我们的本地IIS(虚拟目录)中。
将这些Subversion存储库发布到本地IIS的简便方法是什么?
编辑:
多亏了puetzk,我添加了一个简单的bat文件,该文件在每次提交时都会执行(请查看有关钩子的Subversion文档)。我的蝙蝠文件仅包含:
echo off setlocal :: Localize the working copy where IIS points) pushd E:\wwwroot\yourapp\trunk :: Update your working copy svn update endlocal exit
解决方案
SVN不支持IIS。但是,我们可以将独立的svnserve服务器作为Windows服务运行。
有关于它的SVN FAQ条目,此在Vertigo Software博客上的博客文章也可能会有所帮助。
更新:
澄清之后,我发现我们所寻找的是一种在签入后自动更新服务器上代码的方法。查看CruiseControl.NET,在查看Subversion集成教程之后,它看起来应该按照我们想要的去做。
更新2:本教程介绍了Subversion,CruiseControl.NET和Nant的集成。
- 只需将Web服务器的文件区域保留为工作副本,并在需要"发布"时在其中执行svn。配置它以隐藏.svn文件夹中的内容(如果我们觉得它们不整洁的话)(我不知道该怎么做,但是我认为可以做到)。他们将已经具有文件系统隐藏位,可以解决此问题。
- 如果我们希望它真的是自动的(有人提交后立即更新),请使用SVN服务器上的提交后挂接脚本启动第一个过程。
评论中的其他建议使用导出而不是签出。这也可以工作,并且避免了.svn混乱,但是有两个缺点。第一,它每次都必须重新下载全部内容,而不仅仅是重新下载修改过的文件(因为它没有保留.svn目录来记住它所包含的内容)。如果我们有很多文件,则速度会慢很多。二,更新以原子方式替换文件(将新版本写入.svn / tmp,然后将其移动到位)。导出会在下载文件时逐渐将文件写入目标位置。这意味着导出可能会将不完整的文件传递给在错误的时间浏览文件的人。
使用可以使用免费的Visual-SVN服务器快速在Apache前端安装Subversion。它还具有一个不错的MMC管理单元,用于管理服务器和存储库。
我们将能够使用HTTP或者HTTPS访问Subversion,但端口号必须与本地IIS使用的端口号不同(Visual-SVN服务器的默认端口为8080)。
如果确实需要使用本地IIS端口80访问存储库,则可以尝试SVN-IIS,它充当IIS和Apache之间的桥梁。我自己还没有尝试过这个。
也许SVNIsapi可以解决此问题(http://www.svnisapi.com)。因为它仅利用IIS安装,因此我们不需要APACHE服务器或者SVNSERVER服务。其次,应该有可能将ASP.NET ISAPI插件堆叠到SVNISAPI的处理过程中,以便从存储库中读取后将解释ASP.NET(.aspx)页。
干杯
保罗