2011-05-30 5 views
5

मैं एक डॉस शीघ्र से निम्न आदेश चलाते हैं:मैं कैसे Powershell के भीतर से नवीनतम मर्क्युरियल टैग मिलता है

एचजी माता-पिता --template {latesttag}

तो मैं नवीनतम टैग मान के रूप में वापस मिल अपेक्षित होना।

एचजी माता-पिता: लेकिन अगर मैं एक powershell सांत्वना मैं निम्नलिखित त्रुटि मिलती है के भीतर से ही आदेश चला मैं powershell में चलाने के लिए आदेश की जरूरत विकल्प

मान्यता प्राप्त नहीं मैं तो मैं एक के रूप में यह परिणाम प्राप्त कर सकते हैं उपयोग करने के लिए चर। कोई भी विचार जो मुझे कमांड चलाने के लिए करना है? जिस तरह से साथ Powershell चीजों को पार्स करता

hg parents --template '{latesttag}' 

कभी कभी, तथापि, आप पाएंगे कि डबल दोगुना सुनिश्चित करने के लिए है:

उत्तर

4

तुम बस उद्धरण में --template को तर्क के चारों ओर ताकि Powershell जानता है कि यह एक स्ट्रिंग है की आवश्यकता चाहिए उद्धरण (जैसे कि एक तर्क यह है कि रिक्त स्थान होता है, लेकिन कई के 1 तर्क के बजाय होना चाहिए, रास्तों की तरह या एक लंबी टेम्पलेट गुजर के रूप में) जीवित रहने:

hg parents --template '"{latesttag}"' 
+1

बिल्कुल सही धन्यवाद। इस मामले में, कोट्स के केवल एक सेट के साथ पहला उदाहरण काम करता था। –

+0

मेरे लिए नवीनतम टैग नहीं देता है .. लेकिन एक पुराना टैग, क्या यह सभी शाखाओं की जांच करता है क्योंकि टैग वैश्विक हैं? – OZZIE

1

इस उत्तर में एक बहुत बड़ा त्याग के साथ आता है:

  1. There might be better/different ways than this one, harnessing only PowerShell code, but I'm no PowerShell expert
  2. I am the author of the following class library

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

इसे Nugetpackage के माध्यम से स्थापित किया जा सकता है।

चूंकि मैं कोई पावरशेल विशेषज्ञ नहीं हूं, इसलिए मैं दिखाऊंगा कि सी # कोड और मेरी लाइब्रेरी के साथ ऐसा कैसे करें।

यह मानते हुए कि लाइब्रेरी सभी विकल्प (अभी तक) लागू नहीं करती है, दुख की बात है कि माता-पिता कमांड को मेरी लाइब्रेरी द्वारा उपयोग नहीं किया जा सकता है, लेकिन लॉग कमांड शायद अधिक ओवरहेड कर सकता है। आपको यह स्वीकार करना होगा कि यह स्वीकार्य है या नहीं।

माता-पिता कमांड का उपयोग नहीं किया जा सकता है, क्योंकि अब मैंने मर्कुरियल में टेम्पलेटिंग सिंटैक्स के लिए समर्थन लागू नहीं करने का फैसला किया है, क्योंकि तब मुझे पता है कि किस तरह का आउटपुट उम्मीद कर सकता है और इसे वापस उचित रूप से पार्स कर सकता है। नेट उदाहरण

var repo = new Repository("."); 
var tags = repo.Log(new LogCommand().WithRevision("tag()")).First().Tags.ToArray(); 

इस टैग के नामों की एक सरणी के साथ tags से स्थापित हो जाएगा:

यहाँ कि tipmost टैग मिलेगा नेट कोड है। लॉग कमांड लॉग इन रिवर्स ऑर्डर देता है, पहले सबसे नए बदलाव, इसलिए .First() को नवीनतम परिवर्तन मिलेगा। कि यदि एक टैग है

repo.Log(new LogCommand().WithRevision("tag() and ancestors(.)")).First().Tags... 
              ^---------------^ 

यह काम कर फ़ोल्डर में संशोधन शामिल हैं:

आप निकटतम टैग भी वर्तमान में काम कर रहे फ़ोल्डर के एक पूर्वज है कि जरूरत है, यहाँ बदली हुई कोड है।यदि आपको पूर्वजों की आवश्यकता है, तो कार्य फ़ोल्डर के संशोधन सहित:

repo.Log(new LogCommand().WithRevision("tag() and ancestors(.) and not .")).First().Tags... 
                   ^--------^ 
+0

दिलचस्प। उस पुस्तकालय को कम से कम कुछ चीजों के लिए मेरे लिए काम करना चाहिए। –

संबंधित मुद्दे