Ошибка Capistrano tar: это не похоже на архив tar

103
 INFO [050fe961] Running mkdir -p /home/rails/rails-
capistrano/releases/20140114234157 on staging-rails
DEBUG [050fe961] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh mkdir -p /home/rails/rails-capistrano/releases/20140114234157 )
 INFO [050fe961] Finished in 0.142 seconds with exit status 0 (successful).
 INFO [2dea2fe5] Running git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 on staging-rails
DEBUG [2dea2fe5] Command: cd /home/rails/rails-capistrano/repo && ( PATH=/opt/ruby/bin:$PATH GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/rails/git-ssh.sh git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157 )
DEBUG [2dea2fe5]    fatal: Not a valid object name
DEBUG [2dea2fe5]    tar: This does not look like a tar archive
DEBUG [2dea2fe5]    tar: 
DEBUG [2dea2fe5]    Exiting with failure status due to previous errors      

Меня смущают две вещи:

  1. Почему git archiveздесь работает Capistrano :
    git archive feature/Capistrano | tar -x -C /home/rails/rails-capistrano/releases/20140114234157

  2. Почему tarтерпит неудачу?

Эрик Фрэнсис
источник

Ответы:

323

У меня была такая же проблема, пока я не понял, что вытаскиваю несуществующую ветку из git.

куббинг
источник
53
Такая пощечина.
Грант Бирчмайер
20
Я тоже тупой
notaceo
12
Второй раз сталкиваюсь с твоим ответом, второй раз такое случилось, я чувствую себя тупым!
Фабиан де Пабиан, 02
11
Я рад, что этот вопрос получил столько голосов. По крайней мере, я не проигрываю одиноким.
измельчение
6
Серьезно, это, наверное, уже 42-й раз, когда я выполняю тот же поиск в Google и читаю этот ответ xD
Сирил Дюшон-Дорис
19

Удаление app_name / repo также устранило эту проблему для меня.

люголаборатории
источник
1
Это срабатывало для меня несколько раз, когда возникали проблемы репо с развертыванием cap, но не всегда.
Хорхе Орпинель
15

Это происходит, когда репо на сервере для развертывания не работает. Мы говорим о чистом репозитории git, который Capistrano по умолчанию вставляет /var/www/$application/repo(для справки других людей).

В вашем случае у него нет локальной функции / ветки Capistrano, поэтому при запуске git archive feature/Capistranoничего не выводится на этот |канал. Для подтверждения, ssh на сервер, cd в / home / rails / rails-capistrano / repo и запустите git branch.

  1. Он запускает архив git как способ экспортировать дерево выбранной ветви. git archive «записывает его на стандартный вывод», поэтому Capistrano перенаправляет его в tar , чтобы сразу же распаковать архив в новую директорию выпуска. (Почему Капистрано выбрал это вместо git checkout, меня поражает.)

  2. tar не работает, потому что ничего не получает d:

Я могу придумать два возможных решения / способа устранения неполадок:

  • ssh на сервер и вручную удалите папку репо (например, в вашем случае / home / rails / rails-capistrano / repo), как указано @lugolabs
  • убедитесь, что репо сервера использует пульт, который вы ожидаете (ssh in, cd into repo / и run git remote -v) - вам может просто потребоваться обновить ваш :repo_urlв deploy.rb (и удалить репо / dir).
Хорхе Орпинель
источник
Есть ли у нас другой способ вместо удаления текущего репо?
hainguyen
4

Я думаю, что эта папка заполняется с помощью git pull, поэтому она не должна быть пустой. Если вы видите его пустым, значит проблема связана с git, а не с архивом.

Моя проблема заключалась в том, что URL-адрес моего репозитория capistrano deploy.rb был настроен на другой, чем тот проект, в котором я работал. Чтобы исправить эту проблему, мне также пришлось войти на сервер и удалить папку app_name / repo, которая должна кэшировали исходный неверный удаленный URL.

LessQuesar
источник
4
для людей, которые ищут в Google: также проверьте, установлена ​​ли у вас существующая ветка !!! ... у меня сработало :)
эквивалент8
4

Всякий раз, когда я сталкивался с этой ошибкой, это происходило из-за того, что ветвь, указанная в моем файле deploy / environment .rb, не была проверена в git. Сделайте add / commit / git push origin branch_name, и это, вероятно, заставит все работать.

нечеткая группа
источник
0

Я использую Bedrock Roots (wordpress) для разработки, capistrano для развертывания и git flow. Наткнулся на эту ошибку при попытке развернуть, находясь в ветке hotfix / xxx локально. Итак, я закончил текущий (объединил изменения в ветку разработки), а затем успешно развернул.

Сергей Дубовик
источник
Вы понимаете, почему слияние с разработкой устранило вашу проблему?
Эрик Фрэнсис
Развертывание других веток может работать, но остается вопрос, почему именно та, которую вы пытаетесь развернуть, не работает? У меня есть ответ.
Хорхе Орпинель
@EricFrancis На самом деле, теперь я знаю) Как говорится в проголосованном ответе, исправление не существовало на удаленном компьютере (откуда развертывается capistrano)
Сергей Дубовик