Bitbucket: پاک کردن پوشه از Git history

هنگام میزبانی Git در Bitbucket ، محدودیت سخت 2 گیگابایتی وجود دارد - اگر از این مقدار فراتر رفت، فقط به مخزن دسترسی فقط خواندنی دارید. برای جلوگیری از این امر، می‌توانید به‌عنوان مثال، پوشه‌ها یا فایل‌های بزرگ را به‌طور عطفی از commit‌های خود حذف کنید. اما در موارد دیگر نیز (اگر داده های دسترسی راه خود را به تاریخ پیدا کرده اند یا node_modules مجدداً مسلط شده اند) باید تاریخچه Git را برخلاف ماهیت آن به طور ماسبق دستکاری کنید.


Bitbucket مقاله مفصلی در این باره نوشته است. برای اجرای کل ماجرا روی یک پرونده ، ابتدا یک مخزن جدید ایجاد می کنیم:

تاریخ bitbucket تمیز

سپس ما مخزن را به یک پوشه خالی در ماشین محلی شبیه سازی می کنیم:

6ab7686fc508ce87c52b10bb5d01ee51

اکنون دو زیر پوشه با پرونده هایی با محتوای تصادفی ایجاد می کنیم:

6ab7686fc508ce87c52b10bb5d01ee51

ما اکنون به استاد فشار می آوریم:

6ab7686fc508ce87c52b10bb5d01ee51

اکنون تقریباً به حد سخت 2 گیگابایتی در Bitbucket رسیده ایم:

تاریخ bitbucket تمیز

ما همچنین می توانیم این را به صورت محلی بررسی کنیم (به "size-pack" مراجعه کنید):

6ab7686fc508ce87c52b10bb5d01ee51

تاریخ bitbucket تمیز

اکنون وظیفه این است که "foo" را از مخزن خارج کنید تا اندازه آن به نصف برسد. برای این کار ابتدا HEAD فعلی را ویرایش کرده و پوشه را در gitignore می نویسیم:

6ab7686fc508ce87c52b10bb5d01ee51

سرانجام ، ما با کمک BFG Repo Cleaner پوشه را حذف می کنیم (BFG به عنوان یک سیستم مورد نیاز JRE فعلی در سیستم است):

6ab7686fc508ce87c52b10bb5d01ee51

اکنون می توانیم نتیجه را به صورت محلی ببینیم:

6ab7686fc508ce87c52b10bb5d01ee51

تاریخ bitbucket تمیز

با این حال ، اندازه مخزن در Bitbucket تغییر نکرده است زیرا جمع کننده زباله هنوز از راه دور اجرا نشده است و bitbucket با هر فشار "git gc" را انجام نمی دهد:

تاریخ bitbucket تمیز

این مورد نیز توسط پشتیبانی تأیید می شود:

تاریخ bitbucket تمیز

بنابراین بهتر است برای اجرای دستی "git gc" در مخزن ، درخواستی را مستقیماً به support@bitbucket.org ارسال کنید. پس از مدت کوتاهی نیز این کار توسط تیم پشتیبانی انجام شد:

تاریخ bitbucket تمیز

اگر مخزن را "تازه" به رایانه دیگری منتقل کنید ، فقط 0.9 گیگابایت بر روی دیسک قرار می گیرد. اگر کسی نسخه 1.8 گیگابایتی را به صورت محلی در دسترس داشته باشد ، "git pull" و سپس "git gc" کافی است.

بازگشت