Подтвердить что ты не робот

Как уменьшить размер репо для git на Bitbucket?

Резюме моей проблемы: Один из моих личных репозиториев на Bitbucket неожиданно увеличился более чем в два раза, после того как я добавил несколько сотен байт в два существующих файла. Репо теперь превышает 2 ГБ, что заставило Bitbucket перевести его в режим только для чтения. Поскольку он находится в режиме только для чтения, я не могу выдвигать изменения, которые уменьшали бы размер репо. (Catch 22.)

Детали: Моя компания недавно начала размещать репозитории git на Bitbucket. Один из хранилищ, которыми я занимаюсь, имел размер около 973 МБ, что было неудобно близко к 1GB мягкому пределу. Чтобы уменьшить размер репо, я выполнил инструкции в документации по документации Bitbucket Разделить репозиторий на два и переместил около 450 МБ документации и интерактивных файлов справки в свое личное репо. Затем я выполнил инструкции в документах документации Bitbucket Уменьшить размер репозитория и Поддержание git, в частности:

git count-objects -vH показал мне размерную упаковку около 973 МБ.

Я запустил git filter-branch --index-filter 'git rm --cached --ignore-unmatch doc' HEAD, чтобы удалить каталог doc (это содержимое, которое я переместил в новое репо).

Я выполнил следующие команды для истечения ссылки и сокращения:

git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
git reflog expire --expire=now --all
git gc --prune=now

git count-objects -vH затем показал мне размер-пакет 881.1 MiB и du -sh .git/objects вернулся 882M. Я был разочарован тем, что перемещение более 450 Мбайт уменьшило размер репо менее чем на 90 МБ, но тем не менее изменило изменения в Bitbucket:

git push --all --force
git push --tags --force

Страница настроек для копии репозитория Bitbucket продолжала показывать размер 973 МБ. Я вышел из системы, обновил браузер, зашел в систему, но это не помогло - размер репо остался на уровне 973 МБ.

Сегодня утром (через три дня после описанных выше изменений) я сделал несколько незначительных дополнений к двум существующим файлам, которые увеличили размеры файлов в сумме менее 1 КБ, добавили и отправили их в мое местное репо, а затем нажали изменение на битбакет. Через несколько минут я взглянул на страницу Bitbucket для репо и увидел красный предупреждающий баннер, информирующий меня: "Это репо превышает 2 ГБ и находится в режиме только для чтения". На странице настроек теперь указано, что репо имеет размер 2,3 ГБ.

Нажатие нескольких сотен байт, добавленных к двум файлам, было, безусловно, единственным видом активности на удаленном репо за последние три дня, согласно Bitbucket. Этот толчок, возможно, не был причиной репо более чем удвоения по размеру, но эти два события были тесно коррелированы во времени.

git reflog show ничего не возвращает.

Клонирование новой копии в альтернативный каталог, а затем запуск git count-objects дает мне размер-размер 881.29 MiB.

Локальный репозиторий находится в системе CentOS 6.5. git версия 1.8.5.3.

Вопросы

  • Почему перемещение 450 МБ файлов из репо только уменьшило размер моего локального репо на 90 МБ?
  • Почему даже это скромное сокращение не попало в отдаленное репо на Bitbucket?
  • Как на Земле удаленный размер репо скакал с 973 МБ до 2,3 ГБ?
  • Как это исправить? Я не могу нажать на удаленное репо даже с флагом -force. Любое нажатие вызывает сообщение об ошибке "conq: репозиторий находится в режиме только для чтения (ограничение на 2 ГБ). fatal: Не удалось прочитать из удаленного репозитория.
4b9b3361

Ответ 1

После получения технической поддержки Bitbucket я могу ответить на некоторые из моих собственных вопросов:

  • Почему перемещение 450 Мбайт файлов из репо только уменьшило размер моего локального репо на 90 МБ? Что-то в истории пропустило. я не то, что точно, но команда filter-branch пропустила что-то. Я смог успешно уменьшить размер репо на 450 МБ, выполнив утилита BFG Repo-Cleaner.
  • Почему даже это скромное сокращение не попало в отдаленное репо? на Битбакет? Это было сделано, но поддержка Bitbucket должна запускаться git gc on их стороны. Можно связаться с запросом Bitbucket и попросить их запустить git gc на репо.
  • Как на Земле изменился размер удаленного репо с 973 МБ до 2,3 ГБ? Неизвестный. Техническая поддержка Bitbucket не получила ответа на этот вопрос. один либо.
  • Как это исправить? Обратитесь в службу поддержки Bitbucket. Они могут репозитория в режим чтения-записи, чтобы вы могли репозиторий, и они могут запускать git gc на своем конце.

Ответ 2

Я обнаружил, что самый простой способ уменьшить размер репо Bitbucket, если вы превысили лимит 2 ГБ, составляет

  • Создать ветку на Bitbucket
  • Удалить эту ветку на Bitbucket

Это должно заставить Bitbucket запускать git gc в репо.