使用SVN 1.7的实时网站使用工作副本有什么不利之处吗?

Mic*_*lle 7 svn

我打算今天发布我们的实时网站,我读过最好的选择是使用svn export来避免使用.svn文件填充工作副本,但是这不再是SVN 1.7的问题,因为存储了元数据在一个文件中.在我看来,使用工作副本比导出更好,因为更新实时站点就像运行'svn update'一样简单.有没有理由不签出工作副本并使用导出?

alt*_*ern 1

您所描述的情况是严重的安全威胁

您可能已经知道,Subversion 使用.svn文件夹将其图元文件直接存储在工作副本中。每个这样的文件夹都具有文件条目,其中包含与相应文件夹具有相同级别的所有目录的列表.svn。在.svn文件夹中,您还可以找到有关存储库位置、文件大小、修改日期和用户登录的信息。如果您只是通过将工作副本检出到htdocsWeb 服务器上的目录来部署站点,然后使用 URL,site.com/.svn/entries您不仅会看到项目文件结构,还会看到作者列表、最新更改、存储库链接等。

您还可以text-base在每个文件夹中找到目录.svn。它包含置于版本控制之下的所有文件的最新修订版。text-base目录中的文件具有.svn-base扩展名,它允许将其内容直接发送到浏览器输出,而无需在服务器端解释它。也就是说,它允许查看原始源代码

不过,这个问题有一些简单的解决方案。

阿帕奇:

<Directory ~ ".*\.svn">
    Order allow,deny
    Deny from all
    Satisfy All
</Directory>
Run Code Online (Sandbox Code Playgroud)

nginx:

location ~ /.svn/ {
    deny all;
}
Run Code Online (Sandbox Code Playgroud)

总而言之,这种方法的主要缺点是您应该了解威胁,并且不要忘记防止.svn从网络访问目录的可能性。

  • 例如,1.7 [发行说明](http://subversion.apache.org/docs/release-notes/1.7.html#wc-ng)。当然,如果它恰好位于文档根目录中,那么阻止访问顶级“.svn”目录仍然是一个好主意。 (2认同)