2015-07-01 11 views
8

मुझे संगीतकार के साथ कोई समस्या है। मैं स्थानीय वातावरण में गिट के साथ काम कर रहा हूं। मैं एकमात्र डेवलपर हूं।संगीतकार तैनाती पर मेरी निर्भरताओं को क्यों हटाता है?

जब मुझे कुछ और निर्भरताओं की आवश्यकता होती है (या कुछ संस्करणों को बदलने की आवश्यकता है), तो मैं composer.json संपादित करता हूं और composer install स्थानीय रूप से चलाता हूं।

सबकुछ ठीक है।

तब, जब सब कुछ स्थानीय स्तर पर काम करता है, मैं अपने परिवर्तनों (composer.json और composer.lock सहित) के लिए प्रतिबद्ध है और मेरे उत्पादन सर्वर से धक्का।

पोस्ट-प्राप्त स्क्रिप्ट स्रोत अद्यतन करता है और दूरस्थ सर्वर पर composer install चलाता है।

क्या उम्मीद है:

  • संगीतकार composer.lock फ़ाइल के अनुसार नई निर्भरता स्थापित करना चाहिए।
  • मुझे खुश होना चाहिए।

क्या होता है:

  • संगीतकार नाराज है:

चेतावनी: ताला फ़ाइल composer.json में नवीनतम परिवर्तनों के साथ तारीख तक नहीं है। आपको पुरानी निर्भरता मिल रही है। पर अपडेट चलाएं उन्हें अपडेट करें।

  • संगीतकार सभी निर्भरता निकाल देता है।
  • मेरा उत्पादन टूट गया है।
  • मैं एक दिल का दौरा
  • मैं ssh के माध्यम से अपने सर्वर में लॉग इन करें और सब कुछ ठीक काम करने के लिए एक composer update चलाने की ज़रूरत नहीं है, लेकिन मुझे पता है कि एक composer update एक उत्पादन सर्वर पर अनुशंसित नहीं है।

    composer install 
    Loading composer repositories with package information 
    Installing dependencies (including require-dev) from lock file 
    Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them. 
        - Removing guzzle/guzzle (v3.9.3) 
        - Removing symfony/event-dispatcher (v2.7.1) 
        - Removing geoip/geoip (v1.15) 
        - Removing pimple/pimple (v3.0.0) 
        - Removing cocur/slugify (1.1.x-dev) 
        - Removing bentools/url (0.2) 
        - Removing bentools/simplexmlextended (1.2.0) 
    Generating autoload files 
    

    क्या मैं गलत कर रहा हूँ:

यहाँ बाद प्राप्त संगीतकार के अनुभाग के उत्पादन में है?

धन्यवाद, बेन

उत्तर

5

यह चेतावनी

चेतावनी: ताला फ़ाइल composer.json में नवीनतम परिवर्तनों के साथ तारीख तक नहीं है, यदि आप पुरानी निर्भरता हो रही हो सकता है, को चलाने अद्यतन अद्यतन करने के लिए उन्हें।

है, जिसमें आपके composer.json की md5sumcomposer.lock में संग्रहीत एक से अलग है:

{ 
    "hash": "b15ed9405e8547867f74973ce8add172", 
    "packages": [ ... ] 
} 

सुनिश्चित करें कि आपके composer.json और composer.lock अपने स्थानीय लोगों (उनके md5sums तुलना) के साथ हूबहू हैं । मुझे संदेह है कि आपकी तैनाती श्रृंखला में कुछ सही ढंग से अपडेट नहीं कर रहा है।

composer require new/package ~2.5 

या यदि composer.json मैन्युअल रूप से संपादित किया गया था कम से कम

composer update new/package 

चलने वाले हर अतिरिक्त जोड़ा पैकेज के लिए के बाद सुनिश्चित करने के लिए यह जरूरी है कि:

सुनिश्चित करें कि आप require कमांड के साथ स्थानीय स्तर पर अपने निर्भरता जोड़ा बनाओ आपके composer.lock में ठीक से जोड़ा गया है।

एक और दृष्टिकोण: उत्पादन में
रन composer update --lock। यह आपकी लॉक फ़ाइल में हैश अपडेट करेगा लेकिन आपके विक्रेताओं को अपग्रेड नहीं करेगा।

फिर composer install चलाएं ताकि comoser.lock से विक्रेताओं को इंस्टॉल किया जा सके।

0

जब मुझे कुछ और निर्भरताओं की आवश्यकता होती है (या कुछ संस्करणों को बदलने की आवश्यकता है), तो मैं composer.json संपादित करता हूं और संगीतकार को स्थानीय रूप से इंस्टॉल करता हूं।

यह गलत है। आप composer.json संपादित कर सकते हैं और फिर composer update चलाएं, या आप कंपोज़र को जेसन फ़ाइल का आंतरिक संपादन करने दें और केवल composer require new/package (वैकल्पिक रूप से संस्करण के साथ) चलाएं।

किसी भी तरह से, आप एक बदल composer.json और composer.lock फ़ाइल के साथ खत्म करना चाहिए, दोनों अपने भंडार में प्रतिबद्ध है, और प्रत्याशित परिणाम है कि ताला फ़ाइल सही संस्करण है, जो के साथ उत्पादन में स्थापित किया जाना चाहिए में सभी संकुल में शामिल होंगे है एक नियमित composer install रन।

ध्यान दें कि आपका वर्कफ़्लो अभी भी बहुत खतरनाक है। यदि आप धक्का देते हैं, और गिथब नीचे है - आप ज़िप को कैसे इंस्टॉल करेंगे?

+0

ठीक है, मैं इसे इस तरह से करूँगा। मामले के लिए जिथूब नीचे है, आपकी सलाह क्या है? – user4994579

+0

न तो गिट और न ही संगीतकार तैनाती उपकरण हैं। वे इतने सारे के रूप में उपयोग करते हैं, लेकिन इसका मतलब यह नहीं है कि यह सबसे अच्छा समाधान है। आम तौर पर, आप एक ज़िप या टीजीजेड को एक साथ रखेंगे जिसमें उत्पादन अपडेट के लिए आवश्यक सभी कोड शामिल हैं (गिट में कोड और संगीतकार से सबकुछ सहित), इसे उत्पादन मशीन पर ले जाएं, इसे अनपैक करें, (इसे छुपाएं जगह - वैकल्पिक), और उसके बाद तुरंत स्विच करें।इसके लिए उपकरण हैं - कैपिस्ट्रानो उनमें से एक है। गीथब डाउनटाइम और तेज़ पहुंच से बचने के लिए, आप उपयोग की निर्भरताओं की एक स्थानीय प्रतिलिपि बनाने के लिए सैटिस का उपयोग करें। विवरण एक नया सवाल वारंट होगा। – Sven

संबंधित मुद्दे