Capistrano y Git, arruinando mi vida. "No se puede resolver la revisión de en el repository …"

Busqué todos los temas relevantes de Capistrano, pero no pude encontrar algo que aclarara algo aquí para mí.

git version 1.6.4.2 Capistrano v2.5.10 

Básicamente, cuando ejecuto mi script cap deploy.rb, se conecta al server, comienza a ejecutar la tarea deploy: update y luego a la tarea deploy: update_code:

  *** [deploy:update_code] rolling back * executing "rm -rf /home/user_name/public_html/project_name/releases/20091223094358; true" servers: ["project_name.com"] 

Falla con el siguiente error:

 /Library/Ruby/Gems/1.8/gems/capistrano-2.5.10/lib/capistrano/recipes/deploy/scm/git.rb:231:in `query_revision': Unable to resolve revision for 'master' on repository 'ssh://git@slice_ip:path_to_git_repository'. (RuntimeError) 

Aquí está mi script de implementación, he intentado include y omitir:

establecer: twig 'maestro'

También pensé que mi path al repository estaba apagado, pero he probado casi todas las permutaciones (absoluto, no absoluto, sufijo de git, sin sufijo). Definitivamente hay un repository de git al descubierto en el path que estoy señalando.

** Tengo varios proyectos alojados en una porción. Los otros proyectos también son un proyecto de Rails, pero se está ejecutando SVN. Las implementaciones de Capistrano funcionan bien.

Cualquier sugerencia en la dirección correcta o cualquier idea ayudaría a networkingucir la cantidad de bebida que planeo hacer si no puedo resolver esto. (Paths / IPs ofuscados, ¡no me hagáis bro!)

 set :application, "project1" set :user, "username" set :repository, "ssh://git@67.24.9.133/home/git/project1.git" set :branch, "master" set :port, 696969 set :deploy_to, "/home/username/public_html/#{application}" set :scm, :git role :app, application role :web, application role :db, application, :primary => true # deployment via remote client (workstation) set :deploy_via, :copy set :runner, user # mod_rails 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 [:start, :stop].each do |t| desc "#{t} task is a no-op with mod_rails" task t, :roles => :app do ; end end end 

Esta fue la publicación más relevante (incluso extremadamente relevante), pero realmente no pude entender lo que decían que era la solución. Soy bastante nuevo con las configuraciones de git / capistrano.

https://capistrano.lighthouseapp.com/projects/8716/tickets/56-query_revision-unable-to-resolve-revision-for-head-on-repository

Ok, parece que lo arreglé.

Básicamente, dado que tengo 2 repositorys separados en el server remoto, creo que el usuario "git" estaba fallando porque no había registrado un par de keys ssh para el usuario de git. Eso explica por qué uno de mis scripts deploy.rb funcionaba correctamente, mientras que este no.

En el enlace que publiqué en la pregunta, uno de los comentaristas señaló el problema:

https://capistrano.lighthouseapp.com/projects/8716/tickets/56-query%5Frevision-unable-to-resolve-revision-for-head-on-repository

Tenga en count que este error también se muestra si está utilizando varias keys github por http: //capistrano.lighthouseapp …. y no tiene estas keys y una input correspondiente en su .ssh / config en la estación de trabajo donde está ejecutando el desplegar desde. entonces el ls-remote se ejecuta localmente. ¿Hay alguna manera de hacer reference al repository en github.com para esta request, mientras que la implementación remota utiliza git @ github-project1: user / project1.git

Además, consulte el siguiente enlace para get más detalles, ya que todo el problema de ssh se aplicaría incluso si no está utilizando github.

http://github.com/guides/multiple-github-accounts

Tanto su estación de trabajo como su server deben poder acceder al repository en la dirección especificada, de lo contrario, deberá establecer: local_repository a la forma de acceder a él desde su estación de trabajo y repository a cómo deben acceder sus serveres.

Para mí, las implementaciones de Capistrano con Git solo parecen funcionar al establecer set :copy_cache, true

Solo he usado capistrano con git una vez, pero nunca usé o vi el uso de ssh: // en la definición del repository.

Intenta usar set :repository, "git@67.24.9.133/home/git/project1.git" lugar

Asegúrese de que exista la twig desde la que está desplegando.

 set :branch, "upgrade-to-2013.4.3" 

no es igual a

 set :branch, "upgrade-to-2013.3.4"