在工作中,我们有一个安装了IIS和Subversion的Windows Server 2003.我们使用它来发布和测试我们的ASP.NET网站.每个程序员都在他的PC上安装了Tortoise,可以更新/提交内容到服务器.托管存储库工作正常.但是,保存在这些存储库中的文件需要复制到我们的本地IIS(虚拟目录).
将这些subversion存储库发布到本地IIS的简单方法是什么?
编辑:
感谢puetzk我添加了一个简单的bat文件,每次提交时都会执行(检查有关钩子的subversion文档).我的bat文件只包含:
echo off setlocal :: Localize the working copy where IIS points) pushd E:\wwwroot\yourapp\trunk :: Update your working copy svn update endlocal exit
puetzk.. 12
只需将Web服务器的文件区域保留为工作副本,并在需要"发布"时在其中执行svn.配置它以隐藏.svn文件夹的内容,如果它们看起来不整洁(我不知道如何做到这一点,但我认为可以这样做).他们已经有了文件系统隐藏位,这可能会解决这个问题.
如果你想要它真的自动(一旦有人提交就更新),使用SVN服务器上的post-commit钩子脚本启动第一个进程.
评论中的其他人建议使用导出而不是结帐.这也可以,并避免.svn杂乱,但有两个缺点.一,它必须每次都重新下载整个内容,而不仅仅是修改过的文件(因为它没有让.svn目录记住它有什么).如果你有很多文件,这将会慢很多.二,update以原子方式替换文件(在.svn/tmp中写入新版本,然后将其移动到位).导出时,导出会逐渐将文件写入目标.这意味着导出可能会向在错误时间浏览它的人提供不完整的文件.
只需将Web服务器的文件区域保留为工作副本,并在需要"发布"时在其中执行svn.配置它以隐藏.svn文件夹的内容,如果它们看起来不整洁(我不知道如何做到这一点,但我认为可以这样做).他们已经有了文件系统隐藏位,这可能会解决这个问题.
如果你想要它真的自动(一旦有人提交就更新),使用SVN服务器上的post-commit钩子脚本启动第一个进程.
评论中的其他人建议使用导出而不是结帐.这也可以,并避免.svn杂乱,但有两个缺点.一,它必须每次都重新下载整个内容,而不仅仅是修改过的文件(因为它没有让.svn目录记住它有什么).如果你有很多文件,这将会慢很多.二,update以原子方式替换文件(在.svn/tmp中写入新版本,然后将其移动到位).导出时,导出会逐渐将文件写入目标.这意味着导出可能会向在错误时间浏览它的人提供不完整的文件.
SVN不支持IIS; 但是,您可以将独立的svnserve服务器作为Windows服务运行.
有关于它的SVN常见问题解答条目,这篇关于Vertigo软件博客的博客文章也可能有所帮助.
更新:在您澄清之后,我看到您正在寻找的是一种在签入后自动更新服务器上的代码的方法.查看CruiseControl.NET,在查看了subversion集成教程之后看起来它应该做什么你要.
更新2:本教程描述了集成Subversion,CruiseControl.NET和Nant.