سؤال

سؤال بسيط، أحاول تشغيل git gc على آلة مع حصة. Pre-GC، أنا في حوالي 18 جيجابايت من الاستخدام، كل ذلك تقريبا مستودع جيت المستنسخ. حد القرص الخاص بي هو 25 جيجابايت. أثناء ال git gc العملية، يتم كتابة ملفات مؤقتة كافية على القرص لضرب الحد الخاص بي وبالتالي تسبب git gc العملية للفشل.

يمكنني حذف .git/objects/pack/tmp_pack_* بعد العملية الفاشلة والعودة إلى 18 جيجابايت من الاستخدام، لكنني أحب حقا إكمالها بالفعل git gc واستعادة الأداء قليلا.

هل هناك خيار خيالي (أو سلسلة من أوامر GIT الأخرى) التي يمكنني استخدامها لا تنطوي على الكتابة الأولى> 7GB من الملفات المؤقتة إلى القرص؟

هل كانت مفيدة؟

المحلول

أي جزء من gc مهم بالنسبة لك؟ يمكنك محاولة تشغيل git-prune و git-repack أجزاء بشكل منفصل. مع git-prune, تأكد وتحديد تاريخ قطع مع --expire اختيار. إذا كان هناك الكثير من الأشياء الفضفاضة في ريبو الخاص بك، فإن الحصول على الخروج من الطريق سيكون مفيدا أولا. *

مع git-repack, ، يمكنك الفوضى مع إعدادات العمق والنوافذ للحصول على شيء صغير بما يكفي لتشغيله داخل المساحة لديك.

* لا أدعي فهم جميع القضايا المعنية بالكامل تماما، لكنني ألا أتلاحظ أن القطر يأتي بعد إعادة صياغة رمز GIT-GC.

نصائح أخرى

يبدو أن أفضل حل هو أن يسألها عن حصة أكبر، على الرغم من أنني ما زلت مهتما بسماع الحلول. اليوم كانوا يشعرون سخية، ولكن غدا ... :)

git prune هو اقتراح ممتاز، مكالمة جيدة JeFromi.

شيء آخر يمكنك القيام به هو ضغط ملفاتك الأخرى؛ git gc; ؛ إلغاء ضغط.

7z يحصل على ضغط مذهل، ولكن لن يحفظ شاددا شاددا ومالك / مجموعة UNIX، IIRC. إذا كان لديك حصة، فربما تكون الملفات مملوكة من قبل حسابك، لذلك لا تقلق في النتيجة الأولى. لكن أكثر أمانا tar c --lzma إذا كان لديك، أو فقط tar czf أو cjf. وبعد إذا كان لديك الكثير من الملفات الصغيرة، فقد يكون التغذية الخارجي (؟) إلى حد كبير الحجم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top