在工作中,我们安装了一个带有IIS和Subversion的Windows Server 2003。我们使用它在本地发布和测试 我们的ASP.NET网站。每个程序员都在他的PC上安装了Tortoise,可以更新/提交内容到服务器。托管存储库工作正常。 但是,保存在这些存储库中的文件需要复制到我们的本地IIS(虚拟目录)。

将这些subversion存储库发布到本地IIS的简单方法是什么?

编辑:结果 感谢 puetzk ,我添加了一个简单的bat文件,每次提交时都会执行(检查颠覆文档关于钩子)。我的bat文件只包含:

echo off
setlocal

:: Localize the working copy where IIS points)
pushd E:\wwwroot\yourapp\trunk
:: Update your working copy
svn update

endlocal
exit
有帮助吗?

解决方案

  1. 只需将Web服务器的文件区域保留为工作副本,并在需要“发布”时在其中执行svn。配置它以隐藏.svn文件夹的内容,如果它们看起来不整洁(我不知道如何做到这一点,但我认为可以这样做)。他们已经有了文件系统隐藏位,这可能会解决这个问题。

  2. 如果你想要它真的自动(一旦有人提交就更新),在SVN服务器上使用post-commit钩子脚本开始第一个过程。

  3. 评论中的其他人建议使用导出而不是结帐。这也可以,并避免.svn杂乱,但有两个缺点。一,它必须每次都重新下载整个内容,而不仅仅是修改过的文件(因为它没有让.svn目录记住它有什么)。如果你有很多文件,这将会慢很多。二,update以原子方式替换文件(在.svn / tmp中写入新版本,然后将其移动到位)。导出时,导出会逐渐将文件写入目标。这意味着导出可能会向在错误时间浏览它的人提供不完整的文件。

其他提示

SVN不支持IIS;但是你可以将独立的svnserve服务器作为Windows服务运行

有关于它的 SVN常见问题解答条目,以及此博客发布在 Vertigo Software blog 上也可能会有所帮助。

更新: 在您澄清之后,我发现您正在寻找的是一种在签入后自动更新服务器上的代码的方法。查看 CruiseControl.NET ,看了 subversion集成教程它看起来应该做你想做的事。

更新2:本教程描述整合Subversion,CruiseControl.NET和Nant

也许SVNIsapi可以解决问题( http://www.svnisapi.com )。因为它只使用IIS安装,因此您不需要APACHE服务器或SVNSERVER服务。其次,应该可以将ASP.NET ISAPI插件堆叠到SVNISAPI的处理上,以便在从存储库读取后解释ASP.NET(.aspx)页面。

干杯 保罗

使用可以使用免费的 Visual-SVN Server 快速安装带有Apache前端的Subversion。它还有一个很好的MMC管理单元,用于管理服务器和存储库。

您将无法使用HTTP或HTTPS访问subversion,但端口号必须与本地IIS使用的端口号不同(Visual-SVN服务器的默认端口为8080)。

如果您确实需要使用本地IIS端口80访问存储库,可以尝试 SVN-IIS 充当IIS和Apache之间的桥梁。我自己没试过这个。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top