svn update覆盖现有的非版本化文件

时间:2013-11-08 21:59:03

标签: svn svn-externals svn-checkout

我正在尝试将我们的网站置于完全版本控制之下。站点和文件当前存在于服务器上,我需要使用版本化副本替换这些非版本化文件,而不删除目录或文件。

我尝试使用

svn checkout --force https://myrepo/trunk .

svn revert -R .

然而,检查了,我使用了一些svn外部代替了一些现有的目录。我收到此错误: 将外部项目提取到'production / JS': svn:警告:W155007:无法获取非目录锁定

JS是一个外部项目。我知道我可以简单地删除现有目录并进行更新或结账,一切都会在那里,但我不想让网站停留足够长时间来结账。

那么我可以在svn上施放一个神奇的咒语来让它用这些外部替换我现有的目录吗?

1 个答案:

答案 0 :(得分:1)

我建议不要使用svn工作副本来提供您的网站服务。一个简单的部署脚本(由CI服务器运行)可以在您的服务器上自动打包源(复制/提取/安装)。 这是如何工作将高度依赖于您的网站/应用程序。 您可以通过将wwwroot符号链接到site-1.0.0然后

开始
  1. 让您的构建计算机(或CI服务器)打包源
  2. 拥有将程序包复制到服务器的部署脚本
  3. 将其解压缩/安装到site-1.0.1
  4. 将指向site-1.0.0的符号链接交换为site-1.0.1
  5. 删除除网站的最新5个版本以外的所有版本
  6. 这会给你带来一些东西:

    • 你得到一个真正的原子部署,即使是svn更新也可能让你的网站在短时间内处于不稳定的状态
    • 您可以通过移动符号链接快速轻松地恢复到已知状态。
    • 它消除了某人在服务器上本地编辑文件的风险(svn up不会撤消更新)
    • 您的构建/包甚至部署脚本可以连接/缩小您的js
    • 该脚本也可以使任何缓存或CDN中的内容失效

    对不起,这并没有直接回答你的问题,但我觉得值得一提。