2012-02-02 12 views
6

में एक निर्देशिका संरचना बदलना मेरे पास एक एकल व्यक्ति एकल फ़ोल्डर Mercurial भंडार है। , इसMercurial

P104 
    lecture_notes 
    files under version control live here (.hg is here) 
    homework 
    more files under version control 

की तरह,

P104 
    lecture_notes 
    files under version control live here 

थोड़ी देर मुझे पता है मैं भंडार के भीतर दो निर्देशिकाओं करना चाहते हैं के बाद अब अगर मैं सिर्फ करने के लिए फ़ाइलों को जोड़ने के लिए कोशिश कर रहा हूँ: निर्देशिका संरचना सरल है भंडार है, यह विफल रहता है:

[email protected]:~/P104/lecture_notes$ ll .. 
total 16 
drwxr-xr-x 4 br br 4096 2012-02-02 18:05 ./ 
drwxr-xr-x 4 br br 4096 2012-02-01 20:46 ../ 
drwxr-xr-x 2 br br 4096 2012-02-02 17:44 homework/ 
drwxr-xr-x 4 br br 4096 2012-02-02 18:06 lecture_notes/ 
[email protected]:~/P104/lecture_notes$ hg add ../homework/hw1_P104.tex 
abort: ../homework/hw1_P104.tex not under root 

मेरा पहला विचार, निर्देशिका संरचना में रेपो एक स्तर ऊपर क्लोन क्लोन करने के लिए फ़ाइलों को जोड़, और मूल रेपो नष्ट करने के लिए किया गया था। लेकिन फिर भी क्लोनिंग में विफल रहता है:

[email protected]:~/P104/2011/lecture_notes$ hg clone . .. 
abort: destination '..' is not empty 

तो सवाल ही नहीं कहीं और एक साफ भंडार बनाने की तुलना में यह अन्य करने का एक मर्क्युरियल-ish तरीका है और नकल मैन्युअल फ़ाइलें है कि क्या है?

+1

+1 - संस्करण नियंत्रण जानने के लिए क्या एक भयानक तरीका है। ;) – jmort253

उत्तर

4

अपने मर्क्युरियल रेपो की मूल निर्देशिका ~/P104/lecture_notes अंतर्गत है, तो मैं नहीं बल्कि होगा:

  1. कि नए उप में P104
  2. में
  3. बनाने वाली उप lecture_notes
  4. चाल सभी मौजूदा फ़ाइलों का नाम lecture_notes निर्देशिका
  5. homework और इसकी फ़ाइलों को नामित पी 104 निर्देशिका
  6. hg add हरथी जोड़ें एनजी

विचार है जिसका नाम बदल निर्देशिका के भीतर .hg रेपो रखने कहाँ है (~/P104/lecture_notes~/P104/P104 में नाम बदला) और पुनर्निर्माण करने के लिए फ़ाइलों है।
क्लोन करने की कोई आवश्यकता नहीं है।

+0

वास्तव में सरल। धन्यवाद! –

7

मुझे वॉनसी समाधान पसंद है जहां आप .hg फ़ोल्डर नहीं ले जाते हैं। यह एक सीधा आगे समाधान है। यहाँ एक विकल्प है जहाँ आप कदम यह करने के और इतने कम फ़ोल्डर नाम बदलने के लिए है:

  1. ले जाएँ .hg फ़ोल्डर ऊपर ~/P104

    $ mv ~/P104/lecture_notes/.hg ~/P104 
    

    मर्क्युरियल के नजरिए से देखा करने के लिए, आप होगा सभी शीर्ष-स्तरीय फ़ाइलों को lecture_notes निर्देशिका में ले जाया गया। homework फ़ोल्डर में अचानक नई अनचाहे फ़ाइलें भी होंगी।

  2. बाहर renames मर्क्युरियल आंकड़ा दो:

    $ hg addremove 
    

    यह सही ढंग से पता लगा लेगा कि फ़ाइलें जो अब से पहले उच्च-स्तरीय फ़ाइलों थे lecture_notes निर्देशिका में रहते हैं। homework में अनचाहे (और अनदेखा) फ़ाइलों को अभी जोड़ा गया है।

  3. सहेजें परिवर्तन:

    $ hg commit 
    

समग्र "चाल" है कि काम कर रहे नकल में फ़ाइलों .hg निर्देशिका के सापेक्ष देखा जाता है। तो फ़ाइल सिस्टम पदानुक्रम में .hg निर्देशिका को ऊपर ले जाकर, हम कामकाजी प्रतिलिपि के अंदर पदानुक्रम में कार्यशील प्रति फ़ाइलों को प्रभावी ढंग से स्थानांतरित करते हैं।

+1

धन्यवाद! 'Addremove' के बारे में जानना अच्छा है। अगली बार मेरे पास यह समस्या है, इस समाधान का उपयोग करेगा (VonC के तरीके के साथ मुझे मैन्युअल रूप से 'hg add' और' hg remove' फ़ाइलों को) –