是否可以在现场站点上拥有/.svn/文件夹?(如何删除它们但保留svn更新功能?)


10

我正在做svn update来更新我的php网站的代码,但是它.svn/到处都是文件夹。

我认为让那些文件公开可读很危险,但是很容易更新系统。

有没有一种方法可以svn update用来更新系统,但不能导出.svn/文件夹?

Answers:


21

如果您使用的是Apache:

<Directory ~ "\.svn">
    Order allow,deny
    Deny from all
</Directory>

这将阻止人们.svn(使用浏览器)远程访问目录,但是您可以保留项目(和svn功能)。

顺便说一句,您可以替代\.svn\.git或者\.cvs您使用的不是Subversion。


这会阻止整个网站上的所有.svn目录吗?我有很多子目录
Siliconpi

目前,我的httpd.conf具有<Directory />选项FollowSymLinks AllowOverride All </ Directory>可以单独添加您在此下方写的内容,还是需要合并两个条目?
Siliconpi 2011年

它将匹配任何名为.svnso yes的目录。
coredump

您可以单独添加。
coredump


3

您想将代码从SVN导出到实时站点...

不要使用svn update它。update是用于更新工作副本,而不是导出代码。请svn export改用它,因为它会从指定的存储库中导出干净的目录树。

--force标志将允许导出覆盖现有文件。

SVN导出手动输入


如果OP不想使用export,我可以表示同情,因为它涉及到总是获取存储库的全新副本,如果它是小型连接上的大型存储库,那么这很麻烦(例如,Web服务器是托管服务器,但是您的SVN存储库位于您的本地办公室,并通过1Mb链接共享)。update意味着您不需要每次都花钱。
马克·亨德森

一个公平的观点。也许导出到站点的本地副本,然后将更改重新同步到远程Web服务器将在这种情况下起作用?我从来没有遇到过这个问题,所以我没有考虑过。
gsreynolds's

2

我不把它们放到生产/现场站点。因为我不希望我和/或其他开发人员忘记编辑实时代码是一个坏主意。我的安装脚本将我的.svn文件过滤掉。


@kerner-然后如何更新它们?
Siliconpi

1
为什么不只使用svn export而不过滤它们呢?
pjmorse 2011年

我有一个用于网站的安装脚本,并稍作调整以适合每个站点。它通常还执行诸如构建数据库,数据库表和数据库用户,设置任何默认用户或管理员之类的工作。因此,要导出到产品,产品用户(作为人工或脚本)会检查出svn是否正常工作复制到〜/的某个位置,然后运行该工作副本成员的安装脚本,然后有选择地删除该工作副本。
ekerner

1

您应该研究一个合适的部署系统,例如Capistrano。这意味着您的生产服务器不需要颠覆,您可以将其部署到多台服务器并向部署添加自定义逻辑。这也使回退部署相对容易。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.