- बिल्कुल एचजी प्रति क्या करता है क्या और क्या विशेष उपचार भविष्य में इस कारण है?
यह नई फाइलें जोड़ता है और उन्हें पुरानी फाइलों की प्रतियों के रूप में चिह्नित करता है। क्योंकि वे प्रतियां हैं, मूल फ़ाइल में किए गए बदलाव को प्रतिलिपि में विलय कर दिया जाएगा। समय बाएं से दाएं प्रवाह:
(init) --- (edit a.txt) ---- (a.txt edit is copied to b.txt)
\ /
(hg copy a.txt b.txt)
- यदि ऐसा पाया जाता हमारे मामले के लिए 'गलत बात (टीएम)' ऐसा करने के लिए, मैं कैसे फ़ाइल unflag एक और फ़ाइल की एक प्रतिलिपि beeing के रूप में करते हैं ?
यह तंत्र केवल विलय करते समय ही चलता है। b.txt
सामान्य पूर्ववर्ती संशोधन (उपरोक्त ग्राफ में init) में मौजूद नहीं है, तो Mercurial यह देखने के लिए पीछे की ओर एक खोज करें कि b.txt
कहीं और से कॉपी किया गया है या नहीं।
हमें संक्षिप्त रूप में ऊपर ग्राफ रहें:
(i) -- (edit a) -- (a edit copied to b) -- (edit a) -- (merge)
\ / /
(copy a b) --/------- (edit b) ------------------/
सवाल यह है कि अंतिम मर्ज किया जाता है। आम पूर्वज बिंदु अब copy a b
नोड है और यहां a
और b
दोनों मौजूद हैं। इसका मतलब है कि कॉपी के लिए कोई खोज नहीं होगी! तो a
पर दूसरा संपादन b
में विलय हो जाएगा।
दोबारा जांच करने के लिए, मैं इसे बाहर की कोशिश की:
$ hg init
$ echo a > a
$ hg add a
$ hg commit -m init
$ hg copy a b
$ hg commit -m "copy a b"
यह प्रति भी थी, b
अब a
केवल शामिल हैं।
$ hg update 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo aa >> a
$ hg commit -m "edit a"
created a new head
$ hg merge
merging a and b to b
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg commit -m "a edit copied to b"
यह पहली मर्ज था और a
को संपादित b
में नकल कर दिया गया है
$ cat b
a
aa
अब हम समानांतर में परिवर्तन करें:
$ echo aaa >> a
$ hg commit -m "edit a again"
$ hg update 3
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo bbb >> b
$ hg commit -m "edit b"
created new head
$ hg merge
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
आगे नहीं किया नकल कर रहे हैं :
$ cat a
a
aa
aaa
$ cat b
a
aa
bbb
इसे अक्षम करने के लिए ... आप वास्तव में पहचान को स्पष्ट रूप से अक्षम नहीं कर सकते हैं। लेकिन जैसा कि मैंने उपरोक्त चित्रित करने की आशा की है, यह पहले विलय के बाद आपको "परेशान" नहीं करेगा।
यदि पहला विलय एक समस्या है, तो आप hg resolve --tool internal:local
का उपयोग से पहले विलय शुरू करने से पहले फ़ाइलों को अपने राज्य में रीसेट करने के लिए कर सकते हैं। तो
$ hg resolve --tool internal:local b
साथ हम सिर्फ a
साथ एक पंक्ति से युक्त करने के लिए वापस b
लाया जा सकता था।
आप [फ़ाइलों की प्रतिलिपि] [http://tortoisehg.bitbucket.org/hgbook/1.7/mercurial-in-daily-use.html#chap:daily.copy) भी पढ़ सकते हैं [Mercurial: Definitive Guide ] (http://tortoisehg.bitbucket.org/hgbook/1.7/) पुस्तक। – Matus