【问题标题】:Subversion for web development用于 Web 开发的颠覆
【发布时间】:2010-10-01 08:39:27
【问题描述】:

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

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

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

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

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

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

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

编辑

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

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

【问题讨论】:

  • 重新表述问题并修改正文可能会为您提供更好的答案。我现在了解到您正在寻找一种在提交后自动将应用程序部署到服务器的方法。

标签: svn apache htdocs


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    repo
      - trunk
        - htdocs
      - branch
        - htdocs
    

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

    【讨论】:

      【解决方案3】:

      只是另一个注释...

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

      【讨论】:

        【解决方案4】:

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

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

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

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

        我同时使用了CC.NETTeam City 来执行此操作;它们都可以通过一些设置正常工作。

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

              【解决方案7】:

              这个 Stack Overflow 问题涵盖了你想要做的事情:How can I use post-commit hooks to copy committed files to a web directory from SVN?

              【讨论】:

              • 我希望我有更多的“向上点击”!
              猜你喜欢
              • 2010-09-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-02-29
              • 2013-05-24
              • 1970-01-01
              • 2012-01-21
              相关资源
              最近更新 更多