2014-04-22 10 views
7

कभी-कभी मैं एक ही समय में एक गिट भंडार को पढ़ने और लिखने का प्रयास करता हूं। लेकिन जब मैं फ़ाइलों को करने का प्रयास करता हूं तो बाद में मुझे निम्न त्रुटि संदेश मिलता है:LibGit2Sharp इंडेक्स लॉक है - त्रुटि

libgit2 द्वारा एक त्रुटि उठाई गई थी। श्रेणी = सूचकांक (लॉकफाइल)। अनुक्रमणिका लॉक है। यह एक समवर्ती या क्रैश प्रक्रिया के कारण हो सकता है।

प्रतिबद्धता अपेक्षित के रूप में की जाती है, मुझे यह त्रुटि संदेश क्यों मिलता है? मुझे इससे छुटकारा कैसे मिलेगा?

(एक LibGit2Sharp डेवलपर देखता है इस: वहाँ त्रुटि संदेश में एक वर्तनी misstake है:। ConcuRRRent): डी

उत्तर

5

सूचकांक Git वस्तु डेटाबेस और कार्यशील निर्देशिका के बीच एक प्रवेश द्वार के चैनल है। इसका उपयोग तब किया जाता है जब कोई प्रतिबद्धता तैयार की जाती है (यानी स्टेजिंग, अस्थिर, ..) या फ़ाइलों की जांच करते समय। इस प्रकार उन परिचालनों को एक साथ करने से इस प्रकार की त्रुटियां बढ़ सकती हैं क्योंकि दोनों परिचालन सूचकांक तक पहुंच प्राप्त करने के लिए दौड़ेंगे।

libgit2 स्तर पर किया जा रहा है सूचकांक थ्रेड के लिए एक बेहतर अनुभव के संचालन को पढ़ने के उपयोग करने के लिए कुछ काम (देखें libgit2/libgit2#2108 उदाहरण के लिए)।

  • उदाहरण के लिए, नेविगेट एक प्रतिबद्ध, एक पेड़ या एक की सामग्री को पुन: प्राप्त:

    हालांकि, पढ़ें/लिखें संचालन निष्पादित के प्रकार पर निर्भर करता है, आप सूचकांक के माध्यम से जाने की जरूरत नहीं हो सकती है ब्लॉब इंडेक्स का लाभ नहीं उठाएगा।

  • आप सीधे ऑब्जेक्ट डेटाबेस में ऑब्जेक्ट्स डालने से इंडेक्स के माध्यम से ब्लॉब्स, पेड़ और कमेट्स भी बना सकते हैं (इसे जल्दी से शुरू करने के लिए यह StackOverflow answer देखें)।

एक LibGit2Sharp डेवलपर इस देखता है: वहाँ त्रुटि संदेश में वर्तनी की गलती है: concuRRRent।

अच्छा पकड़! क्या आप इसे ठीक करने में हमारी सहायता के लिए पुल अनुरोध खोलना चाहते हैं? ;-)

+1

मैं पाश जो चरण और एक फ़ाइल 1000 बार करता है मिल गया है। प्रत्येक प्रतिबद्धता के बाद फ़ाइल सामग्री बदल दी जाती है। एक ही समय में मैं फ़ाइल के इतिहास को प्राप्त करने के लिए भंडार में सभी काम करता हूं। किसी बिंदु पर मुझे संदेश "libgit2 द्वारा एक त्रुटि उठाई गई थी। श्रेणी = ओएस (त्रुटि)। लॉकफ़ाइल का नाम बदलने के लिए .git/अनुक्रमणिका: एक्सेस अस्वीकार कर दी गई है।" बाद में मैं अपने पद से शुरू त्रुटि संदेश मिलता है कि हर प्रतिबद्ध के बाद। क्या मैं किसी भी तरह भंडार की मरम्मत कर सकता हूं? – JoeLiBuDa

+10

यदि 'index.lock' फ़ाइल क्रैश प्रक्रिया से है, तो आप इसे हटा सकते हैं। यह स्वचालित रूप से नहीं होता है क्योंकि यह एक समवर्ती लाइव प्रक्रिया से हो सकता है। –

+0

@ कार्लोसमार्टिननेटो जो मेरी समस्या हल करता है! महान! – JoeLiBuDa

8

ड्रॉपबॉक्स भी गिट ऑपरेशंस में हस्तक्षेप कर सकता है। मैं किसी भी गिट सिंक से पहले ड्रॉपबॉक्स सिंकिंग रोकता हूं।

+0

मेरे पास ड्रॉपबॉक्स स्थापित नहीं है ... – JoeLiBuDa

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