2011-09-21 16 views
8

से जुड़े टैग को पुनर्प्राप्त करें मैं एक विशिष्ट प्रतिबद्ध हैश (यदि कोई है) से जुड़े टैग पुनर्प्राप्त करने के लिए जेजीआईटी एपीआई का उपयोग करना चाहता हूं?जेजीआईटी: गिट प्रतिबद्ध

कृपया इसके लिए कोड स्निपेट प्रदान करें।

उत्तर

11

Git object model विशिष्ट ऑब्जेक्ट यानी विशिष्ट वस्तु के बारे में जानकारी वाले ऑब्जेक्ट के रूप में टैग का वर्णन करता है। प्रतिबद्ध (अन्य चीजों के साथ) इस प्रकार शुद्ध गिट में आपके द्वारा प्राप्त की जाने वाली जानकारी प्राप्त करना असंभव है (ऑब्जेक्ट को संबंधित टैग के बारे में जानकारी नहीं है)। यह "पिछड़ा" किया जाना चाहिए, टैग ऑब्जेक्ट लेना चाहिए और फिर विशिष्ट प्रतिबद्धता का संदर्भ लें।

तो यदि आप विशेष प्रतिबद्धता के लिए निर्दिष्ट टैग के बारे में जानकारी प्राप्त करना चाहते हैं तो आपको उन्हें (टैग) पर फिर से शुरू करना चाहिए और उचित चुनना चाहिए।

List<RevTag> list = git.tagList().call(); 
ObjectId commitId = ObjectId.fromString("hash"); 
Collection<ObjectId> commits = new LinkedList<ObjectId>(); 
for (RevTag tag : list) { 
    RevObject object = tag.getObject(); 
    if (object.getId().equals(commitId)) {; 
     commits.add(object.getId()); 
    } 
} 
+1

जेजीआईटी मेलिंग सूची से प्रश्न के बारे में अधिक जानकारी [इस धागे में] [http://dev.eclipse.org/mhonarc/lists/jgit-dev/msg01706.html) मिल सकती है। – Sonson123

+0

क्या आप काम के बजाए टैग एकत्र नहीं करना चाहिए? –

+1

और org.eclipse.jgit.api.Git.tagList()। कॉल() रिटर्न सूची । –

4

क्या आप जानते हैं आपके लिए प्रतिबद्ध के लिए वास्तव में एक टैग है कि वहाँ हैं, तो आप describe इस्तेमाल कर सकते हैं, JGit के नवीनतम संस्करण (~ November 2013) में।

Git.wrap(repository).describe().setTarget(ObjectId.fromString("hash")).call() 

आप परिणाम पार्स सकता है, यदि किसी टैग मौजूद है को देखने के लिए, लेकिन अगर वहाँ एकाधिक टैग किया जा सकता है, तो आप Marcins समाधान के साथ जाना चाहिए।

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