2012-07-11 12 views
7
  1. मेरे पास रूट Mercurial repo (वेब ​​साइट) है।
  2. मैं GitHub mirror से /wp उपनिर्देशिका में वर्डप्रेस क्लोन करता हूं।
  3. चूंकि मैं WP का बहुत विशिष्ट (स्थिर) संस्करण चाहता हूं, लेकिन कोई चल रहा विकास मैं git checkout 3.4.1 (जहां 3.4.1 टैग है)।
  4. मैं इसे मूल Mercurial repo में subrepo के रूप में सेटअप करता हूं और प्रतिबद्ध करता हूं (WP संशोधन को .hgsubstate में ठीक से कब्जा कर लिया जाता है)।

और यहां समस्या शुरू होती है। मैं hg push करते हैं और जब यह WP के लिए हो जाता है:गिट सबरेपो पुश पर फंसे Mercurial कैसे ठीक करें?

no branch checked out in subrepo wp 
cannot push revision e9bc63e25dc40c07ac3a6778dc2b48e1aa486e36 

और फिर यह सिर्फ इस्तीफा। रूट रेपो के लिए पुश भी कोशिश नहीं की जाती है।

  1. कोई बदलाव नहीं
  2. पढ़ा है है:

    मुझे समझ में क्यों मर्क्युरियल की कोशिश करता subrepo (अभिप्रेत व्यवहार) पुश करने के लिए है, लेकिन मैं समझ नहीं कर सकते क्यों यह subrepo उस पर पूरी तरह से विफल प्रबंधन करता है वैसे मूल उत्पत्ति

यह कैसे समझें कि मुझे यह विशिष्ट संशोधन चाहिए और मैं इसे गिट सबरेपो के साथ गड़बड़ नहीं करना चाहता हूं?

उत्तर

2

आप इस सेटअप के साथ कुछ समस्याएं चलाने जा रहे हैं।

पहले, ऐसा लगता है कि अस्थिर एक अलग प्रमुख साथ Git subrepos नहीं संभाल सकते हैं।

जब आप निष्पादित git checkout 3.4.1, अपने रेपो में प्रवेश करती है एक detached HEAD राज्य (आप उस प्रभाव के लिए एक चेतावनी देखा है चाहिए जब आप आदेश निष्पादित)। उस बिंदु पर, यदि आप git branch चलाते हैं, तो आप देखते हैं कि (no branch) सक्रिय शाखा के रूप में सूचीबद्ध है। जब मर्कूरियल धक्का देने का प्रयास करता है, तो यह इस स्थिति पर चकित होता है। आप mercurial developer list से ऐसा क्यों पूछ सकते हैं, लेकिन यह संभवतः मौजूदा उपप्रो कार्यान्वयन की सीमा है।

दूसरा, Mercurial गिट subrepos सिंक्रनाइज़ करने के लिए पुश कमांड का उपयोग करता है।

यदि आप git checkout -b <integration_branch> 3.4.1 चला रहे थे, तो यह अलग सिर स्थिति से बाहर निकलता है। हालांकि, जब आप hg push पर आज़माते हैं, तो यह वास्तव में रिमोट गिट रेपो को धक्का देने का प्रयास करेगा। एक Mercurial subrepo के लिए, यदि आपके पास रिमोट तक पुश पहुंच नहीं है, तो भी यह आउटगोइंग परिवर्तनों की जांच कर सकता है। हालांकि, गिटहब को आपको प्रमाणित करने की आवश्यकता है इससे पहले कि यह आपको बताएगा कि क्या दो प्रतिनिधि सिंक्रनाइज़ हैं। इसलिए, यदि आपके पास गिट रिमोट तक पुश एक्सेस नहीं है तो यह असफल हो जाएगा। यह Mercurial की subrepo रणनीति के डिजाइन का हिस्सा है।

आप इस सेटअप के साथ जारी रखने के लिए की जरूरत है, तो आप शायद निम्न करना चाहिए:

  1. GitHub पर वर्डप्रेस रेपो की अपनी कांटा बनाएँ।
  2. अपने कांटे को Mercurial subrepo निर्देशिका में क्लोन करें।
  3. git checkout -b <branch_name> 3.4.1
  4. वहाँ से

जारी इस related question में कुछ अतिरिक्त जानकारी भी नहीं है।

+0

हाँ, ऐसा लगता है कि अलग-अलग सिर यहां मुद्दा है (हालांकि मैं इसे गिट की कमी के रूप में देखता हूं क्योंकि मर्कुरियल नहीं है - अगर उसके पास हेक सक्रिय शाखा पदार्थ को धक्का देने के लिए कुछ भी नहीं है? ..)। आपका दूसरा बिंदु गैर-मुद्दा प्रतीत होता है, हालांकि, अन्य गिटहब सब्रेप्स को टिप संशोधन कार्य ठीक करने के लिए अपडेट किया गया है। मेरा वर्तमान समाधान वर्डप्रेस के Mercurial दर्पण को बनाने और उपयोग करने के लिए है, लेकिन अभी भी दिलचस्पी है अगर इस अलग सामग्री को क्लोनिंग और चीजों को ब्रांच करने के बिना subrepo के रूप में काम किया जा सकता है ... – Rarst

+0

@Rarst: जब तक आपके अन्य गिटहब सब्रेप्स 'टिप' पर इंगित करते हैं ', यह ठीक होगा। लेकिन जैसे ही आप पहले के संशोधन का उपयोग करने के लिए स्थानीय गिट शाखा बनाते हैं (उदाहरण के लिए एक पुराने टैग का उपयोग करें, एक अलग सिर के बिना), आपको एक ही त्रुटि मिल जाएगी। –

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