خطأ في النسيج: خطأ فادح: محلي () واجه خطأ (رمز الإرجاع 2) أثناء تنفيذ رسالة "GIT Comment -m"

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

  •  18-09-2019
  •  | 
  •  

سؤال

أحاول إعداد FabFile لنشر تطبيق Django الخاص بي.

لا أستطيع معرفة سبب تلقي هذا الخطأ:

خطأ فادح: محلي () واجه خطأ (رمز الإرجاع 2) أثناء تنفيذ إعدادات "Git Comment -m" التي تم تغييرها ل 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.

هنا إذا كانت وظيفة النسيج:

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

هل من الممكن جعل جيت ارتكاب من النسيج؟

هل كانت مفيدة؟

المحلول

تمكنت من تشخيص المشكلة عندما أضفت التقاط = خطأ إلى الإعلان:

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

سمح هذا الخطأ المراد عرضه بشكل أكبر.

على ما يبدو، سيعود المشرفون للنسيج للعودة localالسلوك مرة أخرى لعدم التقاط افتراضيا، في 1.0.

نصائح أخرى

هل هذه مشكلة متعلقة بثثون مثل تلك الموصوفة في هذا الموضوع?

المشكلة الرئيسية مع هذا هو أن stdout/stderr الاستيلاء على التحذير في المدى / السودو وليس لكل مهمة.

سيكون رائعا إذا كنت تستطيع أن تشرح لي كيف يمكنني جمع انتاجو خطأ فقط تعديل الملف يسمى fabfile_runner.py.
من المؤدلة أن تكون مهمة النسيج نفسها غير ضرورية، سيسمح ذلك بتحميل المصنع نفس الملف الذي تم اختباره يدويا.

تحقق من مصدر النسيج والنظر في مجلد "الاختبارات"، وتحديدا اختبارات / Utils.py. أنه يحتوي على ديكور واحد، @mock_streams, ، والتي هي قادرة على التخلص من الوظيفة (أي وظيفة في أي رمز بيثون - أنها ليست محددة من القماش، كما ذكرت) وإعادة توجيه sys.stdout و / أو sys.stderr للالتقاط / الفحص.

إنه مصمم للاستخدام حول الوظائف، كونه ديكور، حتى تتمكن من استخدامه مباشرة عن طريق تعديل الخاص بك fabfile_runner.py مثل ذلك:

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top