用SVN进行Web开发

我在我的服务器上运行VisualSVN服务器,并且在我的开发PC和我的服务器上都安装了TortoiseSVN。

我希望能够通过SVN推送更新到网站,而无需手动检查htdocs上的最新版本。

我如何在我的服务器上安装TortoiseSVN,当我提交新版本时,自动检出网站的最新版本?

我会build议看看CruiseControl.net ,然后configuration它如下:

  1. 创build一个不由IIS发布的工作副本(即只能从服务器上获得)。
  2. configurationCruiseControl.net从这个工作副本build立项目。
  3. 在CruiseControl.net中设置Post-Build事件(在成功的版本上)以导出到您发布的文件夹。

这有两个重要的影响:

  1. 非build筑svn修订版不能发布。
  2. 您的.SVN或_SVN目录将不会被发布。 理论上,有人可以在/.svn/text-base/your-filename.ext.svn-base中看看你的源代码。

有关设置CruiseControl.net和Subversion的信息:

  • 持续集成+ CruiseControl.Net + Subversion + MSBuild + .Net 2.0
  • CruiseControl.NET:Subversion Source Control Block

有关设置CruiseControl.net发布文件的信息:

  • CruiseControl.Net Build Publisher – 只发布编译的文件

有关设置CruiseControl.net以便在进行提交时触发的信息:

  • CruiseControl.Net Url触发器

如果您的Web服务器上安装了TortoiseSVN,请首先手动签出相关path,然后创build一个batch file(或者只是在2008年安排高级任务),包含以下内容(根据需要调整path):

"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:update /path:"C:\Inetpub\wwwroot\mysite" 

然后设定你需要的时间(5分钟,10分钟等)。

使用post-commit 钩子脚本 。

例如,这个post-commit.bat假定C:\ Inetpub \ Blah是一个工作副本,每次发生提交时都会更新它:

 pushd C:\Inetpub\Blah "C:\Program Files\VisualSVN\bin\svn.exe" update 

你可能必须做一个svn导出,因为隐藏的.snv / _svn目录包含这些文件的副本,如果这个站点没有被预编译,那真的会搞乱aspnet_compiler。 svn导出不会创build隐藏的直接命令。 如果你想编写脚本,你应该使用像SlikSvn这样的命令行访问你的Subversion版本库。 希望这可以帮助。