2011-02-23 15 views
5

मेरे पास एक प्रोजेक्ट है, जिसमें मेरे पास बिटबकेट रिपोजिटरी है, और यह एक अन्य प्रोजेक्ट पर निर्भर है जिसे मैं सबरेपो के रूप में शामिल करता हूं। अब, मेरे पास subrepository के लिए धक्का पहुंच नहीं है, और न ही मैं चाहता हूँ या जरूरत है - यह केवल एक पुल रिश्ते है।Mercurial subrepo और सापेक्ष पथ

मुझे एहसास है कि जब आप मुख्य भंडार को दबाते हैं, तो यह subrepositories को भी धक्का देने का प्रयास करेगा। चूंकि मैं ऐसा नहीं कर सकता, इसलिए मैंने मुख्य प्रोजेक्टरी की निर्देशिका के समान स्तर पर निर्भर परियोजना की स्थानीय प्रतिलिपि खींची।

Main/   ; pushes to https://mine.org/Main 
    .hg/ 
    .hgsub 
    Lib/ 
    SubRepo/ ; clone of Main/../SubRepo/ 
     .hg/ 

SubRepo/  ; local copy of https://forbidden.org/SubRepo 
    .hg/ 

.hgsub की सामग्री के कुछ की तरह है,

Lib/SubRepo = ../SubRepo 

तब मैं क्लोन,

~/path/to/Main $ hg clone ../SubRepo/ Lib/SubRepo 

अब तक तो अच्छा: संक्षेप में, मैं निम्नलिखित लेआउट है। समस्या यह है कि, मैंने इसे सब कुछ सेट अप करने और परिवर्तनों को करने के बाद, जब मैं मुख्य Mercurial को धक्का देने की कोशिश करता हूं तो SubRepo को https://mine.org/SubRepo पर धक्का देने का प्रयास करेगा, जो मौजूद नहीं है, जिससे पूरे पुश ऑपरेशन में विफल रहता है।

क्या मुझे कुछ याद आ रही है?

उत्तर

4

क्यों बस नहीं बना एक https://mine.org/SubRepo - यदि आप इसे विज्ञापित करने के लिए नहीं करना चाहते हैं तो आप हमेशा अपने .hg/hgrc फ़ाइल में [web] खंड में इसके लिए hide चालू कर सकते हैं। यह वह पैटर्न है जिसका उपयोग मैं करता हूं, जहां आप मुख्य रेपो और सभी उपरोक्तों को उसी स्थान पर क्लोन करते हैं, जहां आप उनका उपयोग करेंगे: आपके विकास बॉक्स और आपके वेब-फेस दोनों hgweb इंस्टॉल करें।

वैकल्पिक रूप से, आप एक [subpaths] अनुभाग Main/.hg/hgrc में कुछ इस तरह से उस में इस्तेमाल कर सकते हैं:

[subpaths] 
https://mine.org/SubRepo = https://forbidden.org/SubRepo 

जो आप धक्का के लिए derrived लक्ष्य रोकना और है कि जो इसे जीता 'एक ही स्थान पर यह बात देना चाहिए आपको धक्का नहीं देगा, आपको कुछ भी नहीं बदलेगा ताकि धक्का जारी रहे।

+0

धन्यवाद। मुझे लगता है कि मैं इसके साथ जाऊंगा, हालांकि मेरी इच्छा है कि Mercurial मुझे इसे सापेक्ष पथों के इलाज के लिए कॉन्फ़िगर करने दे, जिस तरह से मैंने शुरुआत में इसकी अपेक्षा की थी। – Santa

+0

हाँ, यह बहुत कठिन समस्या है जब कोई गिट सबरेप और svn subrepos खाते में Mercurial का समर्थन लेता है। मैं बस सोच रहा था कि आप अपने वेब सर्वर पर 'रीडायरेक्ट/सबरेपो https: // forbidden.org/SubRepo' जैसे 'रीडायरेक्ट' डाल सकते हैं जो न्यूनतम प्रयास कार्यवाही हो सकता है। –

1

ऐसा लगता है कि Mercurial क्या कर रहा है वैध है: आपके .hgsub में सूचीबद्ध पथों का उपयोग करके यह 'सब्रेपो' नामक निर्देशिका में धक्का देने का प्रयास कर रहा है जो मुख्य से एक स्तर ऊपर मौजूद है। यह स्पष्ट रूप से नहीं है कि आप क्या चाहते हैं, तो आपको शायद यहां कुछ जादू करना होगा। मैं दो विकल्प के बारे में सोच सकते हैं:

  1. आप इस का समर्थन कर सकते हैं, तो C:/Forbidden/Subrepo या ऐसा ही कुछ पर forbidden.org के भंडार की स्थानीय प्रतिलिपि जगह है, और अपने .hgsub में इस निरपेक्ष पथ का उपयोग करें। Mercurial इस पर धक्का दे सकता है और इसे काम करना चाहिए।

  2. यदि आप इस रेपो में कोई संशोधन नहीं करते हैं तो वास्तविक subidden.org url को आपके subrepo पते के रूप में कोई समस्या नहीं है। यदि subrepo में कोई बदलाव नहीं है, तो आपका धक्का सफल होना चाहिए। बेशक, यह एक काफी मैनुअल विकल्प है और एक बड़ी टीम पर इसे लागू करना असंभव होगा। यदि आपने गलती से सबरेपो में कुछ संशोधन किया है, तो आपको इसे खींचने के लिए histedit या MQueues का उपयोग करना होगा, और यह सब्रेप्स के साथ मुश्किल हो सकता है।

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