मर्क्यूरियल (hg) केवल कुछ फाइलों को ही प्रतिबद्ध करता है


119

मैं मर्क्यूरियल के साथ केवल कुछ फाइलें करने की कोशिश कर रहा हूं। जब भी मैं कोई परिवर्तन करने का प्रयास करता हूं, तो ऑटो-ऐड hg होने के कारण यह सभी फ़ाइलों को कमिट करना चाहता है। लेकिन मैं ऐसा नहीं चाहता क्योंकि कुछ फाइलें अभी तक "तैयार" नहीं हैं।

वहाँ है

hg commit -I thefile.foo

लेकिन यह केवल एक फ़ाइल के लिए है। मेरे लिए बेहतर तरीका यह होगा कि मैं ऑटो-ऐड को Git की तरह बंद कर सकूं। क्या यह संभव है?


5
रिकॉर्ड एक्सटेंशन का उपयोग करें? या आप कमांड लाइन पर फ़ाइलें निर्दिष्ट कर सकते हैंhg ci foo bar baz
टन

4
@tonfa, एक उत्तर के रूप में अपनी टिप्पणी को
निरस्त करें

कृपया अपने पदों के लिए बर्बरता न करें।
ग्लोरफाइंडेल

आप इस तरह के एक अच्छे सवाल क्यों कर रहे हैं?
प्रवीण कुमार पुरुषोत्तम

जवाबों:


155

आप कमांड लाइन पर फ़ाइलों को निर्दिष्ट कर सकते हैं, जैसा कि टोनफा लिखते हैं:

$ hg commit foo.c foo.h dir/

यह सिर्फ काम करता है और यही मैं हर समय करता हूं। आप उस --includeध्वज का उपयोग भी कर सकते हैं जो आपने पाया है, और आप इसे कई बार इस तरह उपयोग कर सकते हैं:

$ hg commit -I foo.c -I "**/*.h"

आप उन फ़ाइलों का चयन करने के लिए भी एक फाइलसेट का उपयोग कर सकते हैं जिन्हें आप करना चाहते हैं:

$ hg commit "set:size(1k - 1MB) and not binary()"

ऐसी कोई सेटिंग नहीं है जो ऑटो-ऐड व्यवहार को बंद कर दे और मर्क्यूरियल कार्य जैसे कि Git करता है। हालाँकि, mq एक्सटेंशन दिलचस्पी का हो सकता है। यह एक उन्नत विस्तार है, लेकिन यह आपको करने की अनुमति देता है

$ hg qnew feature-x     # create new patch
$ hg qrefresh -s foo.c  # add a file to the current patch
$ hg qrefresh -s bar.c  # add another file to the patch
$ hg qfinish -a         # convert applied patches to normal changesets

मैं वास्तव में इस उद्देश्य के लिए एमक्यू का उपयोग स्वयं नहीं करता हूं, हालांकि, जब से मुझे लगता है कि यह कमांड लाइन पर फ़ाइल नाम निर्दिष्ट करने के लिए पर्याप्त है।


"ऑटो-ऐड व्यवहार" व्यवहार क्या है? क्या hg का उपयोग ऑटो-ऐड फ़ाइलों में किया जाता है? क्योंकि अब आपको स्पष्ट रूप से ऐसा करना होगा या वे अनियंत्रित हो जाएंगे।
एमपीएन

1
@ मुझे लगता है कि उसका मतलब है कि कैसे gh स्वचालित रूप से हर संशोधित फ़ाइल को एक कमिट में जोड़ देता है, git के विपरीत जिसमें आपको मैन्युअल रूप से संशोधित फ़ाइलों को अगली
कमेटी में

24

यदि आप कुछ फाइलें करना चाहते हैं, और कई अन्य को बाहर करना चाहते हैं, तो स्पष्ट रूप से उन फाइलों को सूचीबद्ध करें जिन्हें आप करना चाहते हैं। -Iकेवल तभी आवश्यक है जब आप फ़ाइलों के बजाय पैटर्न का उपयोग करना चाहते हैं।

यदि आप कई फ़ाइलें करना चाहते हैं, और केवल कुछ फ़ाइलों को बाहर करना -Xहै , तो उपयोग करना अधिक सुविधाजनक है।

उदाहरण के लिए, "file_1", "file_2" और "file_3" वाले भंडार दिए गए हैं, निम्नलिखित समतुल्य हैं, लेकिन बाद वाला टाइप करने के लिए आसान / तेज़ है:

hg commit file_1 file_2
hg commit -X file_3

8

3.8 के रूप में आप hg commit --interactiveफ़ाइलों का चयन करने के लिए भी उपयोग कर सकते हैं (3.8 से पहले आप समान कार्यक्षमता के लिए क्रेकॉर्ड एक्सटेंशन का उपयोग कर सकते हैं )। --interactive(या बस -i) झंडा फ़ाइलें आप शामिल करने के लिए प्रतिबद्ध में चाहते हैं के लिए संकेत देने के लिए एचजी का कारण होगा। एक अतिरिक्त बोनस के रूप में आप फाइलों के भीतर विखंडू को शामिल / शामिल कर सकते हैं।

यहाँ एक उदाहरण है कि इंटरफ़ेस कैसा दिखता है। ध्यान दें कि यह एक पुराना स्क्रीनशॉट है (वास्तव में crecord का) इसलिए इंटरफ़ेस थोड़ा बदल गया है (लेकिन मूल बातें समान हैं)। crecord स्क्रीनशॉट

उस इंटरफ़ेस को प्राप्त करने के लिए ध्यान दें, जिसे आपको शापित इंटरफ़ेस सक्षम करने की आवश्यकता है। आप hg commit --config ui.interface=curses --interactiveनिम्नलिखित के साथ या आम तौर पर अपने साथ जोड़कर एकल रन के लिए कर सकते हैं .hgrc:

[ui]
interface = curses
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.