मर्क्यूरियल - सभी फाइलें जो एक बदलाव में बदल गईं?


98

आप उन सभी फ़ाइलों को कैसे निर्धारित कर सकते हैं जो किसी दिए गए बदलाव में बदल गईं?

मैं इस मामले में एक अंतर नहीं ढूंढ रहा हूं, बस जोड़ें / हटाने / संशोधनों की एक सूची।

hg log -vprX diffs की एक सूची है, लेकिन मैं सिर्फ फाइलें चाहते हैं।


जवाबों:


150

यदि आप केवल उन फ़ाइलों को सूचीबद्ध करना चाहते हैं जो बदल गई हैं, तो आपको "स्थिति कमांड" का उपयोग करना चाहिए। निम्नलिखित संशोधन में फ़ाइलों के परिवर्तनों को सूचीबद्ध करेगा।

hg status --change REV

14
+1, लेकिन ओपी शायद -n/ --no-statusझंडा भी चाहता है।
Niall C.

7
आसान नकल के लिए:hg status --no-status --change REV
zastrowm

+1 यह टाइप करने के लिए बहुत आसान है hg status --rev REV~1:REVजिससे मैं करता था।
पैट्रिक ऑस्सिटी

3
उपयोग '।' वर्तमान आरईवी के लिए। अर्थ -hg status --change .
zaxy78

16

बस pअपने से निकालें hg log -vprफ़ाइलों की सूची दिखाएगा। -pमतलब पैच दिखाना। आप अपने स्वाद के आउटपुट को प्रारूपित करने के लिए टेम्पलेट का भी उपयोग कर सकते हैं ।


3
मुझे लगता है कि आपको निम्नलिखित टेम्प्लेट की आवश्यकता होगी: --template की फाइलें: {फाइलें} \ n '
टन प्लाम्प

1
मेरा मानना ​​है कि {files} -v फ्लैग डिफॉल्ट टेम्प्लेट का हिस्सा है
eskhool

2
hg लॉग -r। --template {{join (फाइल, "\ n")} को अलग करने के लिए फाइल को अलग करें
फॉक्सिचू

1
@ फॉक्सिचू टिप्पणी ने मेरे लिए काम किया, लेकिन थोड़े हैकची था। वास्तव में ऊपरी उत्तर - hg status --change .बेहतर काम किया और एक फ़ाइल एक्शन उपसर्ग (A \ M \ D आदि) और बेहतर सापेक्ष पथ दिया
zaxy78

13

मुझे पता है कि सवाल एक एकल बदलाव के लिए है, लेकिन यदि आप सभी फ़ाइलों को संशोधित करने के लिए बदलना चाहते हैं, तो आप कर सकते हैं

hg status --rev 1 --rev 10 -m

2
भयानक बुरा। फ़ाइलें, रेंज में संशोधित hg log -r BEGIN:END --template "{files}\n"@ जियोफ्रे- zheng और @ton ने दो साल पहले
आलसी बेजर

उसके लिए माफ़ करना। माना कि उनका उत्तर एकल परिवर्तन के लिए था।
निक डेवर

1
मेरी राय में यह उत्तर उतना भयानक नहीं है। 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विकल्प है, जो इसे दबा देता है।
16:25 पर माइकेल Wróbel

9

वर्तमान प्रतिबद्ध संशोधन

hg status --change .

.वर्तमान बदलाव के लिए शॉर्टहैंड है, जैसे @HEADगिट में

करंट अनकम्फर्टेबल रिविजन

hg status

मनमाना प्रतिबद्ध संशोधन

hg status --change REV_ID

1
सबसे सरल और सटीक उत्तर!
zaxy78

2

एक समान अवधारणा के लिए Googling के माध्यम से यह प्रश्न मिला। सभी फ़ाइलों को दिखाने के लिए जो कई प्रकार के परिवर्तनों के माध्यम से बदल गई हैं , यह उतना आसान है:

hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n" | sed -e 's/ /\n/g' | sort -d | uniq
  1. hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}\n"आपको एक नई लाइन पर प्रत्येक बदलाव करने वाले की फ़ाइलों के साथ, [स्टार्ट रेव] से [एंड रेव] तक, प्रत्येक बदलाव में प्रत्येक फ़ाइल को बदले या जोड़े जाने की सूची दिखाएगा। सभी फ़ाइलों को संशोधित, जोड़े या हटाए जाने के लिए स्वैप {file_mods}{file_adds}करें {files}
  2. sed -e 's/ /\n/g' अलग लाइनों पर दिखाने के लिए सभी फ़ाइलों को विभाजित करेगा और
  3. sort विल, एर, आपके लिए सूची को सॉर्ट करें ताकि हम सूची को यूनीक के साथ फ़िल्टर कर सकें
  4. uniq डुप्लिकेट को हटाने के लिए सूची को फ़िल्टर करेगा - एक से अधिक संशोधन में परिवर्तित की गई फाइलें।

यह समाधान पहले जोड़े गए फ़ाइल के साथ अंतिम रूप से संशोधित हुआ। इसके अलावा, यह ठीक से filenames में रिक्त स्थान के साथ सौदा नहीं करता है। एक --templateइन कमियों के बिना आधारित समाधान का उपयोग कर निर्माण किया जा सकता है join()के रूप में @Foxichu ने सुझाव दिया।
मिचेल रेबेल

1

मुझे पता है कि यह सवाल एक पुराना सवाल है और मुझे आश्चर्य है कि किसी ने भी संशोधित कोड फॉर्म ओपी की पेशकश नहीं की है। मुझे बस चलने से संशोधित / जोड़ी / हटा दी गई फ़ाइलों की सूची मिली (लेबल नहीं है, जो हालांकि है) hg log -v। या क्या मुझे वास्तव में hg log -v -l5उन फ़ाइलों को देखने की आवश्यकता थी जो पिछले 5 कमिट्स में संशोधित / जोड़ी / हटा दी गई हैं (उन लोगों सहित जिन्हें मैं रेपो को अभी तक धक्का नहीं दिया था)।


"किसी ने भी संशोधित कोड फ़ॉर्म ओपी की पेशकश नहीं की है" - @Geoffrey झेंग ने वास्तव में ~ 1h किया था जब प्रश्न पोस्ट किया गया था
मिशाल Wróbel

-2

यदि आप अधिकांश दुकानों की तरह हैं, तो आप परिवर्तनों को ट्रैक करने के लिए एक टिकटिंग सिस्टम का उपयोग करते हैं। यदि आप टिकट नंबर जानते हैं और उस टिकट के साथ जुड़े सभी कमिट्स ढूंढना चाहते हैं (यह मानते हुए कि आप कमिट मैसेज में टिकट नंबर शामिल करते हैं), तो आप उपयोग कर सकते हैं:

hg log -k TICKET_NUMBER

यह टिकट से जुड़े सभी संशोधनों को प्रदर्शित करता है। हालाँकि, यह फ़ाइलों की सूची नहीं है। आप ऊपर दिए गए उत्तरों में से एक का उपयोग कर सकते हैं, फिर संशोधन के साथ जुड़ी फाइलों की सूची प्राप्त कर सकते हैं।

हालांकि इसे सरल बनाने के लिए, पिछले उत्तरों से जानकारी को मिलाकर, आप निम्न को खोज के लिए कर सकते हैं, जिसमें फाइलें भी शामिल हैं:

hg log -vk TICKET_NUMBER

यह सवाल से संबंधित है। पोस्टर में पूछा गया कि बदलाव में फाइलें कैसे प्राप्त करें। अक्सर टिकट से संबंधित परिवर्तन होते हैं। मेरा समाधान दिखाता है कि टिकट से संबंधित परिवर्तनों से संबंधित फाइलें कैसे प्राप्त करें।
iDimensionz
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.