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

Обзор

У меня есть репозиторий 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 требует, чтобы он не был голым.


person 333kenshin    schedule 19.02.2017    source источник


Ответы (1)


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

BFG следует запускать на зеркальном/голом клоне.

person javabrett    schedule 03.08.2018