颠覆Web开发

时间:2009-01-14 12:14:15

标签: svn apache htdocs

我已经阅读了很多关于Subversion并将信息推送到Web服务器的文章,但我仍然遇到了困难。

我可以理解有关创建存储库和签出等的基础知识,但我需要有关Web服务器部分的帮助。

我正在运行Apache,Subverion正在我正在开发的开发服务器上运行。

现在我在**htdocs**文件夹中创建我的存储库以及我的实时网络文档,还是在我的htdocs文件夹之外创建它。

一旦我拥有了我的存储库,我将新创建的存储库导入到我的实时Web文件夹中,这允许我将文件调用到我的本地计算机上进行编辑,然后将它们提交到开发服务器。

我想首先了解正确的方法,其次,如何自动将文件从新更新的存储库移动到实时网络文件夹?

请提出我长期以来一直在寻找的建议。感谢

修改

无论如何,你可以帮助我完成提交后的脚本,我想如果我能让它工作,我就能实现我的需要。

我希望能够在本地更改我的代码,然后在我完成提交后,将其发送到存储库,然后自动发送到htdocs文件夹。

7 个答案:

答案 0 :(得分:5)

存储库有一个标准的文件夹结构,通常至少包含一个“trunk”和“branch”文件夹。这是因为Subversion允许您创建一个分支(它从主干复制并允许并发提交),因此您可以处理您网站的“版本2”。

我个人不会在htdocs文件夹中创建你的repo,我会在那之外做。我认为一个好的结构可能是

repo
  - trunk
    - htdocs
  - branch
    - htdocs

通过这种方式,您可以控制存在于htdocs文件夹之外的库,这是主要Web系统中常见的停止公共访问私有库的内容。例如,Smarty通过将库放在htdocs文件夹上的一个目录来使用这种方法。

答案 1 :(得分:4)

此Stack Overflow问题接缝覆盖了您要执行的操作:How can I use post-commit hooks to copy committed files to a web directory from SVN?

答案 2 :(得分:2)

我不确定你要做的是什么,但SVN(源控制系统)和持续集成系统(如Cruise Control或Team City)之间存在分离。

您可以使用apache通过HTTP设置SVN,但这与将Web解决方案部署到实时服务器不同。

SVN中没有任何内容可以将您的解决方案自动部署到Web服务器。这需要使用自动构建和部署方案来完成,最好使用CI系统。

因此,您可以在每次提交时手动检出对部署文件夹的更改,也可以设置一个CI系统,为您检查它们,运行测试并每次都将它们部署到Web服务器是一个提交。

我已使用CC.NETTeam City来执行此操作;他们在一些设置下都能正常工作。

答案 3 :(得分:2)

我们在提交操作上挂起了提交后脚本,每次提交时都会将SVN的内容导出到Apache目录。放置代码的默认位置是我们的开发和测试站点。

使用提交中的可选注释,我们将导出到生产服务器。

答案 4 :(得分:1)

我发现在TortoiseSVN帮助(TSVN-PDF文件)中有大量问题的文档非常好。 这是我所有问题的起点以及如何使用SVN设置所有内容。 即使它是为windows编写的,它也描述了如何使用Apache等配置SVN ......

也许您不希望每次向存储库签入内容时都更新您的实时网站。 要更新存储库和实时网站,您可以使用构建脚本(如果您使用ASP.NET编写网站,可能使用NAnt。)

答案 5 :(得分:1)

您需要开始将Web服务器和SVN存储库看作两个完全不同的东西。 SVN只是存储文件,由您决定从存储库中将哪个文件版本放在您的网站目录中,以及在什么时间。

最常规的方法是在存储库中保留稳定版本(称为标记),可选地为这些标记提供版本号,然后确保始终导出最新标记并将其复制到您的网站目录中。通过这种方式执行回滚到早期版本非常容易。

答案 6 :(得分:0)

再说一遍......

您可以签出最新版本以更新服务器或执行导出。如果你结账,你将拥有所有可通过.svn目录访问的web访问目录,因此请确保使用适用于您的Web服务器的方法(例如Apache的.htaccess)隐藏那些目录,或者进行导出,这样就不会到处都有.svn目录。