3

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

我尝试使用

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

svn revert -R .

然而,哪个做了结帐,我正在使用一些 svn 外部来代替一些现有的目录。我收到此错误:将外部项目提取到“生产/JS”中:svn:警告:W155007:无法获得对非目录的锁定

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

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

4

1 回答 1

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 中的内容过期

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

于 2013-11-09T17:45:12.583 回答