4

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

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

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

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

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

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

请任何我一直在寻找的建议。谢谢

编辑

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

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

4

7 回答 7

5

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

就个人而言,我不会在 htdocs 文件夹中创建您的 repo,我会在此之外进行。我认为一个好的结构可能是

repo
  - trunk
    - htdocs
  - branch
    - htdocs

这样您就可以控制存在于 htdocs 文件夹之外的库,这在主要的 Web 系统中很常见,可以阻止对私有库的公共访问。例如,Smarty 通过将库放置在 htdocs 文件夹上方的一个目录来采用这种方法。

于 2009-01-14T12:20:49.030 回答
4

这个 Stack Overflow 问题接缝涵盖了您正在尝试做的事情:如何使用 post-commit 挂钩将提交的文件从 SVN 复制到 web 目录?

于 2009-01-14T16:01:37.773 回答
2

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

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

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

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

我已经使用CC.NETTeam City来做到这一点;他们都可以在某些设置下正常工作。

于 2009-01-14T12:26:53.930 回答
2

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

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

于 2009-01-14T12:29:20.913 回答
1

我发现TortoiseSVN帮助(TSVN-PDF 文件)中的大部分问题都有很好的文档。这是我所有问题以及如何使用 SVN 设置一切的起点。即使它是为 Windows 编写的,它也描述了如何使用 Apache 配置 SVN 等等......

也许您不想在每次将某些内容签入存储库时更新您的实时网站。对于更新存储库和实时网站,您可以使用构建脚本(如果您使用 ASP.NET 编写网站,则可能使用NAnt )。

于 2009-01-14T12:19:16.490 回答
1

您需要开始将您的网络服务器和 SVN 存储库视为两个完全不同的东西。SVN 只是存储文件,您可以决定将存储库中的哪个文件版本以及何时放置在您的网站目录中。

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

于 2009-01-14T14:47:11.167 回答
0

只是另一个注释...

您可以签出最新版本以更新服务器或进行导出。如果您结帐,您的所有 Web 可访问目录都会散布着 .svn 目录,因此请确保使用适合您的 Web 服务器的方法(例如 Apache 的 .htaccess)隐藏这些目录,或者进行导出,以免到处都有 .svn 目录。

于 2009-01-14T12:26:26.490 回答