2013-09-05 10 views
16

क्या यह पता लगाना संभव है कि एक संग्रह से गिट टैग किसने हटा दिया?देखें कि किसने हटाया गया टैग

मान लें कि आपके पास योगदानकर्ताओं के साथ एक भंडार है। भंडार में dev टैग और संस्करण हैं: v0.1.0, v0.1.1 आदि

कोई व्यक्ति टैग हटा देता है। आपको कैसे मिलेगा ने गिट टैग हटा दिया?

+0

अपने भंडार का उपयोग प्रोटोकॉल क्या है? क्या आपके पास रिपॉजिटरी सर्वर पर लॉग देखने की अनुमति है? –

+0

मैं 'ssh' प्रोटोकॉल का उपयोग करता हूं ... मैं दूसरे प्रश्न को समझ नहीं पा रहा हूं। क्या आपका मतलब है 'गिट लॉग'? –

+0

एसएसएच एक्सेस लॉग की जांच के लिए डिफ़ॉल्ट रूप से रूट पहुंच की आवश्यकता है। नहीं, मेरा मतलब रेपो सर्वर पर '/ var/log/auth.log' देखने की अनुमति है। –

उत्तर

6

आप टैग के दो प्रकार की है। उनके पास कोई लेखक नहीं है। यह कहकर कि टैग का लेखक प्रतिबद्धता का लेखक गलत है, क्योंकि कोई और टैग कर सकता है जो हल्के टैग के साथ प्रतिबद्ध होता है।

एनोटेटेड टैग दूसरी ओर हैं जैसे कि काम करता है। यही कारण है कि एनोटेटेड टैग को जब आप उन्हें बनाते हैं तो एक संदेश की भी आवश्यकता होती है। उनके पास एक लेखक, वर्णन, आदि है

तो, अपने टैग के लेखकों को जानने के लिए, आपके पास एक एनोटेटेड टैग नीति होनी चाहिए। लेकिन, मुझे पता है कि गिट रेपो मेटाडाटा (.git निर्देशिका) का कोई इतिहास नहीं है। इसका मतलब है कि आप यह नहीं जान सकते कि टैग/शाखा/आदि को किसने हटा दिया है, जब तक कि आपके गिट प्रदाता के पास ऑडिट/लॉग/करने के लिए कोई तंत्र न हो।

+0

@ चार्ल्सबी आखिरी वाक्य में मैं कह रहा था कि यह गिट के साथ संभव नहीं है। –

5
restoring deleted tags के बारे में इस Git टिप के बाद

, आप निम्न कर सकते हैं:

सब नहीं पहुंचा जा सकता टैग git fsck में खोजें:

git fsck --unreachable | grep tag 

और फिर उत्पादन में प्रत्येक के लिए प्रतिबद्ध हैश के लिए, चलाने

git show COMMIT_HASH 

यदि आप प्रासंगिक व्यक्ति (टैगर) के साथ सभी पहुंचने योग्य (हटाए गए) टैग सूचीबद्ध करने के लिए शेल स्क्रिप्ट चाहते हैं, तो आप निम्नलिखित कॉमा चला सकते हैं nd:

for commit in `git fsck --unreachable | grep tag | awk '{ print $3 }'`; do 
    git show $commit | grep -E "^(tag|Tagger)"; 
done 

संपादित करें: यह वास्तविक प्रश्न पूछा उत्तर नहीं मिलता है, लेकिन यह आपको बताता है कि सूचकांक में सभी पहुँच योग्य नहीं टैग के लेखकों को देखने के लिए।

  • हल्के
  • एनोटेट

हल्के टैग एक प्रतिबद्ध के लिए केवल मेटाडाटा हैं:

+3

यह सभी पहुंचने योग्य टैग ऑब्जेक्ट्स पाता है, लेकिन सभी ऑब्जेक्ट्स के लिए टैग ऑब्जेक्ट्स नहीं बनाए जाते हैं।साथ ही, यह दिखाता है कि टैग किसने बनाया है, लेकिन सवाल यह जानने के लिए कहता है कि टैग को किसने हटा दिया। – hvd

+0

एचएम ... यह दिलचस्प है। सभी टैग के लिए ऑब्जेक्ट्स टैग क्यों नहीं बनाई जाएंगी? – Frost

+1

टैग ऑब्जेक्ट्स को सरल 'गिट टैग टैग-नाम' के लिए नहीं बनाया जाता है, क्योंकि ऐसा कोई कारण नहीं है कि वे क्यों होंगे। यदि आप ऐसा करते हैं, तो एक रेफरी जोड़ दी जाती है, और यह सब कुछ जरूरी है। टैग ऑब्जेक्ट्स केवल 'गिट टैग - [asu]' के साथ बनाए जाते हैं, 'गिट हेल्प टैग' देखें, जब टैग के साथ एक संदेश संग्रहीत किया जाए, जो किसी प्रतिबद्धता से संबंधित नहीं है। – hvd

1

गिट वास्तव में पुश के दौरान क्या होता है लॉग इन नहीं करता है। यह पोस्ट git: how to see changes due to push?, सुझाव देता है कि रीफ्लॉग को पुश पर अपडेट किया गया है, लेकिन मुझे संदेह है कि यह एक टैग हटाना लॉग करेगा।

आप एक धक्का पर टैग हटाए जाने निष्क्रिय कर सकते हैं (और यह एक अच्छा विचार है): Disable tag deletion

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