我怎样才能继续将 Accurev 与 Capistrano 3 一起使用?

How can I continue to use Accurev with Capistrano 3?

我们使用 AccuRev(我无法更改它)并且一直在使用 Capistrano 2 进行部署。我需要升级到 Capistrano 3,但 Accurev SCM 模块似乎已被删除。有什么方法可以让我继续使用 AccuRev 并使用 Capistrano 3 进行部署?

deploy.rb片

set :scm, :accurev

部署错误

cap aborted!
LoadError: cannot load such file -- capistrano/accurev.rb

作为 Capistrano3 文档 says - 只有 git、hg 和 svn 支持。

但是将 old accurev module 从 Capistrano 2 移植到 Capistrano 3 应该不难。一些 类 改变了但核心是相同的 - 函数必须 return 正确的命令与适当的参数.

您可以从 master 的 git 实施开始并将其替换为 AccuRev。

一年以来我一直在使用的解决方法如下:

1- 编辑文件 capistrano-3.3.5/lib/capistrano/setup.rb 并替换

load "capistrano/#{fetch(:scm)}.rb"

来自

load "#{fetch(:scm_path, 'capistrano')}/#{fetch(:scm)}.rb"

2- 添加到你的 config/deploy.rb 文件

set :scm_path, 'path/to/accurev/directory'

这将使 capistrano 有机会打开 accurev 的配置模式。请注意,capistrano v3 更改了其语法,您可能必须修改 accurev 文件(我建议将它们复制到您的 lib 文件夹中)。

直接编辑gem文件内容很难看,但是这里也没有别的办法了。如果你愿意,你也可以 fork 他们的 git 并在你的 fork 上进行修改。

我有一个类似的问题,因为我在 capistrano 中使用定制的 scm。自去年以来试图让他们接受添加此 scm_path 配置选项的拉取请求,但他们拒绝了,说他们将很快迁移到更好的东西 ...