BFG Repo Cleaner - удаленные файлы все еще находятся в изменениях коммитов - PullRequest
1 голос
/ 27 марта 2019

Мне нужно удалить файлы конфигурации из моего веб-приложения и из истории мерзавцев.Я сделал это с помощью инструмента для очистки репо bfg.Я прошел шаги, описанные в документации:

  1. git clone --mirror url.git
  2. java -jar bfg-1.13.0.jar --delete-files "{App.config,Web.config}" repo-name.git
  3. git reflog expire --expire=now --all && git gc --prune=now --aggressive

Iотправил результат в новый репозиторий в gitlab.Файлы ушли из истории.Я могу извлечь старый коммит, и файлы не исчезнут.

НО, когда я просматриваю детали коммита, включающего файл Web.config, в разделе изменений показан diff файла Web.config.Таким образом, все еще можно увидеть текст файлов конфигурации.

Я что-то упустил при использовании инструмента bfg?Или это то, что инструмент не изменит?Как я могу удалить файлы из сводки изменений фиксации?

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

НО, когда я просматриваю детали коммита с файлом Web.config, В разделе изменений показан diff файла Web.config. Так еще можно посмотреть текст файлов конфигурации.

К сожалению, есть несколько нюансов для интерпретации того, как переписывалась история, и приведенное выше описание является расплывчатым - где вы это видите? Вы выполняете команду diff для своего локального репо или просматриваете URL в GitLab? - предоставление скриншота, URL или примера команды Git, которую вы вызываете, было бы полезно для диагностики здесь.

Я предполагаю, что вы смотрите на URL-адрес, подобный этому, где идентификатор фиксации (например, e081c0cba2dd5b1a19d22b44918022f72035434c) является частью URL-адреса:

https://gitlab.com/gitlab-org/gitlab-ce/commit/e081c0cba2dd5b1a19d22b44918022f72035434c

Здесь важно понять, что идентификаторы коммитов - это хэш содержимого файлового дерева этого коммита, а также вся история коммитов, ведущая к этому коммиту. Поэтому, если вы измените историю коммита, вы получите новый идентификатор коммита. Если вы посмотрите на старый идентификатор фиксации - вы увидите старые данные фиксации и старое дерево файлов фиксации.

Когда это уйдет?

В конечном итоге GitLab будет запускать git gc в вашем хранилище, и этот URL-адрес с указанным идентификатором фиксации больше не будет доступен. Вы также можете попросить службу поддержки GitLab запустить git gc:

0 голосов
/ 27 марта 2019

Разве это не только то, что файлы *.config присутствуют только в последнем коммите?

Этот коммит остался нетронутым BFG, так что, возможно, это то, что вы видите ....

От BFG doc :

Ваши текущие файлы являются священными ...

BFG обращается с вами как с реформированным алкоголиком: вы 'В прошлом мы допустили некоторые ошибки, но теперь вы исправили свои действия.Таким образом, BFG предполагает, что ваш последний коммит хорош, и в нем нет грязных файлов, которые вы хотите удалить из своей истории.Это предположение BFG защищает вашу работу и дает вам душевное спокойствие, зная, что BFG только меняет вашу историю репо, не вмешиваясь в текущие файлы вашего проекта.

...