2009-01-24 16 views
52

मैं कमांड लाइन पर Mercurial के लिए एक multiline प्रतिबद्ध संदेश कैसे निर्दिष्ट कर सकते हैं?Mercurial: कमांड लाइन पर multiline प्रतिबद्ध संदेश?

hg commit -m "* add foo\n* fix bar" 

काम नहीं करता है। लॉग शो:

changeset: 13:f2c6526e5911 
tag:   tip 
date:  Fri Jan 23 23:22:36 2009 +0100 
files:  foobar.cpp 
description: 
    * add foo\n*fix bar 
+0

मैं इस आदेश को खोल ही के माध्यम से हल किया जाना है लगता है। यदि आपका कमांड शैल आपको एक बहु पैरामीटर पाठ को एक पैरामीटर के रूप में आपूर्ति करने का तरीका दे सकता है (शायद लाइन के अंत में '\' होने के बाद), तो एचजी शीतल में इसके साथ कोई समस्या नहीं है ... –

+0

हां, मुझे लगता है की आप सही हो। हालांकि, यह मेरे लिए व्यक्तिगत रूप से एकमात्र उपयोग है, जहां मैं इसे नियमित आधार पर उपयोग करता हूं, इसलिए मैंने इसे एक बैश-प्रश्न के रूप में नहीं पूछा। – Martin

उत्तर

73

मर्क्युरियल: बहु कमांड लाइन पर संदेश के लिए प्रतिबद्ध?

एंटर दबाएं।

$ hg commit -m "Did some work 
> Now I'm done" 

बातों में से एक यह है कि केवल पहली पंक्ति एचजी लॉग में दिखाता है:

$ hg log 
changeset: 0:d2dc019450a2 
tag:   tip 
user:  Aaron Maenpaa <[email protected]> 
date:  Sat Jan 24 07:46:23 2009 -0500 
summary:  Did some work 

... लेकिन यदि आप ऊपर आग "एचजी दृश्य" आप देख सकते हैं पूरे संदेश है कि क्या आप वहां मौजूद हैं।

जोड़ने संपादित करने के लिए:

... लेकिन एचजी -v लॉग पूरे संदेश दिखाता है:

$ hg -v log 
changeset: 0:d2dc019450a2 
tag:   tip 
user:  Aaron Maenpaa <[email protected]> 
date:  Sat Jan 24 07:46:23 2009 -0500 
files:  work 
description: 
Did some work 
Now I'm done 
+5

"एंटर" व्यवहार यूनिक्स-जैसे गोले पर निर्भर है। क्या विंडोज सीएमडी के साथ ऐसा करने का कोई तरीका है? –

+0

@ होसम अन्य सिग्विन (या मिंगविन) स्थापित करने और बैश का उपयोग करने के अलावा मैं कुछ भी नहीं सोच सकता। –

+0

@ होसम एली: क्या आप \ n या \ r \ n या \ r का उपयोग कर सकते हैं? मुझे यकीन नहीं है कि क्या शेलेक्सपैंड्स है, लेकिन Mercurial हो सकता है। –

9

आप (बनाम एक स्क्रिप्ट से) सहभागी यह कर रहे हैं, सिर्फ hg commit करना बिना झंडा के। मुझे यकीन नहीं है कि लिनक्स या मैक पर व्यवहार क्या है, लेकिन विंडोज़ पर यह नोटपैड को उस फ़ाइल के साथ पॉप अप करता है जिसे आप भरते हैं और एक मल्टीलाइन संदेश के लिए सहेजते हैं।

+0

क्या एक कीस्ट्रोक में नोटपैड को सहेजने और बंद करने का कोई तरीका है? यही मुझे इस दृष्टिकोण के बारे में परेशान करता है। –

+2

मुझे लगता है कि मर्कुरियल को नोटपैड की बजाय किसी अन्य एप्लिकेशन को कॉल करने के लिए कहने का एक तरीका है (एक .ini फ़ाइल के माध्यम से), तो आपको बस अपना पसंदीदा संपादक ढूंढना होगा। –

+1

यह एचजीआरसी में निर्दिष्ट संपादक का उपयोग करता है। विंडोज़ पर, अगर कोई निर्दिष्ट नहीं है तो यह नोटपैड पर डिफ़ॉल्ट हो जाता है। –

2

यहाँ एक और तरीका है कि आप क्या पहली बार में करने की कोशिश की करने के लिए और अधिक करीब है है:

hg commit -m "$(echo -e 'foo\nbar')" 
4

मुझे पता है, वहाँ पहले से ही लिनक्स उपयोगकर्ताओं के लिए एक समाधान है, लेकिन मैं खिड़कियों कमांड लाइन के लिए एक और समाधान की जरूरत है, तो मैं था यह तलाश में ...

और मैं एक पाया: https://www.mercurial-scm.org/pipermail/mercurial/2011-November/040855.html

hg commit -l filename.txt 

मुझे आशा है कि, यह वहाँ बाहर किसी के लिए उपयोगी है,)

[संपादित करें] ऊ - यह पहले से ही मदद

-l --logfile फ़ाइल फ़ाइल

16

से विंडोज cmd से संदेश प्रतिबद्ध पढ़ने के लिए जोड़ दिया गया है, इस आदेश कर एक multiline प्रतिबद्ध के लिए।

hg commit -l con 

यह आपको कमांड लाइन से सीधे एक से अधिक लाइन प्रतिबद्ध संदेश दर्ज करने की अनुमति देता है। अपने संदेश समाप्त करने के लिए, मारा दर्ज करें, और एक लाइन पर ही Ctrl +जेड मारा द्वारा और फिर दर्ज करें।

क्यों?-lhg commit विकल्प को फ़ाइल से प्रतिबद्ध संदेश पढ़ने के लिए कहते हैं, और con निर्दिष्ट करता है कि फ़ाइल वास्तव में कंसोल है।

+0

अभी भी "hg टैग" कमांड के लिए ऐसा करने के लिए दस्तावेज़ों में एक तरीका ढूंढ रहा है क्योंकि '- l' '--local' है और नहीं" --logfile "(जैसे यह hg प्रतिबद्ध के लिए है)। – zanlok

0

PowerShell के साथ के लिए विंडोज:

hg commit --message "foo`nbar" 
संबंधित मुद्दे