Обзор
У меня есть репозиторий Git, который служит архивом для ряда конфигураций, полученных из других источников:
- 200 дир
- 100 файлов в каталоге
- 10 КБ простого текста в файле
- ~1000 коммитов в день, обычно редактируется ‹ 10 строк
- 1 отделение
- 1 пользователь обрабатывает все коммиты
- все остальные репозитории просмотра доступны только для чтения
Прежде чем кто-либо предложит мне попробовать разбить это репо на более мелкие, это не вариант, потому что клиенты.
Репозиторий содержит данные примерно за 2 года, но нашим клиентам нужны только последние 90 дней.
Процесс
Я успешно привил рут к коммиту 90 дней назад, используя метод, описанный здесь:
- git checkout -b новый корень xyz_90_days_old_rev
- git сбросить abc_original_root_rev
- git добавить .
- git commit --amend -m 'очистить историю'
- мастер проверки git
- git rebase --onto newroot xyz_90_days_old_rev
Проблема заключается в последующей очистке git-filter-branch — это занимает > 24 часов, что является неприемлемым временем простоя для пользователей.
Вместо этого я хотел бы попробовать bfg-repo-cleaner, но мне это непонятно:
- поддерживает ли он этот вариант использования?
- это работает на не голом репо?
PS: теперь я знаю, что git checkout --orphan
был бы немного более элегантным, но это на самом деле не меняет проблему, заключающуюся в том, что BFG
требует, чтобы репозиторий был голым, а checkout
требует, чтобы он не был голым.