Ошибка Capistrano при изменении репозитория с помощью git

У меня есть простое развертывание через capistrano из репозитория Git.

Я хотел изменить репозиторий, с которым работал, поэтому просто изменил

установить: репозиторий, «[email protected]: новый_репозиторий»

Но я получаю следующую ошибку при развертывании:

фатальный: не удалось разобрать объект '9cfb...'.

Проблема исчезнет, ​​как только я поменяю

установить :deploy_via, :remote_cache

to

установить :deploy_via, :copy

Я также пытался развернуть: очистку, но получаю следующую ошибку:

*`deploy:cleanup' запускается только для серверов, соответствующих {:except=>{:no_release=>true}}, но не соответствующих серверов*

Любая идея, как я могу заставить remote_cache снова работать?

Спасибо!


person Hans    schedule 26.05.2013    source источник


Ответы (7)


С capistrano 3, чтобы избежать удаления папки репо:

  1. Измените URL-адрес репо в вашем config/deploy.rb, как это уже сделал OP.

  2. SSH на ваш сервер внутри и измените удаленный URL репозитория git:

    ssh [email protected]  
    # Go the capistrano deploy root
    cd /capistrano/deploy/root/folder  
    # Go inside the folder names *repo*
    cd repo  
    # Manually change the git remote
    git remote set-url origin ...
    
person Vala    schedule 15.04.2015

Капистрано ‹ 3

Исправьте это в ./shared/cached-copy/.git/config из папки развертывания вашего сервера.

ИЛИ уродливый способ сделать это:

Удалите общую/кэшированную копию из папки развертывания вашего сервера.

Капистрано > 3

Исправьте это в ./repo/config из папки развертывания вашего сервера.

Узнайте, как устранять похожие проблемы

Это вызвано тем, что файлы вашего сервера ссылаются на старое репо, поэтому вам нужно найти и исправить его. Сделайте это, чтобы найти совпадения в файлах:

cd /path/to/your/project
grep -r OLD_REPO_NAME ./

Теперь вы видите все файлы, включая ваш OLD_REPO_NAME . Если они совпадают в вашей папке выпуска или текущей версии, вам не нужно заботиться об их исправлении. Но вы должны исправить все конфиги.

person user1553777    schedule 26.05.2014

вы можете просто изменить URL-адрес git в

shared/cached-copy/.git/config
person stef    schedule 04.02.2014

Дополнительная информация для пользователей Capistrano 3. Capistrano создаст папку repo. Итак, структура выглядит так:

current -> /var/www/preview/releases/20140612212305
releases
repo
revisions.log
shared

Когда вы измените :repo_url в deploy.rb, вы можете безопасно удалить папку repo и запустить развертывание. Папка будет создана снова. Причина, по которой вы должны сделать этот шаг, заключается в том, что в репозитории/конфигурации есть старый удаленный URL-адрес.

person awenkhh    schedule 12.06.2014
comment
У меня сработало (удаление папки репо) - person Jad Joubran; 12.02.2015

ssh на свой рабочий сервер и удалите содержимое вашей общей папки/папки кеша. Сохраненный там git ref больше недействителен, поэтому он не будет работать.

person mathieugagne    schedule 26.05.2013
comment
Привет Матье. Я удалил все внутри общей/кэшированной копии и получил ту же ошибку, затем удалил ее и получил эту ошибку: ОШИБКА: репозиторий не найден - person Hans; 27.05.2013
comment
Да, папка точно нужна. Обычно это работает для меня. Я всегда решал эту проблему одинаково. Дайте-ка подумать - person mathieugagne; 27.05.2013
comment
Спасибо! Я некоторое время боролся с этой проблемой без каких-либо результатов. - person Hans; 27.05.2013
comment
Это не работает с Capistrano 3, измените URL-адрес в файле репо/конфигурации. Общая папка/кеш не существует - person hemc4; 08.01.2015

Просто добавьте задачу в deploy.rb, чтобы синхронизировать ее автоматически.

$ cap admin:fix_repo

  namespace :admin do
    desc 'Fix repo'
    task :fix_repo, :roles => :web do
      run "cd #{shared_path}/cached-copy && git remote set-url origin #{repository}"
    end
  end
person merqlove    schedule 18.05.2016

Что касается этой треда, после обновления вашего deploy.rb с помощью

set :repository, "[email protected]:new_repository"

зайдите на свой сервер с помощью ssh deploy-user, затем cd Old_repository/repoи sudo vim config

Вы найдете строку url = [email protected]:username/old_repository.git, и вам нужно переименовать ее на url = [email protected]:username/new_repository.git.

Не забудьте удалить папку Old_repository на вашем сервере или просто переименовать ее перед этим в папку New_repository!

person OBrooks    schedule 06.08.2019