【问题标题】:svn update over-write existing non-versioned filessvn update 覆盖现有的无版本文件
【发布时间】:2013-11-21 01:35:31
【问题描述】:

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

我尝试过使用

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

svn revert -R .

但是,我使用了一些 svn externals 来代替一些现有目录。我收到此错误: 将外部项目提取到“生产/JS”中: svn: 警告: W155007: Can't get lock on non-directory

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

那么,我可以在 svn 上施展魔法咒语,让它用这些外部文件替换我现有的目录吗?

【问题讨论】:

  • 您找到解决问题的方法了吗?我有同样的问题,正在寻找一个真正的解决方案......
  • 你找到can't get lock on non-directory错误的原因了吗?我也面临同样的问题。

标签: svn svn-externals svn-checkout


【解决方案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 个版本之外的所有网站

这给你带来了一些好处:

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

很抱歉,这并没有直接回答你的问题,但我觉得值得一提。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 2016-07-22
    • 2011-02-09
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 2015-12-15
    相关资源
    最近更新 更多