आप उन सभी फ़ाइलों को कैसे निर्धारित कर सकते हैं जो किसी दिए गए बदलाव में बदल गईं?
मैं इस मामले में एक अंतर नहीं ढूंढ रहा हूं, बस जोड़ें / हटाने / संशोधनों की एक सूची।
hg log -vprX diffs की एक सूची है, लेकिन मैं सिर्फ फाइलें चाहते हैं।
आप उन सभी फ़ाइलों को कैसे निर्धारित कर सकते हैं जो किसी दिए गए बदलाव में बदल गईं?
मैं इस मामले में एक अंतर नहीं ढूंढ रहा हूं, बस जोड़ें / हटाने / संशोधनों की एक सूची।
hg log -vprX diffs की एक सूची है, लेकिन मैं सिर्फ फाइलें चाहते हैं।
जवाबों:
यदि आप केवल उन फ़ाइलों को सूचीबद्ध करना चाहते हैं जो बदल गई हैं, तो आपको "स्थिति कमांड" का उपयोग करना चाहिए। निम्नलिखित संशोधन में फ़ाइलों के परिवर्तनों को सूचीबद्ध करेगा।
hg status --change REV
-n/ --no-statusझंडा भी चाहता है।
hg status --no-status --change REV
hg status --rev REV~1:REVजिससे मैं करता था।
hg status --change .
बस pअपने से निकालें hg log -vprफ़ाइलों की सूची दिखाएगा। -pमतलब पैच दिखाना। आप अपने स्वाद के आउटपुट को प्रारूपित करने के लिए टेम्पलेट का भी उपयोग कर सकते हैं ।
hg status --change .बेहतर काम किया और एक फ़ाइल एक्शन उपसर्ग (A \ M \ D आदि) और बेहतर सापेक्ष पथ दिया
मुझे पता है कि सवाल एक एकल बदलाव के लिए है, लेकिन यदि आप सभी फ़ाइलों को संशोधित करने के लिए बदलना चाहते हैं, तो आप कर सकते हैं
hg status --rev 1 --rev 10 -m
hg log -r BEGIN:END --template "{files}\n"@ जियोफ्रे- zheng और @ton ने दो साल पहले
hg status --rev BEGIN --rev ENDहै: 1. से याद करने के लिए बहुत आसान hg log -r BEGIN:END --template "{files}\n"; 2. यह फ़ाइलों को अलग-अलग लाइनों में sed(@Eric Lawler) या join()(@Foxichu) का उपयोग किए बिना प्रिंट करता है ; 3. -mध्वज के बिना , यह न केवल संशोधित दिखाता है, बल्कि फाइलों को भी जोड़ा और हटा दिया जाता है (अच्छा मानक रंग यहां भी लागू होता है); 4. ऐसे -aऔर -rझंडे हैं जो अलग-अलग फ़िल्टरिंग की अनुमति देते हैं; 5. यदि कोई स्थिति उपसर्ग नहीं चाहता है, तो -nविकल्प है, जो इसे दबा देता है।
एक समान अवधारणा के लिए Googling के माध्यम से यह प्रश्न मिला। सभी फ़ाइलों को दिखाने के लिए जो कई प्रकार के परिवर्तनों के माध्यम से बदल गई हैं , यह उतना आसान है:
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"आपको एक नई लाइन पर प्रत्येक बदलाव करने वाले की फ़ाइलों के साथ, [स्टार्ट रेव] से [एंड रेव] तक, प्रत्येक बदलाव में प्रत्येक फ़ाइल को बदले या जोड़े जाने की सूची दिखाएगा। सभी फ़ाइलों को संशोधित, जोड़े या हटाए जाने के लिए स्वैप {file_mods}{file_adds}करें {files}।sed -e 's/ /\n/g' अलग लाइनों पर दिखाने के लिए सभी फ़ाइलों को विभाजित करेगा औरsort विल, एर, आपके लिए सूची को सॉर्ट करें ताकि हम सूची को यूनीक के साथ फ़िल्टर कर सकेंuniq डुप्लिकेट को हटाने के लिए सूची को फ़िल्टर करेगा - एक से अधिक संशोधन में परिवर्तित की गई फाइलें।--templateइन कमियों के बिना आधारित समाधान का उपयोग कर निर्माण किया जा सकता है join()के रूप में @Foxichu ने सुझाव दिया।
मुझे पता है कि यह सवाल एक पुराना सवाल है और मुझे आश्चर्य है कि किसी ने भी संशोधित कोड फॉर्म ओपी की पेशकश नहीं की है। मुझे बस चलने से संशोधित / जोड़ी / हटा दी गई फ़ाइलों की सूची मिली (लेबल नहीं है, जो हालांकि है) hg log -v। या क्या मुझे वास्तव में hg log -v -l5उन फ़ाइलों को देखने की आवश्यकता थी जो पिछले 5 कमिट्स में संशोधित / जोड़ी / हटा दी गई हैं (उन लोगों सहित जिन्हें मैं रेपो को अभी तक धक्का नहीं दिया था)।
यदि आप अधिकांश दुकानों की तरह हैं, तो आप परिवर्तनों को ट्रैक करने के लिए एक टिकटिंग सिस्टम का उपयोग करते हैं। यदि आप टिकट नंबर जानते हैं और उस टिकट के साथ जुड़े सभी कमिट्स ढूंढना चाहते हैं (यह मानते हुए कि आप कमिट मैसेज में टिकट नंबर शामिल करते हैं), तो आप उपयोग कर सकते हैं:
hg log -k TICKET_NUMBER
यह टिकट से जुड़े सभी संशोधनों को प्रदर्शित करता है। हालाँकि, यह फ़ाइलों की सूची नहीं है। आप ऊपर दिए गए उत्तरों में से एक का उपयोग कर सकते हैं, फिर संशोधन के साथ जुड़ी फाइलों की सूची प्राप्त कर सकते हैं।
हालांकि इसे सरल बनाने के लिए, पिछले उत्तरों से जानकारी को मिलाकर, आप निम्न को खोज के लिए कर सकते हैं, जिसमें फाइलें भी शामिल हैं:
hg log -vk TICKET_NUMBER