Ruby on rails 来自svn的Capistrano部署失败

Ruby on rails 来自svn的Capistrano部署失败,ruby-on-rails,svn,capistrano,Ruby On Rails,Svn,Capistrano,我正在尝试使用capistrano 2将我的应用程序从subversion部署到本地服务器。以下是我试图部署的代码,它只是默认的rails应用程序: 以下是指向我的svn repo的my deploy.rb文件: set :application, "CapistranoTest" set :user, "jack" set :repository, "https://subversion.assembla.com/svn/capistranotest/" set :scm, :subve

我正在尝试使用capistrano 2将我的应用程序从subversion部署到本地服务器。以下是我试图部署的代码,它只是默认的rails应用程序:

以下是指向我的svn repo的my deploy.rb文件:

set :application, "CapistranoTest"
set :user, "jack"
set :repository,  "https://subversion.assembla.com/svn/capistranotest/"

set :scm, :subversion

set :deploy_to, "/home/jaeren/capistranotest"

role :web, "192.168.169.129"
role :app, "192.168.169.129"
role :db,  "192.168.169.129", :primary => true

set :scm_username, "jack"
set :runner, "jack"

set :use_sudo, false
My cap deploy:安装程序运行并创建必要的文件夹。但是,当我运行cap deploy:cold并在提示我的assembla帐户时输入用户名和密码时,我会收到此错误。谁能告诉我为什么

Jacks-MacBook-Pro:capistranotest Jack$ cd trunk
Jacks-MacBook-Pro:trunk Jack$ cap deploy:cold
  * 2015-04-27 00:31:45 executing `deploy:cold'
  * 2015-04-27 00:31:45 executing `deploy:update'
 ** transaction: start
  * 2015-04-27 00:31:45 executing `deploy:update_code'
    executing locally: "svn info https://subversion.assembla.com/svn/capistranotest/ --username \"jack\"--password \"\"--no-auth-cache  -rHEAD"
Authentication realm: <https://subversion.assembla.com:443> Assembla Restricted Area
Password for 'jack--password': *************************

Authentication realm: <https://subversion.assembla.com:443> Assembla Restricted Area
Username: jack
Password for 'jack': *************************

    command finished in 53369ms
  * executing "svn checkout -q --username \"jack\"--password \"\"--no-auth-cache  -r6 https://subversion.assembla.com/svn/capistranotest/ /home/jack/capistranotest/releases/20150426233238 && (echo 6 > /home/jack/capistranotest/releases/20150426233238/REVISION)"
    servers: ["192.168.169.129"]
    [192.168.169.129] executing command
 ** [192.168.169.129 :: err] Authentication realm: <https://subversion.assembla.com:443> Assembla Restricted Area
 ** [192.168.169.129 :: err] Password for 'jack--password':
Password: 
 ** [192.168.169.129 :: err] Authentication realm: <https://subversion.assembla.com:443> Assembla Restricted Area
 ** [192.168.169.129 :: err] Username:
Jacks MacBook Pro:capistranotest Jack$cd trunk
Jacks MacBook Pro:trunk Jack$cap部署:冷
*2015-04-27 00:31:45执行“部署:冷”
*2015-04-27 00:31:45执行“部署:更新”
**事务:开始
*2015-04-27 00:31:45执行“部署:更新代码”
本地执行:“svn信息https://subversion.assembla.com/svn/capistranotest/ --用户名\“杰克\”-密码\“\”-无身份验证缓存-rHEAD”
身份验证领域:限制区域
“jack--Password”的密码:*************************
身份验证领域:限制区域
用户名:杰克
“杰克”的密码:*************************
命令在53369ms内完成
*正在执行“svn签出-q--用户名\“jack\”--密码\“\”--无身份验证缓存-r6https://subversion.assembla.com/svn/capistranotest/ /home/jack/capistranotest/releases/20150426233238&&(echo 6>/home/jack/capistranotest/releases/20150426233238/REVISION)”
服务器:[“192.168.169.129”]
[192.168.169.129]执行命令
**[192.168.169.129::err]身份验证领域:限制区域
**[192.168.169.129::err]jack--Password的密码:
密码:
**[192.168.169.129::err]身份验证领域:限制区域
**[192.168.169.129::err]用户名:
--编辑--

尝试更改为capistrano 2.12.0,它输出不同的命令,但我仍然得到相同的错误:

Jaerens-MacBook-Pro:trunk Jaeren$ cap deploy:cold
  * executing `deploy:cold'
  * executing `deploy:update'
 ** transaction: start
  * executing `deploy:update_code'
    executing locally: "svn info https://subversion.assembla.com/svn/capistranotest/ --username jaeren --password  --no-auth-cache  -rHEAD"
Authentication realm: <https://subversion.assembla.com:443> Assembla Restricted Area
Username: Jaeren
Password for 'Jaeren': ***********

    command finished in 8473ms
  * executing "svn checkout -q --username jaeren --password  --no-auth-cache  -r6 https://subversion.assembla.com/svn/capistranotest/ /home/jaeren/capistranotest/releases/20150427001157 && (echo 6 > /home/jaeren/capistranotest/releases/20150427001157/REVISION)"
    servers: ["192.168.169.129"]
    [192.168.169.129] executing command
 ** [192.168.169.129 :: err] Authentication realm: <https://subversion.assembla.com:443> Assembla Restricted Area
 ** [192.168.169.129 :: err] Username:
Jaerens MacBook Pro:trunk Jaeren$cap部署:冷
*执行“deploy:cold”
*正在执行“部署:更新”
**事务:开始
*正在执行“部署:更新代码”
本地执行:“svn信息https://subversion.assembla.com/svn/capistranotest/ --用户名jaeren--密码--无身份验证缓存-rHEAD“
身份验证领域:限制区域
用户名:Jaeren
“Jaeren”的密码:***********
命令在8473毫秒内完成
*正在执行“svn checkout-q--username jaeren--password--no auth cache-r6https://subversion.assembla.com/svn/capistranotest/ /home/jaeren/capistranotest/releases/201504270001157&&(echo 6>/home/jaeren/capistranotest/releases/201504270001157/REVISION)”
服务器:[“192.168.169.129”]
[192.168.169.129]执行命令
**[192.168.169.129::err]身份验证领域:限制区域
**[192.168.169.129::err]用户名:

谢谢。

看起来它正在尝试以
jack--password
身份验证,因为username的值和它后面的
--password
选项之间没有空格

executing locally: "svn info https://subversion.assembla.com/svn/capistranotest/ --username \"jack\"--password \"\"--no-auth-cache  -rHEAD"

我怀疑这是执行该命令的任何程序中的一个错误,它可能是Capistrano的内置程序。尝试升级到最新的Capistrano,如果无法解决问题,请在Capistrano项目上提交GitHub问题。

Ryan Bigg是正确的。Capistrano用于登录远程SVN存储库的SVN身份验证任务中存在错误

我运行的是Capistrano版本2.15.6,该文件的路径为

capistrano-YOURVERSION/lib/capistrano/recipes/deploy/scm/subversion.rb
打开此文件进行编辑,并在底部查找身份验证定义块

def authentication
    username = variable(:scm_username)
    return "" unless username
    result = %(--username "#{variable(:scm_username)}")
    result << %(--password "#{variable(:scm_password)}") unless variable(:scm_auth_cache) || variable(:scm_prefer_prompt)
    result << "--no-auth-cache " unless variable(:scm_auth_cache)
    result
end
def身份验证
用户名=变量(:scm\U用户名)
返回“”除非是用户名
结果=%(-username“#{variable(:scm_username)}”)

结果是有道理的。但是我刚改为capistrano 2.12.0,得到了一个不同的错误,我在帖子中编辑的完整输出我也不太清楚为什么capistrano需要我的密码。我可以在本地计算机上签出此存储库,而无需输入任何用户信息
def authentication
    username = variable(:scm_username)
    return "" unless username
    result = %(--username "#{variable(:scm_username)}")
    result << %( --password "#{variable(:scm_password)}") unless variable(:scm_auth_cache) || variable(:scm_prefer_prompt)
    result << " --no-auth-cache " unless variable(:scm_auth_cache)
    result
end