गो

2014-11-28 6 views
6

गो में निर्भरता संभाल लें, यदि आप किसी अन्य पैकेज का संदर्भ देते हैं, उदा। गिटहब पर कुछ, तो हमेशा master शाखा से नवीनतम संस्करण प्राप्त करें। हालांकि यह विकास के लिए बहुत अच्छा है, मुझे लगता है कि यह उत्पादन में एक समस्या है: इस तरह एक निर्माण पुन: उत्पन्न नहीं होता है।गो

तो, जाओ में सही तरीका निर्भरता का एक संस्करण ठीक करने के लिए क्या है, और कैसे कुशलतापूर्वक इस संभाल करने के लिए?

एक दोस्त ने मुझे godep पर इंगित किया, और यह ठीक लगता है, लेकिन मैं जानना चाहता था कि कौन से विकल्प हैं, और godep के बारे में क्या अच्छा/बुरा है?

उत्तर

9

जून 2015 अपडेट करें: विक्रेता के लिए पहला समर्थन गो 1.5 में अपना रास्ता बना रहा है!
c/10923/ देखें:

जब GO15VENDOREXPERIMENT=1 वातावरण में है, इस सीएल जाओ 1.5 विक्रेता प्रस्ताव के अनुसार आयात रास्तों में से संकल्प परिवर्तन:

  • अगर वहाँ एक स्रोत निर्देशिका d/vendor है, तो, d पर रूट की गई उपट्री के भीतर एक स्रोत फ़ाइल को संकलित करते समय import "p" को import "d/vendor/p" के रूप में व्याख्या किया गया है।
  • जब कई संभावित संकल्प होते हैं, तो सबसे विशिष्ट (सबसे लंबा) पथ जीतता है।
  • संक्षिप्त रूप हमेशा उपयोग किया जाना चाहिए: कोई आयात पथ स्पष्ट रूप से "/vendor/" हो सकता है।
  • आयातित टिप्पणियों में आयातित टिप्पणियों को अनदेखा किया जाता है।

अद्यतन मार्च 2015: जाने टीम एक जाना निर्भरता प्रबंधन भाषा के लिए एकीकृत प्रणाली को परिभाषित करने के बारे में सोच रहा है: बहस in this thread है।

हमें लगता है कि यह निर्भरता & vendoring मुद्दे को संबोधित शुरू करने के लिए, विशेष रूप से पहले भी कई परस्पर विरोधी उपकरण जाओ पारिस्थितिकी तंत्र में पैदा होती है और टुकड़ा सर्वोत्तम प्रथाओं, अनावश्यक रूप से टूलींग उलझी समय है। यह अच्छा होगा अगर समुदाय विक्रेता के लिए मानक तरीके से अभिसरण कर सके।

हमारा प्रस्ताव है कि जाओ परियोजना,

  1. आधिकारिक तौर पर आयात नए सिरे से लिखना (नहीं GOPATH संशोधन) विहित रास्ता निर्भरता पिन करने के लिए के रूप में के साथ एक "internal" निर्देशिका में vendoring की सिफारिश है।
  2. निर्भरताओं के लिए एक सामान्य कॉन्फ़िगरेशन फ़ाइल प्रारूप को परिभाषित करता है & विक्रेता
  3. गो 1.5 में cmd/go में कोई कोड परिवर्तन नहीं करता है। बाहरी उपकरण जैसे कि "godep" या "nut" 1 लागू करेगा) और 2)। हम 1.6+ में ऐसे टूल सहित पुनर्मूल्यांकन कर सकते हैं।
godep की

एक संभावित नकारात्मक पक्ष यह है कि आप अब उपयोग कर सकते हैं "जाना निर्माण" या सीधे "परीक्षण जाना है।"
आपको godep (या godep save टाइप करें) के साथ उन आदेशों से पहले की आवश्यकता है।

एक विकल्प glide है, जो क्लासिक go कमांड के साथ संगत है।

  • प्रबंधन परियोजना विशेष GOPATHs
  • आसानी निर्भरता प्रबंधन
  • समर्थन संस्करण संकुल
  • समर्थन अलियासिंग संकुल
  • "vendoring" के लिए की जरूरत निकालें (GitHub कांटे के साथ काम करने के लिए जैसे) या मंगल आयात आयात बयान
  • सभी गो टूल्स के साथ काम करें

आम तौर पर, लेख "Know your guarantees, Go edition" दिलचस्प है:

यह भी एक विचार पसंद है, जहां जाओ लेखकों नहीं एक सुविधा को लागू करने का फैसला किया जब उन्होंने महसूस किया कि व्यापार सामान्य थे है अच्छा नहीं।

धीमी संकलन और ब्लोटेड बाइनरी (जो एक ही सिक्का के दो किनारे हैं) से बचने के लिए यह विकल्प निम्न स्तर का कारण है।
याद रखें, पैकेज अन्य पैकेज पर निर्भर करते हैं। तो FooBar 2.1 पर निर्भर हो सकता है। FooBaz पर भी निर्भर हो सकता है जो बदले में Bar 1.9, और पेड़ पर निर्भर करता है। तो इसका मतलब है कि लगभग समान कोड की कई प्रतियां संकलित और लिंक करना।

उसी पैकेज के कई संस्करणों के आधार पर यह भी मतलब है कि कौन सा संस्करण कॉल कर रहा है, जिससे निर्भरता गड़बड़ी आपके स्रोत कोड में आती है।

जो हमें इस सुविधा पर जाने वाले गो प्लेटफ़ॉर्म के पीछे उच्च स्तरीय तर्क के लिए प्रेरित करता है: उनके पास एक तार्किक समाधान नहीं था जिसे वे स्वीकार्य मानते थे। ऐसा नहीं है कि वे समस्या को समझ नहीं पाते हैं; यह है कि, फिलहाल, उनके पास कोई समाधान नहीं है। इसलिए वे एक प्रतिकूल एक पर कोई सुविधा नहीं चुनते हैं।

1

आप निर्भरताओं को संभालते हैं जैसे आप अन्य भाषाओं में निर्भरता को संभालते हैं: आप विक्रेता। जाने के लिए कोई नेक्सस नहीं है जो विक्रेता को अधिकतर "पुस्तकालय" फ़ोल्डर में बाहरी पुस्तकालयों की प्रतिलिपि बनाता है, यहां उपकरण मदद कर रहे हैं। व्यक्तिगत रूप से मैंने यह सब "फिक्स वर्जन" पैनिक थोड़ा अतिरंजित पाया क्योंकि यह बिना अच्छी तरह से काम करता है।

आप http://labix.org/gopkg.in पर एक नज़र डालें और निर्भरता प्रबंधन के लिए खोज golang-पागल करना चाहते हो सकता है। मुझे लगता है कि इसके लिए समर्पित एक पूरी मेलिंग सूची भी है।

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