سؤال

كم مرة يجب عليك استخدام git-gc?

على دليل الصفحة يقول ببساطة:

يتم تشجيع المستخدمين على تشغيل هذه المهمة على أساس منتظم داخل كل مستودع على مساحة القرص الاستخدام و الأداء التشغيلي الجيد.

هناك بعض الأوامر للحصول على بعض التهم وجوه لمعرفة ما إذا كان الوقت قد حان gc?

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

المحلول

فإنه يعتمد في الغالب على كم يتم استخدام المخزون.مع مستخدم واحد التدقيق في مرة واحدة في اليوم و فرع/دمج/etc العملية مرة واحدة في الأسبوع ربما لا تحتاج إلى تشغيله أكثر من مرة في السنة.

مع عشرات من المطورين العمل على عدة مشاريع في كل فحص في 2-3 مرات في اليوم, قد ترغب في تشغيله ليلا.

فإنه لن يضر تشغيله بشكل متكرر أكثر من اللازم ، على الرغم من.

ما أود فعله هو تشغيله الآن ، ثم أسبوع من الآن تأخذ قياس استخدام القرص, تشغيله مرة أخرى ، وقياس استخدام القرص مرة أخرى.إذا فإنه يسقط 5% في الحجم, ثم تشغيله مرة واحدة في الأسبوع.إذا فإنه يسقط أكثر, ثم تشغيله بشكل متكرر أكثر.إذا فإنه يسقط أقل, ثم تشغيله في كثير من الأحيان أقل.

نصائح أخرى

علما بأن الجانب السلبي من القمامة جمع المستودع الخاص بك هو هذا القمامة يحصل جمعها.كما نعلم جميعا وكما مستخدمي الكمبيوتر, الملفات نعتبر القمامة الآن قد تتحول إلى أن تكون قيمة جدا ثلاثة أيام في المستقبل.حقيقة أن بوابة يبقي معظم الحطام قد أنقذني عدة مرات – عن طريق تصفح جميع التعلق يرتكب لقد تعافى الكثير من العمل الذي كان بطريق الخطأ المعلبة.

حتى لا يكون الكثير من مذعورة في الخاص بك الحيوانات المستنسخة.هناك حاجة لذلك.

OTOH قيمة البيانات استرداد أمر مشكوك فيه على اتفاقيات إعادة الشراء تستخدم أساسا أجهزة التحكم عن بعد, على سبيل المثال.المكان في كل المشروعات الإنمائية دفع و/أو سحبها من.هناك قد يكون من المعقول أن تنطلق GC المدى تغليفها في كثير من الأحيان.

الإصدارات الأخيرة من بوابة تشغيل gc تلقائيا عند الحاجة, لذلك لا يجب أن تفعل أي شيء.راجع خيارات القسم رجل git-gc(1):"بعض بوابة أوامر تشغيل بوابة gc-auto بعد إجراء العمليات التي يمكن أن تخلق العديد من فضفاضة الكائنات."

إذا كنت تستخدم بوابة واجهة المستخدم الرسومية, ، يقول لك عندما يجب أن تقلق:

This repository currently has approximately 1500 loose objects.

الأمر التالي سوف تجلب عدد مماثل:

$ git count-objects

ما عدا ، من المصدر, بوابة واجهة المستخدم الرسومية سوف تفعل الرياضيات في حد ذاته ، في الواقع عد شيئا في .git/objects المجلد وربما يجلب تقريبي (أنا لا أعرف tcl صحيح قرأت هذا!).

في أي حال ، يبدو لإعطاء تحذير على أساس عدد التعسفي حول 300 فضفاضة الكائنات.

انخفاض في وظيفة كرون الذي يدير كل ليلة (بعد الظهر؟) عندما كنت نائما.

يمكنني استخدام بوابة gc بعد أن أفعل كبير الخروج, و لديك الكثير من كائن جديد.فإنه يمكن توفير مساحة.E. g.إذا كنت الخروج الكبير إس المشروع باستخدام git-svn ، والقيام بوابة gc عادة إنقاذ الكثير من الفضاء

يمكنك أن تفعل ذلك دون أي انقطاع ، مع الجديد (بوابة 2.0 Q2 2014) إعداد gc.autodetach.

انظر ارتكاب 4c4ac4d و ارتكاب 9f673f9 (Nguyễn والمونسنيور Ngọc دوي, الملقب pclouds):

gc --auto يستغرق وقتا يمكن منع المستخدم مؤقتا (ولكن ليس أي أقل مزعج).
جعلها تعمل في الخلفية على الأنظمة التي تدعم ذلك.
الشيء الوحيد الذي خسر مع تشغيل في الخلفية المطبوعات.ولكن gc output ليست مثيرة للاهتمام حقا.
يمكنك الاحتفاظ بها في المقدمة عن طريق تغيير gc.autodetach.


منذ هذا الإصدار 2.0, كان هناك خلل على الرغم من:بوابة 2.7 (Q4 2015) سوف نتأكد من أن لا تفقد رسالة الخطأ.
انظر ارتكاب 329e6e8 (19 سبتمبر 2015) من قبل Nguyễn والمونسنيور Ngọc دوي (pclouds).
(اندمجت Junio ج Hamano -- gitster -- في ارتكاب 076c827, 15 سبتمبر 2015)

gc:حفظ سجل من daemonized gc --auto وطباعته في المرة القادمة

في حين ارتكاب 9f673f9 (gc:config الخيار لتشغيل --auto في الخلفية - 2014-02-08) يساعد في تقليل بعض الشكاوى حول 'gc --auto'القص المحطة ، فإنه يخلق مجموعة أخرى من المشاكل.

أحدث في هذه المجموعة ، نتيجة daemonizing, stderr إغلاق جميع التحذيرات المفقودة.هذا التحذير في نهاية cmd_gc() أهمية خاصة لأنه يخبر المستخدم كيفية تجنب "gc --auto"تشغيل مرارا وتكرارا.
لأن stderr مغلقة المستخدم لا يعرف ، وبطبيعة الحال أنها يشكو 'gc --auto'إضاعة وحدة المعالجة المركزية.

Daemonized gc الآن يحفظ stderr إلى $GIT_DIR/gc.log.
التالية gc --auto لن تشغيل ، gc.log طبعت حتى يزيل المستخدم gc.log
.

هذا الاقتباس مأخوذ من ؛ التحكم في الإصدار مع بوابة

بوابة يدير جمع القمامة تلقائيا:

• إذا كان هناك الكثير من فضفاضة الكائنات في المخزون

• عندما دفع إلى مستودع بعيد يحدث

• بعد بعض الأوامر التي قد يعرض العديد من الكائنات فضفاضة

• عند بعض الأوامر مثل بوابة reflog تنتهي صراحة تطلب ذلك

و أخيرا جمع القمامة يحدث عند طلب ذلك صراحة ، باستخدام بوابة gc الأمر.ولكن عندما ينبغي أن يكون ؟ لا يوجد الصلبة الإجابة على هذا السؤال ، ولكن هناك بعض النصائح الجيدة وأفضل الممارسة.

يجب عليك أن تنظر تشغيل بوابة gc يدويا في بعض الحالات:

• إذا كنت قد أكملت للتو بوابة تصفية فرع .يذكر أن تصفية فرع كتابة العديد من يرتكب ، ويدخل جديدة ، ويترك القديمة على المرجع الذي ينبغي إزالتها عندما كنت راضيا مع النتائج.كل هؤلاء القتلى الكائنات (التي لم تعد المشار إليها منذ كنت مجرد إزالة أحد المرجع لافتا لهم) وينبغي إزالتها عن طريق جمع القمامة.

• بعد بعض الأوامر التي قد يعرض العديد من فضفاضة الكائنات.هذا قد تكون كبيرة ريبس الجهد ، على سبيل المثال.

و على الجانب الآخر ، متى يجب أن نكون حذرين من جمع القمامة ؟

• إذا كان هناك المعزول الحكام التي قد ترغب في استرداد

• في سياق بوابة rerere وأنت لا تحتاج إلى حفظ القرارات إلى الأبد

• في سياق فقط والعلامات الفروع كافية للتسبب بوابة الإبقاء على الالتزام بشكل دائم

• في سياق FETCH_HEAD الاسترجاع (رابط مباشر الاسترجاع عبر بوابة الجلب ) لأنهم يخضعون على الفور جمع القمامة

• في سياق فقط والعلامات الفروع كافية للتسبب بوابة الإبقاء على الالتزام بشكل دائم

• في سياق FETCH_HEAD الاسترجاع (رابط مباشر الاسترجاع عبر بوابة الجلب ) لأنهم يخضعون على الفور جمع القمامة

أنا استخدامها عندما كنت تفعل كبيرة ارتكاب فوق كل شيء عندما أزيل أكثر الملفات من مستودع..بعد يرتكب أسرع

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