Go
vendoring
खोज…
टिप्पणियों
वेंडरिंग यह सुनिश्चित करने का एक तरीका है कि आपके सभी 3 पार्टी पैकेज जो आप अपने गो प्रोजेक्ट में उपयोग करते हैं, उन सभी के लिए संगत हैं जो आपके एप्लिकेशन के लिए विकसित होते हैं।
जब आपका गो पैकेज दूसरे पैकेज को आयात करता है, तो संकलक सामान्य रूप से आयातित परियोजना के पथ के लिए $GOPATH/src/
जाँच करता है। हालाँकि यदि आपके पैकेज में vendor
नाम का फ़ोल्डर है, तो संकलक पहले उस फ़ोल्डर में जाँच करेगा। इसका मतलब यह है कि आप अपने कोड को संशोधित किए बिना, अपने कोड रिपॉजिटरी के अंदर अन्य पार्टियों के पैकेज आयात कर सकते हैं।
वेंडरिंग गो 1.6 और इसके बाद के संस्करण में एक मानक विशेषता है। गो 1.5 में, आपको GO15VENDOREXPERIMENT=1
सक्षम करने के लिए GO15VENDOREXPERIMENT=1
का पर्यावरण चर सेट करना होगा।
बाहरी पैकेज जोड़ने के लिए govendor का उपयोग करें
गोवेंडर एक उपकरण है जिसका उपयोग 3 पार्टी पैकेजों को आपके कोड रिपॉजिटरी में एक तरह से आयात करने के लिए किया जाता है जो कि गोलंग के प्रतिशोध के साथ संगत है।
उदाहरण के लिए कहें कि आप 3rd पार्टी पैकेज bosun.org/slog
का उपयोग कर रहे हैं:
package main
import "bosun.org/slog"
func main() {
slog.Infof("Hello World")
}
आपकी निर्देशिका संरचना इस तरह दिख सकती है:
$GOPATH/src/
├── github.com/me/helloworld/
| ├── hello.go
├── bosun.org/slog/
| ├── ... (slog files)
हालाँकि, जो लोग github.com/me/helloworld
को क्लोन करते हैं, उनके पास $GOPATH/src/bosun.org/slog/
नहीं हो सकता है, जिससे उनके पैकेज गुम होने के कारण विफल हो जाते हैं।
अपने कमांड प्रॉम्प्ट पर निम्न कमांड चलाना, आपके गो पैकेज से सभी बाहरी पैकेजों को पकड़ लेगा और आवश्यक बिट्स को एक वेंडर फ़ोल्डर में पैकेज कर देगा:
govendor add +e
यह govendor को आपके वर्तमान रिपॉजिटरी में सभी बाहरी पैकेज जोड़ने का निर्देश देता है।
आपके एप्लिकेशन की निर्देशिका संरचना अब इस तरह दिखाई देगी:
$GOPATH/src/
├── github.com/me/helloworld/
| ├── vendor/
| | ├── bosun.org/slog/
| | | ├── ... (slog files)
| ├── hello.go
और जो आपके रिपॉजिटरी को क्लोन करते हैं वे भी आवश्यक 3 पार्टी पैकेजों को हड़प लेंगे।
प्रबंधित करने के लिए ट्रैश का उपयोग करना ।/vendor
trash
एक न्यूनतर vendor.conf
उपकरण है जिसे आप vendor.conf
फ़ाइल से कॉन्फ़िगर करते हैं। यह उदाहरण trash
खुद के लिए है:
# package
github.com/rancher/trash
github.com/Sirupsen/logrus v0.10.0
github.com/urfave/cli v1.18.0
github.com/cloudfoundry-incubator/candiedyaml 99c3df8 https://github.com/imikushin/candiedyaml.git
github.com/stretchr/testify v1.1.3
github.com/davecgh/go-spew 5215b55
github.com/pmezard/go-difflib 792786c
golang.org/x/sys a408501
पहली गैर-टिप्पणी लाइन वह पैकेज है जिसे हम प्रबंधित कर रहे हैं। / नोट के लिए (ध्यान दें: यह आपके प्रोजेक्ट में शाब्दिक रूप से कोई भी पैकेज हो सकता है, न कि केवल रूट एक)।
टिप्पणी लाइनें #
शुरू होती हैं।
प्रत्येक गैर-खाली और गैर-टिप्पणी लाइन एक निर्भरता को सूचीबद्ध करती है। केवल निर्भरता के "रूट" पैकेज को सूचीबद्ध करने की आवश्यकता है।
पैकेज नाम के बाद संस्करण (कमिट, टैग या शाखा) और वैकल्पिक रूप से पैकेज रिपॉजिटरी URL (डिफ़ॉल्ट रूप से, यह पैकेज के नाम से अनुमानित है) जाता है।
अपने ./vendor dir को पॉप्युलेट करने के लिए, आपको मौजूदा dir में vendor.conf
फाइल करना होगा और बस चलाना होगा:
$ trash
ट्रैश किए गए पुस्तकालयों को ~/.trash-cache
(डिफ़ॉल्ट रूप से), चेकआउट अनुरोधित संस्करणों में ./vendor
कर ./vendor
। फाइलों को ./vendor
dir और prune नॉन-इम्पोर्टेड पैकेज और टेस्ट फाइलों में कॉपी कर ./vendor
। यह अंतिम चरण आपके ./vendor को दुबला और क्षुद्र बनाए रखता है और आपके प्रोजेक्ट रेपो में स्थान बचाने में मदद करता है।
नोट: जैसा कि v0.2.5 ट्रैश लिनक्स और macOS के लिए उपलब्ध है, और git के सबसे लोकप्रिय एक के रूप में पैकेज को पुनः प्राप्त करने के लिए git का समर्थन करता है, लेकिन हम उन सभी अन्य को जोड़ने पर काम कर रहे हैं जिन्हें समर्थन go get
है।
गोलंग / dep का प्रयोग करें
golang / dep एक प्रोटोटाइप निर्भरता प्रबंधन उपकरण है। जल्द ही एक आधिकारिक संस्करण उपकरण होगा। वर्तमान स्थिति अल्फा ।
प्रयोग
के माध्यम से उपकरण प्राप्त करें
$ go get -u github.com/golang/dep/...
एक नए रेपो पर विशिष्ट उपयोग हो सकता है
$ dep init $ dep ensure -update
एक नए संस्करण के लिए एक निर्भरता को अद्यतन करने के लिए, आप चला सकते हैं
$ dep ensure github.com/pkg/errors@^0.8.0
ध्यान दें कि अब प्रकट और लॉक फ़ाइल स्वरूपों को अंतिम रूप दिया गया है । उपकरण बदलते ही ये संगत भी रहेंगे।
Gov.or Gov Govor टूल का उपयोग करके
# It creates vendor folder and vendor.json inside it
govendor init
# Add dependencies in vendor.json
govendor fetch <dependency>
# Usage on new repository
# fetch depenencies in vendor.json
govendor sync
उदाहरण विक्रेता। json
{
"comment": "",
"ignore": "test",
"package": [
{
"checksumSHA1": "kBeNcaKk56FguvPSUCEaH6AxpRc=",
"path": "github.com/golang/protobuf/proto",
"revision": "2bba0603135d7d7f5cb73b2125beeda19c09f4ef",
"revisionTime": "2017-03-31T03:19:02Z"
},
{
"checksumSHA1": "1DRAxdlWzS4U0xKN/yQ/fdNN7f0=",
"path": "github.com/syndtr/goleveldb/leveldb/errors",
"revision": "8c81ea47d4c41a385645e133e15510fc6a2a74b4",
"revisionTime": "2017-04-09T01:48:31Z"
}
],
"rootPath": "github.com/sample"
}