git गिट svn क्लोन malformed सूचकांक जानकारी त्रुटि




perl (11)

जब मैं गिट svn क्लोन चलाता हूं तो मुझे निम्न त्रुटि मिलती है:

  0 [main] perl 24432 cygwin_exception::open_stackdumpfile: Dumping stack trace to perl.exe.stackdump
  fatal: malformed index info 100644 362f1c18ceed5d593eb021432545685283a93 

जब मैं फ़ाइल खोलता हूं तो मुझे निम्न दिखाई देता है:

अपवाद: रिप पर STATUS_ACCESS_VIOLATION = 0048360C537 Rax = 00000006039F81E0 Rbx = 000000005219E248 RCX = 000000060003A3C0 RDX = -0000000000000000 RSI = 000000000000FDB4 RDI = 0000000000000004 r8 = -0000000000000000 r9 = -0000000000000000 R10 = 0000000000230000 r11 = 000000048D785FBA r12 = 0000000000000003 R13 = 000006FFFF7FEDB8 R14 = 00000006014D4030 R15 = 000006FFFF7FEDD0 RBP = 000000000007EDA8 आरएसपी = 000000000022 बीई 80 प्रोग्राम = सी: \ प्रोग्राम फ़ाइलें \ गीट \ usr \ bin \ perl.exe, पिड 24432, थ्रेड मुख्य सीएस = 0033 डीएस = 002 बी एस = 002 बी एफएस = 0053 जीएस = 002 बी एसएस = 002 बी

मैंने निम्नलिखित लिंक चेक किए हैं:

गिट एसवीएन क्लोन के साथ त्रुटि

गिट svn के माध्यम से एक एकल एसवीएन शाखा क्लोनिंग समस्या

विंडोज के लिए पायथन एसवीएन बाइंडिंग्स

subversion पायथन बाइंडिंग दस्तावेज?

दुर्भाग्यवश, मैं अंतर्निहित प्रौद्योगिकियों के लिए पर्याप्त परिचित नहीं हूं कि मुझे यह पता लगाना चाहिए कि मुझे क्या करना चाहिए। इसका कारण बन सकता है और मैं कैसे हल कर सकता हूं?


मेरे पास समान अपवाद और त्रुटि संदेश थे, मेरे लिए ए

git gc

और / या ए

git svn gc

भंडार वापस एक उपयोगी राज्य में लाया। https://.com/a/1436386/411846 भी https://.com/a/1436386/411846


मैं सिगविन का उपयोग कर सही ढंग से svn repo को देखने में सक्षम था।


अद्यतन: 2.11.0 और गिट-एसवीएन 1: 2.11.0-2ubuntu0.2 के साथ उबंटू 17.04 को अपडेट करने के बाद क्लोन ने बेकार ढंग से काम किया।

पर्ल स्क्रिप्ट के माध्यम से डीबग करते समय मुझे उस मुद्दे के लिए एक मजेदार समाधान मिला:

  • पर्ल डीबगर में git svn चलाकर धीमा या किसी भी तरह निष्पादन में हेरफेर करें।

निम्नलिखित कमांड के साथ git svn fetch प्रारंभ करें (आपको पथ बदलना पड़ सकता है। यह क्लोन के साथ भी काम करना चाहिए)। अपने गिट भंडार / निर्देशिका के अंदर कमांड को चलाने के लिए सुनिश्चित करें:

perl -d /usr/lib/git-core/git-svn fetch

डीबगर में निम्न दर्ज करें और ENTER दबाएं:

b /usr/share/perl5/Git/SVN/Fetcher.pm:368 $base==undef or $dup==undef

यह मूल रूप से उस स्थिति पर एक सशर्त ब्रेकपॉइंट जोड़ता है जहां मुझे सिग्नल 11 मिलता है। यह कोड की रेखा है:

[ SVN::TxDelta::apply($base, $dup, undef, $fb->{path}, $fb->{pool}) ];

फिर निष्पादन जारी रखने के लिए c दर्ज करें और ENTER दबाएं।

क्या कोई समझा सकता है कि यह क्यों मदद करता है?

संपादित करें: यह काम करता है: 213000 संशोधन और 1780 शाखाओं ने गिट में क्लोन किया!


मेरे लिए काम करने वाला एकमात्र समाधान गिट के पुराने संस्करण का उपयोग कर रहा था। मैंने गिट 1.8.3 के पोर्टेबल पैकेज का उपयोग किया जिसे यहां डाउनलोड किया जा सकता है:

https://github.com/msysgit/msysgit/releases/tag/Git-1.8.3-preview20130601

इसके साथ .git / config edits, splitted checkouts, या perl डीबग कथन की कोई आवश्यकता नहीं थी।


जांचें कि कौन सी svn प्रतिबद्ध समस्या का कारण बनता है।

कामों को git svn clone कमांड द्वारा आउटपुट किया जाता है, जो पहले आर द्वारा किया जाता था। आउटपुट की आखिरी प्रतिबद्धता समस्याग्रस्त है।

अगला उदाहरण दिखाता है कि गिट 373fb1... git svn clone कमांड आउटपुट करता है जब सबवर्सन संशोधन 15 को गिट प्रतिबद्ध 373fb1... रूप में 373fb1... :

r15 = 373fb1de430a6b1e89585425f276aae0058c3deb (refs/remotes/svn/trunk)

-r (संशोधन) विकल्प का उपयोग कर git svn clone कमांड को विभाजित करें

इस विधि का प्रयोग करें:

git svn clone -r 0:<problematic_revision - 1> <repo URL>
git svn clone -r <problematic_revision - 1>:problematic_revision <repo URL>
git svn clone -r <problematic_revision>:HEAD <repo URL>

संशोधन 15 को समस्याग्रस्त एक के रूप में मानते हुए, और रेपो इन /tmp/svn/repo/ , समाधान होगा:

git svn clone -r  0:14   file:///tmp/svn/repo/
git svn clone -r 14:15   file:///tmp/svn/repo/
git svn clone -r 15:HEAD file:///tmp/svn/repo/

मेरे मामले में, मैं हमारे वीपीएन से जुड़ा नहीं था, जो हमारे एसवीएन कनेक्शन के लिए जरूरी है। यह मेरी त्रुटि है:

Exception: STATUS_ACCESS_VIOLATION at rip=00000000000
rax=0000000000000000 rbx=00000006010BBDA8 rcx=00000006010BBDA8
rdx=00000006010C40E8 rsi=0000000000000011 rdi=0000000000000000
r8 =0000000000000000 r9 =00000006010EBCA8 r10=0000000100000000
r11=000000049F2423C9 r12=00000000FFFFC190 r13=00000000FFFFC198
r14=00000006010B2DF8 r15=00000006010B2D68
rbp=00000000FFFFC1A8 rsp=00000000FFFFC138
program=C:\Program Files\Git\usr\bin\perl.exe, pid 7884, thread main
cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B
Stack trace:
Frame        Function    Args
End of stack trace

मुझे गिट-एसवीएन के साथ सभी तरह की त्रुटियां मिल रही थीं जहां पर्ल स्क्रिप्ट विभिन्न स्थानों पर मर जाएगी, लाना टूट जाएगा, या सर्वर कनेक्शन काट देगा। यह एक विशाल रेपो था जो svn के माध्यम से चेक आउट करते समय दर्जनों जीबी लेता था।

मेरे लिए यह हल किया गया बस गिट-एसवीएन के बजाय स्मार्टगिट का उपयोग कर रहा था। इसके लिए जावा 8 की आवश्यकता थी, बहुत तेजी से भाग गया, और कुछ भी त्रुटियों की सूचना नहीं दी, कुछ घंटों में निर्बाध रूप से पूरा करने वाले कार्य ने कई दिनों तक svn लिया।


मेरे मामले में यह त्रुटि बड़ी भंडार के साथ हुई। तो यदि संभव हो तो सबफ़ोल्डर क्लोन करने का प्रयास करें।


यहां मेरी समस्या है:

  • ओएस: xubuntu 16.04
  • गिट-एसवीएन संस्करण 2.7.4 (एसवीएन 1.9.3)

perl -d /usr/lib/git-core/git-svn fetch से ट्रेस जानकारी:

Signal SEGV at /usr/local/share/perl/5.22.1/Git/SVN/Fetcher.pm line 368
    Git::SVN::Fetcher::apply_textdelta(Git::SVN::Fetcher=HASH(0x20ee160), HASH(0x2488a40), undef, _p_apr_pool_t=SCALAR(0x2488bf0)) called at /usr/lib/x86_64-linux-gnu/perl5/5.22/SVN/Ra.pm line 623
    SVN::Ra::Reporter::AUTOLOAD(SVN::Ra::Reporter=ARRAY(0x8d0fa0), SVN::Pool=REF(0x20ee910)) called at /usr/local/share/perl/5.22.1/Git/SVN/Ra.pm line 308
    Git::SVN::Ra::gs_do_update(Git::SVN::Ra=HASH(0x20df170), 42560, 42560, Git::SVN=HASH(0x20dea08), Git::SVN::Fetcher=HASH(0x20ee160)) called at /usr/local/share/perl/5.22.1/Git/SVN.pm line 1205
    Git::SVN::do_fetch(Git::SVN=HASH(0x20dea08), HASH(0x20ee1d8), 42560) called at /usr/local/share/perl/5.22.1/Git/SVN/Ra.pm line 471
    Git::SVN::Ra::gs_fetch_loop_common(Git::SVN::Ra=HASH(0x20df170), 42500, 95400, ARRAY(0x1637c08), ARRAY(0x1637c20)) called at /usr/local/share/perl/5.22.1/Git/SVN.pm line 179
    Git::SVN::fetch_all("svn", HASH(0x20dee28)) called at /usr/lib/git-core/git-svn line 570
    main::cmd_fetch() called at /usr/lib/git-core/git-svn line 386
    eval {...} called at /usr/lib/git-core/git-svn line 384
Aborted (core dumped)

अंततः मैंने निम्नलिखित चरणों से इस समस्या को ठीक किया (यह उबंटू लिनक्स 16.04 उपयोगकर्ताओं के लिए है):

sudo apt build-dep subversion
sudo apt install libneon27-dev
sudo cpan SVN::Core

फिर मैं किसी भी दुर्घटना के बिना git svn fetch/clone उपयोग कर सकते हैं।

इस समस्या का मूल कारण यह है कि पर्ल एसवीएन :: कोर लाइब्रेरी स्क्रिप्ट पर्ल में स्थापित द्विआधारी से मेल नहीं खाती है (सिस्टम स्थापित किए गए पर्ल में अलग पृथक्करण बाइनरी स्थापित हैं)।

सावधान रहें यह आपके गिट-एसवीएन के एसवीएन संस्करण को 1.8.11 (इससे पहले 1.9.3) से डाउनग्रेड करेगा, और अन्य समस्याएं पैदा कर सकता है।


Svn2git उपकरण का उपयोग करके गिट में विशाल svn भंडार माइग्रेट करते समय मुझे यह त्रुटि मिली। मैंने अपनी .git / config फ़ाइल में लाइनों के नीचे जोड़ा और यह काम करना शुरू कर दिया:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
    hideDotFiles = dotGitOnly
    packedGitLimit = 256m
    packedGitWindowSize = 256m
    longpaths = true
[http]
    postBuffer = 524288000
[pack]
  deltaCacheSize = 256m
  packSizeLimit = 256m
  windowMemory = 1024m

इन सेटिंग्स को गिट-कॉन्फ़िगर मैन पेज पर समझाया गया है।


मेरे मामले में, यह त्रुटि उबंटू 16.04 में हुई और संस्करण git svn --version कमांड चलाने के बाद git-svn संस्करण 2.17.0 (svn 1.9.3) है , मैं अपने मैकोज़ पर स्विच करता हूं जो संस्करण जानकारी git-svn संस्करण है 2.17.0 (svn 1.7.20) जब मैंने git svn --version कमांड चलाया, तो मैकोज़ में सफल क्लोन और फ़ेच और अन्य ऑपरेशन के बाद उबंटू पर वापस स्विच करें।





svn