2011-03-24 15 views
18

यदि आप hg log myfile -v करते हैं तो आप उन परिवर्तनों की एक सूची देखते हैं जिनमें फ़ाइल संशोधित की गई थी।Mercurial - निर्धारित करें कि फ़ाइल कहां हटा दी गई थी?

हमारे मामले में, हालिया परिवर्तनों में, फ़ाइल हटा दी गई थी। लेकिन आप एचजी लॉग के वर्बोज़ (-v) आउटपुट को देखकर यह नहीं बता सकते हैं। क्या कोई आसान Mercurial कमांड है जिसका उपयोग आप यह निर्धारित करने के लिए कर सकते हैं कि रेपो से फ़ाइल कब और कब हटा दी गई है?


अद्यतन: ध्यान दें कि यह एक Windows क्लाइंट पर है, और हम मर्क्युरियल वी 1.4.3

अद्यतन 2 उपयोग कर रहे हैं: जवाब के नीचे दिखाई देता का नवीनतम संस्करण के साथ काम करेंगे Mercurial, हालांकि अभी एक अपग्रेड कार्ड में नहीं है। वी 1.4.3 के लिए कोई अन्य विचार ???

उत्तर

22

आप देख सकते हैं जो संशोधन एक फ़ाइल (किसी भी कई अन्य रोचक सुविधाओं) revsets का उपयोग कर नष्ट कर दिया:

hg log -r 'removes(<myfile>)'

कुछ उदाहरण:

hg log -r 'removes(build.xml)' // जहां build.xml में हुआ करता था वर्तमान निर्देशिका

hg log -r 'removes("**/build.xml")' // जहां build.xml उप निर्देशिका में हो सकता है

विवरण के लिए

hg help revsets देखें।

+0

मेरे लिए काम नहीं लगता है: बीच में बंद करें ': अज्ञात संशोधन 'हटा देगा (मेरी फ़ाइल) '!' –

+1

@ मार्कस: Mercurial v1.7 में revsets पेश किए गए थे। ऐसा लगता है कि आप पुराने संस्करण का उपयोग कर रहे हैं। –

+0

पूर्ण भंडार पथ की भी आवश्यकता है (यानी "myfile" या "./myfile" काम नहीं करेगा यदि आप उपनिर्देशिका में हैं) – Nick

3

यह मैं क्या मेरी भंडार में सभी फ़ाइलों को सूचीबद्ध करने के लिए उपयोग करते हैं:

hg log --template "{rev}: {file_dels}\n" | grep -v ':\s*$' 
+1

grep के बारे में मुझे ध्यान दिया जाना चाहिए कि मैं विंडोज पर हूं। मैंने पाइप के बाद भाग को हटाने का प्रयास किया, लेकिन यह उपयोगी जानकारी प्रतीत नहीं होता है (कम से कम grep के बिना)। –

+0

क्या कोई समकक्ष findstr कमांड है जिसे हम बिना grep के विंडोज़ पर चला सकते हैं? – WEFX

+0

@WEFX सबसे अच्छा मैं 'FINDSTR' समकक्ष के लिए समझा सकता हूं '| FINDSTR/R/V ": * $" ', लेकिन FINDSTR बहुत सारे संदेशों को आउटपुट करता है जैसे कि 'FINDSTR: लाइन 2 बहुत लंबा है', इसलिए आप इसके साथ किसी भी बड़ी प्रतिबद्धता को अनदेखा कर देंगे। – binki

16

--removed झंडा आप मिलना चाहिए क्या आप देख रहे हैं: hg log के लिए मदद से

hg log myfile -v --removed 

:

--removed    include revisions where files were removed 
+0

ध्यान दें कि केवल 'hg log myfile' सभी संशोधनों की सूची देगा जहां फ़ाइल संशोधित की गई थी - जिसमें इसे हटाया गया था (मुझे विश्वास है)। लेकिन मैं सिर्फ यह जानना चाहता हूं कि इसे कहां हटाया गया था - जहां इसे संशोधित नहीं किया गया था। –

+0

रेवसेट समाधान शायद आपकी सबसे अच्छी शर्त है। उस सुविधा को प्राप्त करने के लिए आपके Mercurial संस्करण को पिछले 1.7 अपडेट करने के लायक हो सकता है। – Den

+2

परिवर्तन जहां फ़ाइल हटा दी जाती है * प्रदर्शन * कारणों से डिफ़ॉल्ट रूप से शामिल नहीं है (कम से कम v2.1 में)। – Nick

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