वर्तमान मर्क्यूरियल रिवीजन हैश प्रिंट करें?


124

क्या मर्क्यूरियल में वर्तमान संशोधन हैश को निकालने का एक बेहतर तरीका है

hg log -l1|grep changeset|cut -d: -f3

?

मेरे वेबअप परिनियोजन स्क्रिप्ट का भाग अपलोड किए गए एप्लिकेशन टारबॉल को इसके अनूठे संशोधन हैश के साथ "टैग" करता है।


2
ध्यान दें कि hg log -l 1आपको सबसे हाल ही में बदलाव करने की आवश्यकता है, जरूरी नहीं कि आप वर्तमान में अपडेट हों! -F झंडा सीमा hg लॉग आउटपुट को वह वर्तमान कार्यशील निर्देशिका के पूर्वजों के लिए देता है, इसलिए hg log -f -l1आप जो चाहते हैं उसके करीब है।
वाटरप्रूफ

जवाबों:


196

प्रयत्न:

hg id -i

उदाहरण:

$ hg id -i
adc56745e928

22
यदि आप पूर्ण हैश उपयोग चाहते हैं, तो लोग नीचे दिए गए समाधानों को याद करते हैं: hg --debug id -iयदि आप चाहते हैं कि टेम्पलेट समर्थन उपयोग hg parent --template '{node}' न करें hg log -l 1, तो इसका नवीनतम रिपॉजिटरी परिवर्तन, वर्तमान कार्यशील कॉपी परिवर्तन नहीं।
जोसेफ लिसे

7
लिपियों में -debug का उपयोग करने की अनुशंसा नहीं की जाती है, यह आउटपुट कम सावधानी से नियंत्रित w / r / t पिछड़े संगतता है। टेम्पलेट का उपयोग करें। अगर आप इसे w / लॉग करना चाहते हैं तो .रिविजन के रूप में डॉट का उपयोग करें ।
184 पर Ry4an Brase

धन्यवाद Ry4an मुझे "-r" के बारे में पता नहीं था। वर्तमान कार्य प्रतिलिपि संशोधन को संदर्भित करना। ऐसा लगता है कि बेहतर कदम तो "लॉग" से "माता-पिता" पर स्विच कर रहा है।
जोसेफ लिसे

कोई परेशानी नहीं। hg help revisionsऔर hg help revsetsजैसे कुछ पागल शक्तिशाली शॉर्टकट है।
Ry4an Brase

लेकिन यह प्रश्न का सबसे विशिष्ट उत्तर नहीं है, क्योंकि afaik hg id -iकेवल वैश्विक हैश आईडी के लघु (12 अक्षर) रूप को प्रिंट करता है और चूंकि afaics hg identifyका अभाव है, --templateइसलिए केवल संशोधन को निकालने का कोई तरीका नहीं है और कुछ भी नहीं है क्योंकि मैन पेज से यह नहीं है एक सारांश प्रिंट करता है।
शेल्बी मूर तृतीय

41
hg --debug id -i

यह लंबे समय तक हैश का उत्पादन करेगा, साथ ही साथ अगर इसमें अनपेक्षित बदलाव होंगे।


यह 3.1.2 में डिफ़ॉल्ट प्रतीत होता है
30'15

1
Ry4an की टिप्पणी के कारण डाउनवोटिंग ।
शेल्बी मूर तृतीय

20

आप मूल कमांड के साथ उपयोग कर सकते हैं - मैं लंबे हैश पाने के लिए इसका उपयोग करता हूं:

hg parent --template '{node}'

Hg मैन पेज का कहना hg parentsहै कि इसकी पुष्टि की गई है , हालाँकि जब आपने यह उत्तर लिखा था तब शायद ऐसा नहीं हुआ होगा। यदि कोई अनमैक्ज़िट मर्ज है, तो दो मूल संशोधन हैं
शेल्बी मूर III

2
क्या कोई हमें बता सकता है कि hg माता-पिता को पदावनत क्यों किया जाता है और हमें इसके बजाय क्या उपयोग करना चाहिए?
विंसेंट

17

उत्तरों और उनकी प्रतिक्रियाओं को सारांशित करते हुए, ऐसा लगता है कि यह वर्तमान स्रोत के अद्वितीय (संक्षिप्त रूप नहीं) पहचानकर्ता को प्रिंट करने का सबसे अच्छा तरीका है :

hg log -l 1 --template '{node}\n' -r .

ध्यान दें कि यदि कोई अनमैजेड मर्ज है , तो .डॉट (डॉट) केवल काम करने वाले समूह के दो अभिभावकों के पहले माता-पिता को प्रदर्शित करता है ।
शेल्बी मूर तृतीय

9
hg log -l 1 --template '{node|short}\n'

देखें डॉक्स , पैराग्राफ और निम्नलिखित "templating की मूल बातें"।


2
मैं लगभग यही चाहता था, लेकिन लंबे हैश के साथ। वास्तव में इसे प्राप्त lidकरने का उपनाम log -l 1 --template '{node}\n'- पूर्ण संशोधन आईडी प्रिंट करें।
माइकल एकस्ट्रैंड

6
यह सबसे हाल ही में खींचा गया परिवर्तन प्रिंट करता है। हमारी कार्यशील निर्देशिका को पुराने बदलाव के लिए अद्यतन किया जा सकता है। हमारे द्वारा अपडेट किए गए बदलाव को प्रिंट करने के लिए, "hg id" का उपयोग करें। एकमात्र समस्या यह है, "hg id" टेम्पलेट्स का समर्थन नहीं करती है और न ही लंबे हैश को मुद्रित करने का विकल्प होता है (जब तक कि कोई यह नहीं जानता कि यह कैसे करना है)।
इवर

1
जैसा कि ईवर ने कहा था कि यह वास्तव में आपकी कार्य प्रति में संशोधन को नहीं छापता है केवल आपके भंडार में नवीनतम है। क्योंकि इस समाधान का उपयोग करने से ट्रैकिंग त्रुटियों का परिचय हो सकता है।
जोसेफ लिसे

1
डिट्टो जो की डाउनवोटिंग। साथ ही @Eiver का उपयोग hg --debug id -iअन्यत्र कहा गया है।
एजेपी

3

सबसे विशिष्ट गैर-डीप्रेनेटेड कमांड, जो उपस्थिति के कारण --templateकेवल संशोधन जानकारी को प्रिंट कर सकता है, यदि वह संक्षिप्तता आवश्यक है (जैसा कि प्रश्न द्वारा निहित है):

hg log -l 1 -b . -T '{rev}:{node|short}\n'

या हैश के अनोखे लंबे रूप के लिए:

hg log -l 1 -r . -T '{node}\n'

-b .या branch(.)(शाखा का नाम के लिए डॉट) वर्तमान कार्यशील निर्देशिका शाखा का मतलब है और -r .वर्तमान कार्यशील निर्देशिका संशोधन, जो है इसका मतलब दस्तावेज में hg help revsetsऔर hg help revisions

ध्यान दें कि यदि कोई अनमैजेड मर्ज है , तो .डॉट (डॉट) केवल काम करने वाले समूह के दो अभिभावकों के पहले माता-पिता को प्रदर्शित करता है ।


3

जैसा कि दूसरों ने बताया है, उपयोग न करें log -l

hg log -r .विस्तृत जानकारी प्राप्त करने के लिए उपयोग करें , hg idजिसका उपयोग करने के लिए विरोध किया जाता है जिसका उत्पादन सीमित है और यह टेम्पलेट्स का समर्थन नहीं करता है। तुम भी थोड़ा सा उपनाम की तरह बना सकते हैं here = log -r .और उपयोग कर सकते हैं hg here। यदि आप केवल हैश का उपयोग करना चाहते हैं hg log -r . --template '{node}\n'


1

यदि TortoiseHg का उपयोग किया जाता है, तो कार्यक्षेत्र में संशोधन पंक्ति पर राइट-क्लिक करें और "कॉपी हैश" ( प्रलेखन के अनुसार ) का चयन करें ।

यहाँ छवि विवरण दर्ज करें

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