Как использовать bfg-repo-cleaner после Git rebase на не-голом репо?

обзор

У меня есть репозиторий Git, который служит архивом для ряда конфигов, полученных из других источников:

  • 200 dirs
  • 100 файлов в директории
  • 10K простого текста на файл
  • ~1000 коммитов в день, обычно редактируется < 10 строк
  • 1 филиал
  • 1 пользователь обрабатывает все коммиты
  • все остальные представления репо только для чтения

Прежде чем кто-либо предложит мне попробовать разбить этот репо на более мелкие, это не вариант, потому что клиенты.

Репо содержит данные за ~2 года, но нашим клиентам нужны только последние 90 дней.

Процесс

Я успешно привел рут на коммит 90 дней назад, используя метод, описанный здесь:

  • git checkout -b newroot xyz_90_days_old_rev
  • git reset abc_original_root_rev
  • мерзавец добавить.
  • git commit --amend -m 'Очистить историю'
  • мастер проверки
  • git rebase --onto newroot xyz_90_days_old_rev

Проблема заключается в использовании очистки git-filter-branch впоследствии - это занимает> 24 часа, что недопустимо для пользователей.

Я хотел бы попробовать bfg-repo-cleaner вместо этого, но мне не ясно:

  • это поддерживает этот вариант использования?
  • это работает на не обнаженном репо?

PS: теперь я знаю, что git checkout --orphan было бы немного более элегантно, но это на самом деле не меняет проблему BFG требует репо checkout требует, чтобы он не был голым

1 ответ

Не надо переписывать репо. Если кому-то нужны только последние 90 дней, запустите сценарий, чтобы оценить необходимую глубину и попросить его создать мелкий клон с --depth <depth>,

BFG должен работать на зеркале / голом клоне.

Другие вопросы по тегам