Как использовать 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 должен работать на зеркале / голом клоне.