2013-09-05 13 views
8

मैं इसकंपोज़र को git: // के बजाय https: // का उपयोग करने के लिए कैसे मजबूर करें?

"repositories": [ 
    { 
     "type": "package", 
     "package": { 
      "name": "myrepo", 
      "version": "dev-master", 
      "source": { 
       "url": "https://github.com/me/myrepo.git", 
       "type": "git", 
       "reference": "master" 
      } 
     } 
    }, 

की तरह कुछ है लेकिन जब संगीतकार रेपो, रिमोट (origin और composer) .git/config में खींचती है git://github.com/me/myrepo.git के रूप में स्थापित कर रहे हैं।

[remote "origin"] 
    url = git://github.com/me/myrepo.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    pushurl = [email protected]:me/myrepo.git 
[branch "master"] 
    remote = composer 
    merge = refs/heads/master 
[remote "composer"] 
    url = git://github.com/me/myrepo.git 
    fetch = +refs/heads/*:refs/remotes/composer/* 

मैं इसे करने के लिए धक्का नहीं कर सकते, क्योंकि Github git:// साथ काम नहीं करता। मुझे इसे मैन्युअल रूप से https:// में बदलना है और फिर धक्का देना है। मैंने URL में https:// निर्दिष्ट किया है, लेकिन यह सम्मान क्यों नहीं है?

उत्तर

17

आप प्रोटोकॉल इस आदेश के साथ GitHub के लिए इस्तेमाल किया बदल सकते हैं:

composer config --global github-protocols https 

फिर पुन: स्थापित करने विक्रेताओं आप क्या चाहते हैं क्या करना चाहिए।

+0

ज़ेन फ्रेमवर्क 2 पर कमांड 'php composer.phar config --global github-प्रोटोकॉल https' – KalenGi

+0

@KalenGi: यह वही बात है, लेकिन आप स्थानीय रूप से स्थापित' संगीतकार 'का उपयोग कर निष्पादन योग्य कर रहे हैं। फार 'एक्सटेंशन जोड़ा गया। – iconoclast

+0

@ सेल्डेक: क्या यह गिटहब के अलावा अन्य साइटों के लिए काम करेगा? उदाहरण के लिए: git.code.sf.net? – iconoclast

4

github-protocols विकल्प केवल गिटहब के साथ काम करता है, लेकिन समस्या को हल करने का एक और तरीका है जो आपके गिट सर्वर के लिए गिटहब का उपयोग करने पर निर्भर नहीं है।

आप बस एक अलग यूआरएल का उपयोग करने के लिए संगीतकार को बताते हैं, वैसे ही अगर आप एक पैकेज फोर्क करते हैं तो आप यह सुनिश्चित करना चाहते हैं कि संगीतकार ने डिफ़ॉल्ट पैकेज के बजाय अपने कांटा का इस्तेमाल किया हो।

एक उदाहरण है जहाँ मैं एक पैकेज के लिए अपने ही कांटा का उपयोग है, और मैं किसी अन्य के लिए http बजाय git के लिए URL में प्रोटोकॉल के लिए मजबूर:

"repositories": [{ 
    "type": "vcs", 
    "url": "https://github.com/brandondrew/laravel4-PHPExcel" 
},{ 
    "type": "vcs", 
    "url": "http://git.code.sf.net/p/tcpdf/code" 
}], 

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

टीसीपीडीएफ के मामले में, वे एकमात्र पैकेज हैं जो मेरा ऐप उपयोग करता है जो गिट प्रोटोकॉल को निर्दिष्ट करता है, इसलिए यह उठने के लिए हास्यास्पद लग रहा था कि मेरे ग्राहक स्थान पर सुरक्षा टीम से खुलने के लिए हास्यास्पद लग रहा था पोर्ट 9418 जब मैं बस इसके बजाय HTTP का उपयोग कर सकता था, जो (मेरी राय में) उन्हें शुरू करने के लिए उपयोग करना चाहिए था। सभी मैं URL में बदला गया http साथ git की जगह है, लेकिन यह किसी भी अन्य उपयोगकर्ता द्वारा निर्दिष्ट यूआरएल की तरह काम करता है तो आप URL कि संगीतकार एक दिया पैकेज के लिए उपयोग करता है निर्दिष्ट करने के लिए अनुमति देता है।


अद्यतन:

बस पूरा किया जा रहा है की खातिर

, मुझे लगता है मुझे लगता है कि तुम भी रूप में अच्छी तरह Git स्तर पर समस्या का समाधान कर सकते हैं उल्लेख करना चाहिए। ऐप के मामले में जहां मुझे इस मुद्दे का सामना करना पड़ा, मुझे लगा कि संगीतकार में ऐसा करना अधिक उपयुक्त था, लेकिन आपकी स्थिति भिन्न हो सकती है, और इस स्थिति के लिए सबसे अच्छा तरीका क्या है इसके बारे में आपके विचार हो सकते हैं।

Git दृष्टिकोण और अधिक वैश्विक है, जो आप एक फायदा (या नहीं) के रूप में देख सकते हैं बनाया जा सकता है।के साथ सरल मामले किसी अन्य के लिए एक यूआरएल का स्थानापन्न करने Git बताने के लिए है:

git config --global url."http://git.code.sf.net/p/tcpdf/code".insteadOf "git://git.code.sf.net/p/tcpdf/code" 

लेकिन क्या आप भी Git बता हमेशा बदलने के लिए कर सकते हैं '// Git' 'https: //':

git config --global url."https://".insteadOf "git://" 

उदाहरणों में मैंने इसे उपयोगकर्ता की वैश्विक कॉन्फ़िगरेशन फ़ाइल में रखा है, लेकिन आप को --local के साथ प्रतिस्थापन की कॉन्फ़िगरेशन फ़ाइल (या --system में सिस्टम की कॉन्फ़िगरेशन फ़ाइल में रखने के लिए) को प्रतिस्थापित कर सकते हैं।

+1

धन्यवाद, टीसीपीडीएफ के लिए पूरी तरह से काम करता है – loicfavory

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

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