【问题标题】:Having latest copy of SVN'ed files in document root在文档根目录中拥有最新的 SVN 文件副本
【发布时间】:2009-04-10 15:51:55
【问题描述】:

不久前我问过link text,我得到了一些很好的答案。我想知道是否有办法将文件保存在我的 Web 应用程序文档根目录下,当我进行更改时,将它们提交回存储库。

据我了解,为了处理文件,它们不能位于网络根目录中。不得不将它们移到其他地方只是为了处理它们对我来说似乎违反直觉。我错过了什么吗?

谢谢!

【问题讨论】:

    标签: php svn apache


    【解决方案1】:

    只需将 svn 存储库检出到一个目录并将该目录设置为 Web 根目录。您将需要一个不会为 .svn 目录提供服务的 apache 策略,但除此之外没有问题。

    这是我在 httpd.conf 中用来保护 svn 目录的内容:

    #Protect svn directories
    <DirectoryMatch "^/.*/(\.svn|CVS)/">
    Order deny,allow
    Deny from all
    </DirectoryMatch>

    【讨论】:

    • 假设我在 C:\www\samples\htdocs\ 有一个网站。我会在其他地方拥有实际的存储库并检查到 C:\www\samples\htdocs\?它说它应该是一个空目录的事实呢?
    • 我看不出 Windows 有那么大的不同。一般来说,我会去 /var/www/ 并签出一个副本,该副本将使目录类似于 /var/www/my_repo 在 apache 中,我将我的 doc root 设置为 /var/www/my_repo
    • 您可以使用“svn:ignore”属性来允许文档根目录中的其他项目不被签入svn。最简单的方法是从 SVN 签出到 EMPTY 文档根目录,然后复制其他项目并用 svn:ignore 标记每个项目,然后签入文档根目录以记录 svn:ignore 属性。
    • 不管怎样,至少在 Linux 中,只要现有文件的名称与您要检出的文件的名称不同,您就可以检出非空目录。
    • 感谢您的提示!我接受了另一个答案,这似乎正是我所设想的,但这些也给了我一些洞察力。
    【解决方案2】:

    为了处理文件,它们不能位于网络根目录中

    这是没有道理的。也许您正在考虑这样一个事实,即可以由网络服务器修改/编辑的文件 不应该位于文档根目录下。但只要您不使用服务器本身进行编辑(例如,如果您创建了某种文本编辑器 Web 应用程序就会出现这种情况),那么在文档根目录。

    您可能对我的设置感兴趣:我的存储库将我的网站保存在与我的 Web 服务器相同的物理机器上。一个工作副本被签出到该机器上的 Web 根目录中,我在笔记本电脑上签出了另一个工作副本,我在那里进行开发和测试。现在有趣的部分是:我在 SVN 存储库中添加了一个钩子,这样每次将任何内容提交到存储库时,它都会自动更新 Web 根目录中的工作副本。这样,Web 根目录始终拥有最新版本的网站代码,但我仍然可以在网站上工作而无需访问服务器。

    编辑:这里是the script

    【讨论】:

    • 我肯定会对此感兴趣....这正是我所设想的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多