8

मुझे Mercurial में subrepos के साथ एक परियोजना की स्थापना में परेशानी हो रही है।क्या मैं Mercurial में subrepos घोंसला कर सकते हैं?

लक्ष्य:

मैं बहुत तरह संरचना स्थापित करना चाहते हैं:

-- Build_Repo (this repo will be used to track dependencies) 
    -- Subrepo_A (this is the main source) 
    -- Modules (Part of Subrepo_A) 
     -- Subrepo_B 

तो वहाँ तीन रेपोस हैं: निर्माण, ए, बी और बी ए के अंदर नेस्टेड है, एक है जड़ निर्माण भंडार के अंदर घोंसला। निर्माण रेपो का उपयोग निर्भरताओं को ट्रैक करने के लिए किया जाएगा, subrepo ए मुख्य स्रोत फ़ाइलों को ट्रैक करने के लिए उपयोग किया जाएगा, और subrepo बी (और अन्य) मॉड्यूल/प्लगइन विकास को ट्रैक करने के लिए उपयोग किया जाएगा।

समस्या/प्रश्न

मैं प्रारंभिक निर्माण रेपो और बस .hgsub फाइल करने के लिए Subrepo_A पथ और स्रोत को जोड़ने और निर्माण रेपो के लिए यह करने से नेस्टेड Subrepo_A की स्थापना कोई समस्या नहीं है। हालांकि, जब मैं subrepo_B पथ/स्रोत का निर्माण रेपो के .hgsub में जोड़ने के लिए, और फिर मैं त्रुटि संदेश मिलता है प्रतिबद्ध करने के लिए कोशिश के बाद:

बीच में बंद करें: पथ 'Subrepo_A/मॉड्यूल/Sebrepo_B' है अंदर नेस्टेड रेपो ' Subrepo_A '

Mercurial पहले से ही घोंसला वाले रेपो के अंदर घोंसला वाले रेपो की तरह प्रतीत नहीं होता है। क्या यह सच है, या क्या मुझे कुछ याद आ रही है? निर्माण/निर्भरताओं को प्रबंधित करने के तरीके पर कोई बेहतर विचार?

+0

आप किस भाषा/टूलसेट का उपयोग कर रहे हैं? निर्भरता प्रबंधन के रूप में आम तौर पर उप-प्रतिनिधि उप-इष्टतम होते हैं। मुझे एक मॉड्यूल बनाना पसंद है, इसकी कलाकृतियों को प्रकाशित करना (नेक्सस, आर्टिफैक्टरी, इत्यादि) और निर्भर मॉड्यूल इसे उपभोग करते हैं। – thekbb

उत्तर

0

आपकी स्थिति में, आपको subrepoA को subrepoB जोड़ना होगा।

मैं निर्भरताओं को स्थानांतरित करने की कोशिश करने का सुझाव दूंगा ताकि आपके पेड़ में केवल 2 स्तर हों, लेकिन यह संभव नहीं हो सकता है। यह हमेशा अन्यथा एक बहुत ही आसान अनुभव नहीं है।

+1

इस स्थिति में निर्भरताओं का प्रबंधन करने के तरीके पर कोई अन्य सिफारिशें? –

+0

इसका उत्तर, जैसा कि अन्य ने उल्लेख किया है, subrepoB subrepoA का सबप्रो बनाना है, और subrepoA build_repo का सबप्रो है। ऐसा लगता है कि आप किसी कारण से ऐसा नहीं करना चाहते हैं। यदि ऐसा इसलिए है क्योंकि subrepoA एक ऐसे प्रोजेक्ट का क्लोन है जिसे आप नियंत्रित नहीं करते हैं, और इसलिए उपप्रवाह नहीं जोड़ सकते हैं, इसके आस-पास एक तरीका एक subkoA का एक निजी कांटा/क्लोन बनाना है, और इसे " subrepoA "। इस तरह आप इसमें अनुकूलन जोड़ सकते हैं (इसमें सब्रेपो जोड़ें), और अभी भी subrepoA के लिए pulic/बाहरी अपडेट के साथ समन्वयित रहें। –

1

यहां समस्या Mercurial की अपरिहार्य बाधाओं में से एक है: एक भंडार आपके कंप्यूटर पर एक फ़ोल्डर पेड़ से मेल खाता है। भंडार उस फ़ोल्डर के पेड़ के नीचे सबकुछ के लिए ज़िम्मेदार है।

जब आपके शीर्ष-स्तरीय भंडार में उप-भंडार शामिल होता है, तो यह अपने फ़ोल्डर संरचना के उस हिस्से के उप-रेपो पूर्ण नियंत्रण को सौंपता है। तो शीर्ष स्तर पहले उप-रिपोज़ फ़ोल्डरों में कहीं और उप-संग्रह निर्दिष्ट नहीं कर सकता है।

समाधान 1

Subrepo_B वास्तव में Subrepo_A की निर्भरता है। उस स्थिति में, मॉड्यूल/Sebrepo_B के तहत Subrepo_B जोड़ने के लिए Subrepo_A की .hgsub फ़ाइल को संपादित करके अपनी रिपॉजिटरीज़ वास्तविक निर्भरता को प्रतिबिंबित करते हैं। यह काम करता है क्योंकि Subrepo_A अपने फ़ोल्डरों पर नियंत्रण बनाए रखता है।

समाधान 2

Subrepo_A Subrepo_B पर निर्भर नहीं करता है, तो आप सुविधा के लिए वहाँ डालने थे। इस मामले में, आपको Build_Repo के Subrepo_A और Subrepo_B दोनों subrepos (विभिन्न स्थानों में) बनाना चाहिए।

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

  • कोई संबंधित समस्या नहीं^_^