2012-02-17 12 views
10

हमने अपने गिट भंडार पर "2012/02/16" टैग बनाया है। हमने तब देखा कि स्रोत वृक्ष के अंदर 2012 और 01 को फ़ोल्डर्स के रूप में दर्शाया गया था जो टैग को प्रकट और छिपाने के लिए अच्छी तरह से खोले और बंद हो सकते थे। टैग की घोंसला पदानुक्रम होने के कारण केवल एक फ्लैट सूची होने के बजाय टैग व्यवस्थित करने का एक अच्छा तरीका लगता है।क्या पदानुक्रमित/नेस्टेड टैग बनाने के लिए गिट टैग नाम में "/" डालने में समस्याएं हैं?

क्या ऐसा करने में कोई समस्या है?

जब मैं एक Git ls-दूरस्थ मैं निम्नलिखित प्रविष्टियां क्यों दिखती हैं:

8430572c89362b875109628c33a18e782aa38488 refs/tags/2012/02/16 
d247e38159c8c4998bf8b555edfd7ffe7b945255 refs/tags/2012/02/16^{} 

मुझे यकीन है कि क्या^{} दूसरे टैग के अंत में पात्रों का मतलब यह नहीं कर रहा हूँ और मैं यह सुनिश्चित करना चाहते कि इस व्यवहार पर हम ठोकर खा रहे हैं, ऐसा कुछ नहीं है जिसे हम जाने से पहले नहीं करना चाहिए और हमारे टैग को साफ करने के लिए इसका लाभ उठाएं।

हम हमारे "अन-नेस्टेड" टैग पर^{} वर्ण नहीं देखते हैं।

+3

'^ {} 'एक टैग को निरंतर रूप से टैग करने के लिए एक शॉर्टंड सिंटैक्स है जब तक कि यह एक गैर-टैग ऑब्जेक्ट न हो जाए। यदि आप इसे अपने अन्य टैग पर नहीं देख रहे हैं, तो इसका मतलब हो सकता है कि आपके अन्य टैग एनोटेटेड टैग की बजाय हल्के टैग हैं। –

उत्तर

8

कोई समस्या नहीं, स्लैश का उपयोग करना मानक अभ्यास है उदाहरण के लिए "गिट-फ्लो" अनुशासन में। आप मैन्युअल पृष्ठ पर टैग के नाम के लिए सिंटैक्स नियमों की जांच कर सकते Git-चेक-रेफरी प्रारूप (1): http://schacon.github.com/git/git-check-ref-format.html

ब्रैकेट के साथ कैरट है कुछ Git कि टैग के बारे में आप, कुछ आपके द्वारा लिखे गए नहीं बताने के लिए कोशिश कर रहा है । आप मैन्युअल पृष्ठ gitrevisions (7) का उपयोग करते हुए यह व्याख्या कर सकते हैं: http://schacon.github.com/git/gitrevisions.html

+0

ओपी को नोट करें: स्लैश का उपयोग करना पूरी तरह से ठीक है, और आप इसे * नेस्टिंग के रूप में सोच सकते हैं, लेकिन कोई गिट कमांड वास्तव में टैग के सेट को पदानुक्रम के रूप में नहीं मानेंगे। यह वही है कि वे कैसे संग्रहीत होते हैं। – Cascabel

10

केवल समस्या आपके सामने आने वाली एक बेकार त्रुटि संदेश यदि आप एक टैग है कि एक "निर्देशिका" अपने पदानुक्रम में से टकरा बनाने का प्रयास है (वजह से

% git tag foo/bar 
% git tag foo 
error: there are still refs under 'refs/tags/foo' 
fatal: refs/tags/foo: cannot lock the ref 

इस अभ्यास में एक समस्या होने की संभावना नहीं है, यह सामान्य रूप से आता है, जब लोग कोशिश करते हैं और कार्य करें:: सीधे निर्देशिका कि Git टकराने टैग) दुकान का उपयोग करता द्वारा

v0.0.1/rc1 
v0.0.1/rc2 
v0.0.1/beta1 
v0.0.1/beta2 

तो, कोशिश करो और टैग v0.0.1, जो उपरोक्त समस्या को हिट करेगा।

+0

आपको बहुत बहुत धन्यवाद! मेरे पास "1.3.3 9/40" टैग की गई एक प्रतिबद्धता थी और इसे 1.3.3 9 और 1.3.40 के रूप में अलग करने की कोशिश कर रहा था, इसलिए मैंने 'गिट टैग 1.3.3 9 -am' संस्करण 1.3 संशोधन 39 "1.3.39/40 टाइप किया 'और यह त्रुटि मिली। बस स्लैश के साथ टैग को हटाने के बाद प्रतिबद्ध हैश प्रदान करके नया टैग जोड़ना समस्या हल हो गया। – Dan

1

साथ ही फ़ाइल/निर्देशिका टक्कर समस्या भी एक केस-संवेदनशीलता समस्या है जिसे आप चला सकते हैं। यदि आप केस-असंवेदनशील फाइल सिस्टम जैसे विंडोज और मैक ओएस एक्स पर चल रहे हैं तो रिमोट रिपोजिटरी पर टैग होना संभव है जिसे आप नहीं ला सकते/खींच सकते हैं। उदाहरण के लिए निम्नलिखित संघर्ष होगा:

archive/some-tag-or-other 
Archive/a-different-tag 

के रूप में जब Git दूसरे टैग यह वास्तव में .git/refs/tags/archive निर्देशिका में रखी जाने वाली पैदा करता है। एक बार जब आप उस राज्य में हों तो बाद में लाने/खींचें लगातार दूसरे टैग को फिर से प्राप्त करने का प्रयास करेंगी।

हालांकि इसके लिए एक आसान कामकाज है, जो git pack-refs चलाने के लिए है जो सादा पाठ फ़ाइल .git/packed-refs में व्यक्तिगत रेफ फाइलों को जोड़ता है। एक बार जब आप चलाते हैं कि पहले टैग के लिए व्यक्तिगत टैग फ़ाइल .git/refs/tags/archive निर्देशिका के साथ हटा दी जाएगी, तो दूसरा टैग सफलतापूर्वक प्राप्त/खींचा जा सकता है।

+0

प्रश्न से संबंधित नहीं है। टैग 'कुछ-टैग' और 'कुछ-टैग' एक ही चीज़ का कारण बनेंगे, बिना किसी फ़ोल्डर्स के। – Chronial

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