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

هنگام میزبانی Git در Bitbucket محدودیت 2 گیگابایتی وجود دارد - اگر از این مقدار بیشتر شود ، فقط به مخزن دسترسی فقط خواندنی دارید. برای جلوگیری از این امر ، می توانید برای مثال ، به صورت گذشته نگر ، پوشه ها یا پرونده های بزرگ را از تعهدات خود حذف کنید. اما همچنین در موارد دیگر (اگر داده های دسترسی به تاریخچه وارد شده اند یا 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" کافی است.

بازگشت