2010-02-12 5 views
8

मैं जानना चाहता हूं कि मेरे सी/सी ++ कोड में Mercurial टैग एम्बेड करने का कोई तरीका है या नहीं।मैं अपने सी/सी ++ कोड में Mercurial टैग कैसे एम्बेड करूं?

मूल रूप से मुझे टैग स्ट्रिंग चाहिए, जो एक स्थिर स्ट्रिंग के रूप में मेरे सी कोड के निर्धारित स्थान में स्वचालित रूप से डालने के लिए रिलीज़ नंबर (major.minor.rev) होने के समाप्त हो जाएगा।

समग्र उद्देश्य यह है कि एप्लिकेशन को '-v' कमांड लाइन तर्क के साथ निष्पादित करते समय इसके संस्करण संख्या के बारे में पूछताछ की जा सकती है। कोई वैकल्पिक दृष्टिकोण जिसमें Mercurial टैग को एम्बेड करने का प्रयास शामिल नहीं है, को भी उत्तर के रूप में स्वागत किया जाएगा।

मैं लिनक्स पर्यावरण पर कोड :: ब्लॉक का उपयोग कर रहा हूं, इसलिए समाधान विजुअल स्टूडियो सुविधाओं पर भरोसा नहीं कर सकता है।

उत्तर

0

हम इस

#define CVS(a) static const volatile char *rcsid = a; 

.... 
CVS("$Id$") 

सीवीएस के लिए मैक्रो का उपयोग पूर्ण रूप से अपने फैलता $ क्रमांक $। मुझे लगता है कि यह वही है जो Mercurial टैग भी काम करते हैं।

तो हम तार आदेश का उपयोग करें निष्पादन योग्य/पुस्तकालय आदि

तो आपको कुछ ऐसा इस्तेमाल कर सकते हैं में प्रत्येक फ़ाइल के सही संस्करण को खोजने के लिए कर सकते हैं।

static const volatile char *rcsid = "$Id"; //or whatever mercurial tag you want 

int main() { 

    ..... 
    std::cout << "Version is " << rcsid << std::endl; 
} 
+0

यदि $ आईडी $ टैग में भटकना पड़ा तो आपको परेशानी होगी। आप # सीवीएस (ए) स्थिर कॉन्स अस्थिर char * rcsid = #a; \ ... \ CVS परिभाषित कर सकते हैं ($ आईडी $); 'इसके बजाय –

+0

@ टिम शेफेर, अच्छी पकड़, मैंने स्मृति से पोस्ट किया। कभी-कभी अच्छी पुरानी प्रतिलिपि/पेस्ट – Glen

+0

के लिए कोई विकल्प नहीं है, अब आपको उसमें एक भटकने वाली कॉमा की आईडी टैग की समस्या है। –

6

आप keyword extension कीवर्ड प्रविष्टियों का विस्तार की अनुमति की आवश्यकता होगी, यह अस्थिर साथ आ जाते हैं।

उदाहरण क्या आप रेपो (.hg/hgrc) के लिए hgrc संपादित कर सकता है $Id$ के लिए समर्थन मिलता है और जोड़ने के लिए के लिए:

[extensions] 
keyword = 

[keyword] 
# Enable expansion for the specific files 
myfile.cpp = 
# Enable for all .h files 
**.h = 

फिर

hg kwexpand 

कीवर्ड प्रासंगिक फ़ाइलों का विस्तार करने के चलाने के लिए, या

hg kwshrink 

कीवर्ड को कम करने के लिए। आप [keywordmaps] प्रविष्टि जोड़कर अपने स्वयं के कीवर्ड भी बना सकते हैं, उदा।

[keywordmaps] 
User = {author|user} 

नोट: यह अंतर्निहित कीवर्ड विस्तार पर

अधिक जानकारी in the wiki पाया जा सकता है अक्षम करता है।

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