我打算今天发布我们的实时网站,我读过最好的选择是使用svn export来避免使用.svn文件填充工作副本,但是这不再是SVN 1.7的问题,因为存储了元数据在一个文件中.在我看来,使用工作副本比导出更好,因为更新实时站点就像运行'svn update'一样简单.有没有理由不签出工作副本并使用导出?
您所描述的情况是严重的安全威胁。
您可能已经知道,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从网络访问目录的可能性。