Capistrano и Git, разрушая мою жизнь. «Не удалось разрешить ревизию для [HEAD] в хранилище ...» - PullRequest
5 голосов
/ 23 декабря 2009

Я искал все соответствующие проблемы Capistrano, но не мог найти что-то, что даже объяснило бы здесь что-нибудь для меня.

git version 1.6.4.2
Capistrano v2.5.10

Обычно, когда я запускаю мой скрипт cap deploy.rb, он подключается к серверу, начинает выполнять задачу deploy: update, затем в задаче 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"]

Сбой из-за следующей ошибки:

/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)

Вот мой сценарий развертывания, который я пытался включить и пропустить:

набор: филиал 'мастер'

Я также просто думал, что мой путь к хранилищу отключен, но я пробовал почти каждую перестановку (абсолютный, а не абсолютный, суффикс .git, без суффикса). На пути, на который я указываю, определенно есть пустой git-репозиторий.

** У меня есть несколько проектов, размещенных на одном слайсе. Другие проекты также являются рельсовыми, но работают под управлением SVN. Развертывания Capistrano работают нормально.

Любые указатели в правильном направлении или любые идеи помогут уменьшить количество выпивки, которую я планирую выпить, если я не могу понять это. (Пути / IP-адреса запутаны, не взломайте меня, братан!)

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

Это был самый релевантный пост (даже очень релевантный), но я не мог понять, о чем они говорили. Я довольно новичок с конфигами git / capistrano.

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

Ответы [ 5 ]

4 голосов
/ 30 декабря 2009

Хорошо, я, кажется, исправил это.

По сути, поскольку у меня есть 2 отдельных репозитория на удаленном сервере, я думаю, что пользователь "git" не работает, потому что я не зарегистрировал пару ключей ssh ​​для пользователя git. Это объясняет, почему один из моих сценариев deploy.rb работал правильно, а этот - нет.

В ссылке, которую я разместил в вопросе, один из комментаторов указал на проблему:

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

Обратите внимание, эта ошибка также отображается, если вы используете несколько ключей GitHub в http://capistrano.lighthouseapp.... и у вас нет этих ключей и соответствующая запись в вашем .ssh / config на рабочей станции вы запуск развертывания от. Итак ls-remote запускается локально. Есть ли способ ссылки на хранилище в github.com для этого запроса, пока удаленное развертывание использует мерзавец @ GitHub-project1: пользователь / project1.git

Кроме того, для получения более подробной информации см. Следующую ссылку, так как проблема ssh может возникнуть, даже если вы не используете github.

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

1 голос
/ 23 декабря 2009

И ваша рабочая станция, и ваш сервер должны иметь доступ к хранилищу по указанному адресу, если нет, то вам может потребоваться установить: local_repository способ доступа к нему со своей рабочей станции и: repository - способ доступа ваших серверов. это.

0 голосов
/ 07 мая 2013

Убедитесь, что ветка, из которой вы развертываете, существует.

set :branch, "upgrade-to-2013.4.3"

не равно

set :branch, "upgrade-to-2013.3.4"
0 голосов
/ 24 декабря 2009

Я только однажды использовал capistrano с git, но никогда не использовал и не видел использования ssh: // в определении хранилища.

Попробуйте использовать set :repository, "git@67.24.9.133/home/git/project1.git" вместо

0 голосов
/ 23 декабря 2009

Мне кажется, что развертывание Capistrano с Git работает только при установке set :copy_cache, true

...