Git - игнорировать файл на основе его содержимого - PullRequest
0 голосов
/ 23 мая 2018

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

Насколько я могу судить, простого способа добавить их нет.файлы в .gitignore, потому что они не следуют какому-либо конкретному соглашению об именах.Добавление всех из них вручную также не вариант, потому что их сотни, и в будущем может появиться еще больше.Есть ли способ заставить git игнорировать все файлы, содержащие слово «(автоматически сгенерированное)» внутри файла?

1 Ответ

0 голосов
/ 23 мая 2018

В git нет способа создать правила игнорирования на основе контента.Вы можете сортировать его приблизительно.

Вы можете использовать ловушку перед фиксацией, чтобы проверить файлы, содержащие шаблон ((Autogenerated)), например, возможно

for file in $(git grep -l --cached '(Autogenerated)') ; do

и удалить их.из индекса, если найден

    git rm --cached $file
done

Конечно, было бы неплохо, если бы вы могли лучше оградить себя от ложных срабатываний.Даже частичный шаблон имени файла / пути, чтобы ограничить то, что ищет git grep, помог бы.

Если вы ожидаете (или обнаружите) ложных срабатываний как проблему, которую не можете избежать, возможно, вы захотите, чтобы ловушка распечатала рекомендованный список файлов для удаления, а затем отклонила фиксацию, вместо того, чтобы выполнять установку.файлы и продолжение.Но тогда вам понадобится способ «белого списка» файлов, которые он хочет зафиксировать, и хук должен будет это проверить.

Что касается хуков на стороне клиента (например, pre-commit)Вы должны индивидуально настроить их для каждого клона.Если кто-то забудет, он неожиданно будет проверять созданные файлы.

Кроме того, в ходе циклов сборки и фиксации пользователи будут накапливать неотслеживаемые (но не игнорируемые) файлы в своем рабочем дереве, что можетиногда они мешают тому, что они хотят сделать.

Было бы лучше, если бы вы могли изменить процесс сборки, чтобы генерировать эти файлы вне рабочего дерева (или, по крайней мере, по непротиворечивому пути, который вы могли бы игнорировать).

...