【问题标题】:What is the best way to make files live using subversion on a production server?在生产服务器上使用 subversion 使文件生效的最佳方法是什么?
【发布时间】:2010-09-20 19:08:16
【问题描述】:

目前我已经设置了颠覆,因此当我在 Eclipse PDT 中进行更改时,我可以提交更改并将它们保存在 /home/administrator/项目文件中。这个文件有 subversion 推荐的 /branches /tags 和 /trunk 目录。我将文件正确上传到存储库没有问题,但是我是否必须将 Linux 中的文件“mv”到 /var/www 才能使它们存在于服务器上?是否有我缺少的自动过程来执行此操作?我假设我们不想将 /var/www 目录(位于机器上)作为存储库,但我不知道。

【问题讨论】:

    标签: php linux svn


    【解决方案1】:

    您可以在 www 目录中输入svn export。这将为您提供一个“干净”版本的存储库,没有 .svn 目录。

    cd /var/www
    svn export /home/administrator/MyProject/trunk MyProject
    

    编辑:添加来自 cmets 的一些好主意...

    当您想要更新导出的副本时的一些选项:

    • 运行svn export --force /home/...../ MyProject 这将停止抱怨覆盖现有文件。这种方法意味着,如果您从存储库中删除一个文件,它仍将保留在您的 www 文件夹中。
    • 每次更改您的 SVN 命令以导出到新目录:
      svn export /home/..../ MyProject_20081105
      然后创建指向该文件夹的符号链接:
      ln -s MyProject_20081105 MyProject
      每次“释放”时只需删除并重新创建符号链接。在这种情况下,导出目录根本不需要在 www 文件夹中。

    【讨论】:

    • 哇,这很简单!而且我可能每次都在 Linux 中手动移动整个目录并复制到 .svn 目录。感谢您的帮助!
    • 如果这种情况反复出现,可能应该在导出中添加“--force”,这样它就不会抱怨文件已经存在。
    • 最好导出到一个新目录,然后让 www-root 成为一个符号链接。导出完成后,更新符号链接以指向新目录并删除旧目录。
    【解决方案2】:

    您可以简单地在 /var/www 文件夹中检查存储库的副本,然后在需要时对其运行 svn update(或将其切换到新的分支/标签等)。因此,您可以在进行更改和更新的本地计算机上签出一个存储库副本,并在您的网络服务器上签出另一个副本。

    使用 SVN 存储库还可以让您恢复到早期版本。

    【讨论】:

      【解决方案3】:

      您还可以创建一个提交后挂钩,将提交更改的所有文件移动到 /var/www 目录。

      这是一个用python编写的示例,通过ftp将更改的文件上传到远程主机:

      http://svn.haxx.se/dev/archive-2007-08/0287.shtml

      【讨论】:

        【解决方案4】:

        您可能想记住在任何给定时间您在生产中拥有哪些文件 - 所以保留一个“发布”标签(例如,在 /project/tags/release 中)。当你想要发布时,将你的主干复制到那里。然后 svn 导出该发布标签。

        什么的。

        【讨论】:

          【解决方案5】:

          我看到很多人on here和其他论坛谈论使用Capistrano进行部署,但我没有任何个人经验。

          【讨论】:

            猜你喜欢
            • 2016-08-09
            • 2021-07-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-13
            • 1970-01-01
            相关资源
            最近更新 更多