2013-02-28 3 views
12

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

पर कोडबेस को दबाते समय मैं एक समस्या में भाग लेता हूं। मैं निम्न त्रुटि हर समय मिलता है:

$ git push <remote_repo_name> master 
Enter passphrase for key '/c/ssh/.ssh/id_rsa': 
Counting objects: 146106, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (35519/35519), done. 
fatal: pack exceeds maximum allowed size00 GiB | 154 KiB/s 
fatal: sha1 file '<stdout>' write error: Invalid arguments 
error: failed to push some refs to '[email protected]:<repo>.git 

मैं अपने स्थानीय gitconfig

git config pack.packSizeLimit 1g 
git config pack.windowMemory 1g 

में निम्न सेटिंग को बदल ... और Git जीसी (जो मैं तो प्रत्येक पैकेट कि पैक पुनर्गठित देखें भाग गया 1 जीबी के पैकसाइज के भीतर रहे)। यह काम नहीं करता है और मुझे उपरोक्त त्रुटि मिलती है।

मैं भी प्रत्येक पैकेट के आकार को कम करने की कोशिश की ....

git config pack.packSizeLimit 500m 
git config pack.windowMemory 500m 

... और भाग गया Git जीसी (जो मैं पैक पुनर्गठित देखें तो यह है कि प्रत्येक पैकेट 500MB की packsize भीतर रुके)। यह या तो काम नहीं करता था और मैं एक ही त्रुटि में भाग गया।

मुझे यकीन नहीं है कि गिथब की डिफ़ॉल्ट पैक सीमा सीमाएं हैं (यदि कोई है)। यदि यह मायने रखता है तो खाता एक माइक्रो खाता है।

+0

क्या आप यूनिक्स/लिनक्स मशीन पर हैं? यदि आप हैं, तो अपने कामकाजी भंडार में 'du -sk .' टाइप करें और इसे अपने प्रश्न में जोड़ें। [गिटहब की सीमा नहीं है] (https://help.github.com/articles/what-is-my-disk-quota), लेकिन मैं उत्सुक हूं कि आपकी बाइनरी कितनी बड़ी है। – Makoto

उत्तर

15

पैकसाइज सीमा गिट प्रोटोकॉल कमांड (आपके पुश) को प्रभावित नहीं करती है।

git-config से तहत pack.packSizeLimit:

एक पैकेट का अधिकतम आकार। यह सेटिंग केवल प्रतिलिपि करते समय फ़ाइल में पैकिंग को प्रभावित करती है, यानी git: // प्रोटोकॉल अप्रभावित है।

जब पुश गिट निष्पादित करते समय हमेशा एक पैक बनाते हैं, आकार के बावजूद!

इस प्रयोग के दो (या अधिक) ठीक करने के लिए धक्का:

git push remoteB <some previous commit on master>:master 
... 
git push remoteB <some previous commit after the last one>:master 
git push remoteB master 

ये धक्का सभी छोटे पैक होगा और सफल होगा।

+5

ग्रेट उत्तर - लेकिन मैं http://stackoverflow.com/q/28417845/1304104 पर वर्णित मुद्दे में भाग गया। असल में जब रिमोट साफ़ था और उसके पास कोई शाखा सेटअप नहीं था, तो मुझे और अधिक विशिष्ट होना था, और पहला पुश निम्न रूप का था: 'गिट पुश रिमोट बी <मास्टर पर कुछ पिछला प्रतिबद्ध>> refs/head/master ' – mbargiel

+0

हर 500 कामों को धक्का देता है (रिवर्स स्किप के साथ मिश्रण नहीं करता है): ' max = $ (गिट लॉग --ऑनलाइन | wc -l); $मैं $ (seq $ max -500 1) में; echo $ i करते हैं; जी = $ (गिट लॉग - रिवर्स --ऑनलाइन - $ i -n1 | perl -alne'print $ F [0] '); गिट पुश जी $ जी: रेफरी/हेड/मास्टर; done' – rurban