web-dev-qa-db-fra.com

Capistrano error tar: Cela ne ressemble pas à une archive tar

 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      

Je suis confus sur deux choses:

  1. Pourquoi Capistrano exécute-t-il git archive ici:
    git archive feature/Capistrano | tar -x -C /home/Rails/rails-capistrano/releases/20140114234157

  2. Pourquoi tar échoue?

83
Eric Francis

J'ai eu le même problème, jusqu'à ce que je réalise que je retirais la branche inexistante de git.

268
kubbing

La suppression de app_name/repo a également résolu ce problème pour moi.

19
lugolabs

Cela se produit lorsque le référentiel sur le serveur à déployer est perturbé. Nous parlons du rapport de base non git que Capistrano mettrait par défaut dans /var/www/$application/repo (pour la référence d'autres personnes).

Dans votre cas, il ne possède pas de branche feature/Capistrano locale. Ainsi, lors de l'exécution de git archive feature/Capistrano, rien ne s'affiche dans ce tube |. Pour confirmer, ssh sur le serveur, cd dans/home/Rails/rails-capistrano/repo et exécutez git branch.

  1. Il utilise git archive comme moyen d’exporter l’arbre de la branche sélectionnée. git archive "écrit dans la sortie standard" donc Capistrano le redirige vers tar afin de décompresser l'archive immédiatement dans votre nouveau répertoire de publication . (Pourquoi Capistrano l'a choisi à la place de git checkout me vainc.)

  2. tar échoue car il ne reçoit rien d:

Je peux penser à deux solutions/solutions possibles pour résoudre les problèmes suivants:

  • ssh sur le serveur et supprimez manuellement le dossier repo (par exemple, dans votre cas/home/Rails/rails-capistrano/repo) comme indiqué par @lugolabs
  • assurez-vous que le référentiel du serveur utilise la télécommande que vous attendez (ssh in, cd dans repo/et exécutez git remote -v) - vous devrez peut-être simplement mettre à jour votre :repo_url dans deploy.rb (et supprimer le repo/dir).
14
Jorge Orpinel

Je pense que ce dossier est rempli via un git pull, il ne doit donc pas être vide. Si vous le voyez vide, le problème vient du git, pas de l'archive.

Le problème que je rencontrais était que mon URL de référentiel capistrano deploy.rb avait été définie sur un projet différent de celui dans lequel je travaillais. ont mis en cache l'URL distante mauvaise d'origine.

4
LessQuesar

Chaque fois que j'ai rencontré cette erreur, c'est parce que la branche spécifiée dans mon fichier / environment .rb de deploy n'a pas été archivée dans git. Faites un add/commit/git Push Origine nom de branche et cela fera probablement fonctionner les choses.

3
fuzzygroup

J'utilise Bedrock Roots (wordpress) pour le développement, capistrano pour les déploiements et le flux git…. J'ai donc terminé les modifications actuelles (modifications fusionnées pour développer la branche), puis déployé avec succès.

0
Sergey Dubovik