erreur Tissu: Erreur fatale: local () a rencontré une erreur (code de retour 2) lors de l'exécution message « git commit -m ''

StackOverflow https://stackoverflow.com/questions/1875306

  •  18-09-2019
  •  | 
  •  

Question

Je suis en train d'installer un fabfile pour déployer mon application Django.

Je ne peux pas comprendre pourquoi je reçois cette erreur:

  

Erreur fatale: local () a rencontré une erreur (code de retour 2) lors de l'exécution « git commit -m 'changé les paramètres pour prodserver'

$ fab create_branch_deploy_to_prodserver
[localhost] run: git checkout prodserver_server
[localhost] run: git merge master
[localhost] run: cp settings_prodserver.py settings.py
[localhost] run: git add settings.py
[localhost] run: git commit -m 'changed settings for prodserver'

Fatal error: local() encountered an error (return code 1) while executing 'git commit -m 'changed settings for prodserver''

Aborting.

Ici, si la fonction du tissu:

def create_branch_deploy_to_prodserver():  
    local("git checkout prodserver_server")  
    local("git merge master")  
    local('cp settings_prodserver.py settings.py') # 
    #local('git rm fabfile.py') #This is also creating error so it's commented out
    local('git add settings.py')  
    local("git commit -m 'changed settings for prodserver'")  

Est-il possible de faire un git commit de tissu?

Était-ce utile?

La solution

J'ai pu diagnostiquer le problème quand j'ai ajouté la capture = False à la déclaration:

local('git rm fabfile.py', capture=False)
local('git add settings.py', capture=False)

Cela a permis à l'erreur à afficher en plus verbeux.

Apparemment, le mainteneur du tissu sera de revenir sur le comportement de retour local de ne pas capturer par défaut, dans 1.0.

Autres conseils

Est-ce un problème lié python comme celui décrit dans ce fil ?

  

Le principal problème avec ceci est que la capture stdout / stderr est par-run / invocation sudo et non par tâche.

     

Il serait merveilleux si vous pouviez me expliquer comment je pourrais recueillir sortie et erreur que par la modification du fichier appelé fabfile_runner.py .
  Idealement la tâche de tissu lui-même pourrait être non modifiée, cela permettrait de télécharger l'usine le même fichier que vous avez testé manuellement.

     

Consultez la source de tissu et regardez dans le dossier « tests », teste spécifiquement / utils.py. Il contient un décorateur unique, @mock_streams, qui est capable d'enrouler une fonction (toute fonction dans un code de python - il est pas comme je l'ai spécifique, de tissus). Et rediriger sys.stdout et / ou sys.stderr pour la capture / Examen

     

Il est conçu pour une utilisation autour des fonctions, étant un décorateur, vous pouvez donc l'utiliser directement en modifiant votre fabfile_runner.py comme ceci:

fabfile_runner.py

from StringIO import StringIO
import sys
from test_fabfile import hello_world

def execute(task):
    output = StringIO()
    error = StringIO()
    sys.stdout = output
    sys.stderr = error
    task()
    sys.stdout = sys.__stdout__
    sys.stderr = sys.__stderr__
    return (output.getvalue(), error.getvalue())

output, error = execute(hello_world)
print "output : %s" %output
print "error : %s" %error
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top