Implementar con capistrano con el repository local en windows arroja un error

Para que Capistrano funcione, ¿el repository debe ser accesible desde el exterior?

Desarrollé una aplicación de Rails en un directory local donde también está mi repository de git.

Lo hago regularmente:

git add . git commit -am "it works after my recent changes" 

ahora quiero implementar:

 cap deploy 

Pero eso me da este post de error (las routes han cambiado ligeramente):

  * executing `deploy' * executing `deploy:update' ** transaction: start * executing `deploy:update_code' executing locally: "git ls-remote D:\\path\\to\\railsapp\\.git HEAD" * executing "git clone D:\\path\\to\\railsapp\\.git /home/user/railsapp/releases/20110221122258 && cd /home/user/railsapp/releases/20110221122258 && git checkout -b deploy 70426fc8c8e81dff69f3ebf667de4f91dbd90119 && (echo 70426fc8c8e81dff69f3ebf667de4f91dbd90119 > /home/user/railsapp/releases/20110221122258/REVISION)" servers: ["my.server.tld"] [my.server.tld] executing command ** [my.server.tld :: out] Initialized empty Git repository in /home/user/railsapp/releases/20110221122258/.git/ ** [my.server.tld :: out] Error reading response length from authentication socket. ** [my.server.tld :: out] Permission denied (publickey). ** fatal: The remote end hung up unexpectedly command finished *** [deploy:update_code] rolling back * executing "rm -rf /home/user/railsapp/releases/20110221122258; true" servers: ["my.server.tld"] [my.server.tld] executing command command finished failed: "sh -c 'git clone D:\\path\\to\\railsapp\\.git /home/user/railsapp/releases/20110221122258 && cd /home/user/railsapp/releases/20110221122258 && git checkout -b deploy 70426fc8c8e81dff69f3ebf667de4f91dbd90119&& (echo 70426fc8c8e81dff69f3ebf667de4f91dbd90119 > /home/user/railsapp/releases/20110221122258/REVISION)'" on my.server.tld 

¿Qué estoy haciendo mal?

Tengo en mi deploy.rb

 require 'bundler/capistrano' set :user, "username" set :password, "password" set :ssh_options, { :forward_agent => true } set :application, "railsapp" set :repository, "D:\\path\\to\\railsapp\\.git" set :scm, :git set :scm_verbose, true default_run_options[:pty] = true set :use_sudo, false set :deploy_to, "/home/#{user}/#{application}" role :app, "my.domain.tld" role :web, "my.domain.tld" role :db, "my.domain.tld", :primary => true namespace :deploy do desc "Restarting mod_rails with restart.txt" task :restart, :roles => :app, :except => { :no_release => true } do run "touch #{current_path}/tmp/restart.txt" end desc "Additional Symlinks ( database.yml, etc. )" task :additional_symlink, :roles => :app do run "ln -s #{shanetworking_path}/config/database.yml #{current_path}/config/database.yml" end end after "deploy:symlink","deploy:additional_symlink","deploy:migrate" 

Su server necesita poder acceder al repository donde está alojado el código. En este momento está fallando cuando trata de verificar el código porque no está autorizado para acceder a su máquina local.

Recomendaría alojar el repository en Github (gratis si no te importa que la fuente sea pública).

También puede configurar un repository git en el server como el host remoto y realizar cambios desde su repository local allí. Luego configure capistrano para search ese repository cuando se deployment.

Feliz de explicar todo esto si no tiene sentido.

Cambia my.domain.tld a localhost o url de tu server remoto

Creo que debes cambiar la estrategia de implementación para copyr:

  set :deploy_via, :copy