使用 SVN 进行 Web 开发

使用 SVN 进行 Web 开发

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

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

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

答案1

我建议你看看CruiseControl.net,然后按如下方式配置:

  1. 创建未由 IIS 发布的工作副本(即,仅可从服务器获得)。
  2. 配置 CruiseControl.net 以从该工作副本构建项目。
  3. 在 CruiseControl.net 中设置 Post-Build 事件(在成功构建时)以导出到您的已发布文件夹。

这有两个重要作用:

  1. 未构建的 svn-revision 无法发布。
  2. 您的 .SVN 或 _SVN 目录将不会被发布。理论上,有人可能会来查看 /.svn/text-base/your-filename.ext.svn-base 中的源代码。

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

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

有关设置 CruiseControl.net 在您提交时触发的信息:

答案2

如果您的 Web 服务器上安装了 TortoiseSVN,请首先手动签出相关路径,然后创建一个批处理文件(或者如果在 2008 上则只需安排一个高级任务),其中包含以下内容(根据需要调整路径):

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

然后设置您需要的时间(5 分钟、10 分钟等)。

答案3

使用后提交钩子脚本

例如提交后脚本假设目录:\Inetpub\Blah是一个工作副本,每次提交时都会更新它:

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

答案4

您可能必须执行 svn 导出,因为隐藏的 .snv/_svn 目录包含文件的副本,如果站点未预编译,则 aspnet_compiler 会非常混乱。svn 导出不会创建隐藏目录。如果您想编写脚本,则应使用 SlikSvn 之类的工具,它可让您通过命令行访问 Subversion 存储库。希望这对您有所帮助。

相关内容