2014-01-14 2 views
76
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  

Я смущен о двух вещах:Capistrano ошибка дегтя: Это не выглядит как архив дегтя

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

  2. Почему tar неудачу?

ответ

221

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

+28

Такой лба. –

+8

Я тоже немой – notaceo

+4

Второй раз я столкнулся с твоим ответом, второй раз это случилось, я чувствую себя глупым! –

4

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

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

+4

для людей, ищущих работу с людьми: также проверьте, если вы установите существующую ветку !!! ... работал для меня :) – equivalent8

17

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

+1

Это работало для меня несколько раз, когда есть проблемы с репо с развертыванием крышки, но не всегда. –

0

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

+0

Вы понимаете, почему слияние в разработку фиксировало вашу проблему? –

+0

Развертывание других ветвей может работать, но остается вопрос, почему именно тот, который вы пытаетесь развернуть, не работает? У меня может быть ответ. –

+0

@ EricFrancis На самом деле, я делаю сейчас). Как говорится в голосовом ответе, исправление не существует на удаленном (где отключается capistrano) –

13

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

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

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

  2. деготь терпит неудачу, потому что это получать ничего d:

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

  • SSH на сервер и вручную удалить папку РЭПО (например, в вашем случае/дома/рельсы/рельсы-Capistrano/репо), как упомянуто @lugolabs
  • убедитесь, что репо сервера использует ожидаемый пульт (ssh in, cd в repo/и запускается git remote -v) - вам просто нужно обновить :repo_url в файле deploy.rb (и удалить repo/dir).
+0

Есть ли у нас другой способ вместо удаления текущего репо? – hainguyen

2

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

Смежные вопросы