2015-03-30 3 views
0

У нас есть репо на GitLab, которое содержит некоторые большие двоичные файлы, которые мы хотели бы удалить. Я знаю такие инструменты, как BFG Repo-Cleaner, который удалит файл из репозитория Git.Постоянное удаление двоичных файлов из репозитория GitLab

Мы часто ссылаемся на конкретные идентификаторы фиксации в GitLab. Будет ли работать BFG Repo-Cleaner?

Если да, есть ли лучший способ очистить репо, чтобы не испортить их?

ответ

1

Мы часто ссылаемся на конкретные идентификаторы фиксации в GitLab.

Хотя мерзавец история не может быть изменена без изменения всех последующих совершающих идентификаторов, то BFG делает несколько вещей, которые помогут с изменением:

  1. Как это чисткой репо, в BFG такжеupdates any object ids it finds in commit messages с их новые идентификаторы. Если вы удаляете private data, это straight substitution, если вы просто удаляете большие файлы (т. Е. Сами идентификаторы фиксации не содержат), текст в вашем сообщении фиксации становится "$newId [formerly $oldId]", а кроме того, нижний колонтитул Former-commit-id: добавляется к нижней части all modified commit messages.
  2. BFG также создает файл object-id-map.old-new.txt под каталогом repo-name.bfg-report каждый раз, когда он запускается. В принципе, я считаю, что этот файл можно использовать в репозитории GitLab, чтобы можно было также исправлять другие ссылки на идентификаторы commit.

Полное раскрытие информации: Я являюсь автором BFG Repo-Cleaner.

1

Мы часто ссылаемся на конкретные идентификаторы фиксации в GitLab. Будет ли работать BFG Repo-Cleaner?

Идентификатор git commit построен из хэша содержимого фиксации и идентификатора предыдущей фиксации. Это означает, что любая операция, которая изменяет вашу историю, приведет к (a) новому идентификатору фиксации для любых изменений, которые вы вносите в силу, и (b) новый идентификатор фиксации для каждый совершивший потомок.

Невозможно изменить историю вашего репозитория без генерации новой последовательности идентификаторов фиксации.

Смежные вопросы