Tela de error: Error grave: local () ha encontrado un error (código de retorno 2) durante la ejecución de 'git commit -m 'mensaje'

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

  •  18-09-2019
  •  | 
  •  

Pregunta

Estoy intentando configurar un fabfile para desplegar mi aplicación Django.

No puedo entender por qué estoy recibiendo este error:

  

Fatal error: local () encontrado un error (código de retorno 2) durante la ejecución de 'git commit -m 'cambiado la configuración de 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.

A continuación, si la función de la tela:

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'")  

¿Es posible hacer un git commit de Tela?

¿Fue útil?

Solución

Yo era capaz de diagnosticar el problema cuando he añadido captura = False a la declaración:

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

Esto permitió que el error que se mostrará más detallados.

Al parecer, el mantenedor de la tela será revertir el comportamiento de local no volver a capturar de forma predeterminada, en 1,0.

Otros consejos

¿Es esta una cuestión relacionada pitón similar a la descrita en el este hilo ?

  

El principal problema con esto es que la captura stdout / stderr es per-run / sudo invocación y no por tareas.

     

Sería maravilloso si pudiera explicar cómo podría recoger salida y error sólo modificando el archivo llamado fabfile_runner.py .
  Idealmente la tarea de tela en sí podría estar sin modificar, esto permitiría cargar la fábrica del mismo archivo que ha probado de forma manual.

     

Salida de la fuente de la tela y buscar en la carpeta 'pruebas', específicamente las pruebas / utils.py. Contiene un único decorador, @mock_streams, que es capaz de envolver una función (ninguna función en cualquier código Python - no es específica de la tela, como he mencionado). sys.stdout y redirigir y / o sys.stderr para la captura / examen

     

Está diseñado para su uso alrededor funciones, siendo un decorador, por lo que podría utilizarlo directamente mediante la modificación de su fabfile_runner.py este modo:

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top