运行 web 应用程序时,subversion 签出和导出之间是否存在性能差异?
我们已经在部署过程中实现了这一点,没有测量差异(感觉很糟糕。而且很糟糕。)。
我们的意图是:
a)转储开销(.svn 文件夹及其内容)和
b)改进任何目录遍历内容
你有这方面的经验或测量吗?
运行 web 应用程序时,subversion 签出和导出之间是否存在性能差异?
我们已经在部署过程中实现了这一点,没有测量差异(感觉很糟糕。而且很糟糕。)。
我们的意图是:
a)转储开销(.svn 文件夹及其内容)和
b)改进任何目录遍历内容
你有这方面的经验或测量吗?
这将严重依赖应用程序。对于我部署的应用程序,它是无关紧要的,因为在应用程序中绝对没有对应用程序目录进行目录遍历。一些框架,尤其是 Rails,会自动加载应用程序中的文件并进行目录遍历以发现这些文件,但典型的
Dir['**/**']
类型事务会跳过任何“隐藏”目录,例如 .svn 和 .git。如果由于某种原因,您的应用程序或框架需要遍历应用程序文件夹下的所有文件并且没有忽略隐藏目录,则可能会有一些可以忽略不计的影响,但它是如此特定于应用程序和情况,您将难以做到从普遍的答案中寻求很多建议。
综上所述,如果您没有理由将更改从部署推送回 SVN 服务器,并且您使用的是多目录滚动式部署机制(也就是说,您每次都导出/签出到新目录,然后更新符号链接或类似的)您不妨继续使用导出。如果您
svn update
每次都在部署目录中,为了效率起见,您可能希望坚持使用它。Subversion 客户端写入导出的 IO 比 checkout 少,因为 checkout 确实执行了大量的锁定和 loggy 写入。
鉴于此,我发现在 Web 服务器文档根目录中进行结帐而不是导出要好得多,因为您可以简单地 'svn update' 到最新版本或运行 'svn update -r PREV' 来退出错误推送. 所以我发现这的便利性超过了更少 IO 的任何优势。这假设您没有导出然后 FTP 将导出到您的 Web 服务器。
你是如何部署到你的网络服务器的?
与 SVN(尤其是签入)真正不同的一件事是病毒扫描。如果您可以为 .svn 目录关闭 AV,那么您会看到不同之处。