2012-07-22 16 views
5

मेरा git सेटअप में एक केंद्रीय भंडार है जिसमें मैं धक्का देता हूं। आज मैंने Git Extensions का उपयोग करके केंद्रीय भंडार को देखने का फैसला किया, और यह कहा कि रेपो का कोई काम नहीं है (लगभग जैसे रेपो कभी नहीं बनाया गया था)। इस समस्या की जांच, मैं रेपो क्लोन करने की कोशिश की, और यह मुझे कुछ अजीब त्रुटियों मैं कभी नहीं देखा है दिया:गिट त्रुटि "गैर-मोनोटोनिक इंडेक्स"

error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index .git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
error: non-monotonic index C:/Temp/N1/Netduino/.git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
fatal: unable to read tree cc90183a1571664f80712c0376f59afeb681303f 

मैं इस मुद्दे के बारे गूगल खोज की है, और वहाँ भी इस समस्या के बारे StackOverlow पर एक और सवाल है, लेकिन यह अनुत्तरित रहता है (this question)। कोई भी इस मुद्दे पर प्रकाश डालने में सक्षम है? धन्यवाद

उत्तर

5

(नहीं एक पूरा जवाब है, लेकिन कम से कम कुछ सुराग, और एक वैकल्पिक हल)

कि त्रुटि संदेश sha1_file.c, method check_packed_git_idx() से आता है,

nr = 0; 
index = idx_map; 
if (version > 1) 
    index += 2; /* skip index header */ 
for (i = 0; i < 256; i++) { 
    uint32_t n = ntohl(index[i]); 
    if (n < nr) { 
    munmap(idx_map, idx_size); 
    return error("non-monotonic index %s", path); 
    } 
    nr = n; 
} 

ntohl function being साथ:

ntohl फ़ंक्शन बाइट ऑर्डर होस्ट करने के लिए टीसीपी/आईपी नेटवर्क ऑर्डर से u_long को परिवर्तित करता है (जो इंटेल प्रोसेसर पर थोड़ा-अंत है)।

ntohl फ़ंक्शन बाइट ऑर्डर उलट के साथ netlong पैरामीटर में प्रदान किए गए मान को वापस देता है। यदि netlong पहले से ही होस्ट बाइट ऑर्डर में है, तो यह फ़ंक्शन इसे उलट देगा। यह निर्धारित करने के लिए आवेदन है कि बाइट ऑर्डर को उलट दिया जाना चाहिए या नहीं।

ntohl समारोह टीसीपी/आईपी नेटवर्क बाइट क्रम में एक 32-बिट संख्या (AF_INET या AF_INET6 पते के परिवार) लेता है और मेजबान बाइट क्रम में एक 32-बिट संख्या दिखाता है।

तो सवाल में एक पैकेट फ़ाइल की संरचना देखें "Is the git binary diff algorithm (delta storage) standardized?":

यह द्वारा कहा जाता है

pack file structure

पहले को builtin/fsck.c भी कहा जाता है, ताकि आप स्थानीय अपनी पैक फ़ाइलों के भ्रष्टाचार के लिए जांच कर सकें, या यदि यह वास्तव में रिमोट है तो यह एक गिट fsck --full - प्रगति का प्रयास कर सकता है। रेपो मुद्दा
सुनिश्चित करें कि आप इस मुद्दे को विभिन्न ओएस और/या गिट के विभिन्न संस्करण पर दोहरा सकते हैं।

सामान्य वैकल्पिक हल, एक (यहाँ "Netduino") रेपो जो, GitHub पर चारों ओर काँटेदार किया जा रहा है करने के लिए है के लिए:

  • क्लोन एक और कांटा,
  • भ्रष्ट से एक के अपने स्थानीय संशोधन बहाल रेपो, उन्हें जोड़ने और उन्हें
  • push --force वापस एक ही कांटा करने के लिए प्रतिबद्ध आदेश मिटा/साथ सही ढंग से पैक किया जा सकता
+0

जब आप कहते हैं कि एक और कांटा क्लोन है, तो क्या रेपो क्लोनिंग जैसा ही है? जब मैं रिपो क्लोन करने की कोशिश करता हूं तो मुझे इन उपरोक्त त्रुटियां मिल रही हैं। और मेरे स्थानीय संशोधनों को पुनर्स्थापित करने के लिए चरण 2 में, गिट एक्सटेंशन में बस "फ़ाइल परिवर्तन रीसेट करें" होगा? धन्यवाद – Anshul

+0

@ अनशुल आपके रेपो को गिथब पर कई बार कॉपी किया गया है (फोर्क किया गया)। उन अन्य प्रतिनिधिों में से एक को क्लोन करने का प्रयास करें और देखें कि समस्या बनी रहती है या नहीं। – VonC

+0

मैं गिटहब का उपयोग नहीं कर रहा हूं, यह सब मेरे निजी कंप्यूटर पर है। तो अगर मैं आपको सही ढंग से समझता हूं, तो मुझे बस अपने अन्य भंडारों में से एक की प्रतिलिपि लेनी चाहिए और बस इसका उपयोग करना चाहिए? अनिवार्य रूप से, मेरे पुराने टूटे हुए रेपो को हटा दें और इसे एक नए क्लोन के साथ प्रतिस्थापित करें? धन्यवाद – Anshul

4

मैं खोज रहा था एक के बाद दूरदराज के इतिहास को रीसेट करने के लिए, इस प्रकार की गैर-मोनोलिटिक त्रुटि में जानकारी के लिए आईएनजी और यह लिंक मिला: http://git.661346.n2.nabble.com/Error-non-monotonic-index-after-failed-recursive-quot-sed-quot-command-td7575014.html

टीएल; डीआर: आप गैर-मोनोलोटिक इंडेक्स को हटाते हैं और फिर इसे फिर से समझते हैं। लिनक्स में यह होगा:

> rm .git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.idx 
> git index-pack .git/objects/pack/pack-29a18084cf61cd0322a6e9cfd485ce0977348c53.pack 

इस मैं कुछ git gc --prune=now और git remote prune origin चलाने के लिए किया था के बाद, लेकिन मैं कुछ अन्य कार्यों किया था इससे पहले कि इसलिए मैं अपने रेपो खराब हो सकता है।