svn更新覆盖现有的无版本文件

svn更新覆盖现有的无版本文件,svn,svn-externals,svn-checkout,Svn,Svn Externals,Svn Checkout,我正试图将我们的网站置于完全版本控制之下。站点和文件当前存在于服务器上,我需要用版本副本替换这些未版本文件,而不删除目录或文件 我试着用 svn签出——强制https://myrepo/trunk . svn还原-R. 但是,我正在使用一些svn外部文件来代替一些现有的目录。我得到这个错误: 正在将外部项目提取到“production/JS”中: svn:警告:W155007:无法获取非目录上的锁 JS是一个外部项目。我知道我可以简单地删除现有的目录并进行更新或签出,所有的东西都会在那里,但我不

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

我试着用

svn签出——强制https://myrepo/trunk .

svn还原-R.

但是,我正在使用一些svn外部文件来代替一些现有的目录。我得到这个错误: 正在将外部项目提取到“production/JS”中: svn:警告:W155007:无法获取非目录上的锁

JS是一个外部项目。我知道我可以简单地删除现有的目录并进行更新或签出,所有的东西都会在那里,但我不想让网站关闭足够长的时间来进行签出


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

我建议不要使用svn工作副本为您的站点提供服务。一个简单的部署脚本(由CI服务器运行)可以将源代码(复制/提取/安装)以原子方式打包到服务器上。 这将在很大程度上取决于你的网站/应用程序。 您可以首先将wwwroot符号链接到site-1.0.0,然后

  • 让您的生成计算机(或CI服务器)打包您的源代码
  • 具有将包复制到服务器的部署脚本
  • 将其解压缩/安装到site-1.0.1
  • 将指向site-1.0.0的符号链接交换到site-1.0.1
  • 删除除最新5个版本外的所有网站
  • 这给你买了一些东西:

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

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

    您找到解决问题的方法了吗?我也有同样的问题,正在寻找一个真正的解决方案…你有没有找到无法获得非目录锁定错误的原因?我也面临同样的问题。