Переопределение фильтра с помощью smudge и cat в конфигурации git локально

#git #jupyter #cat

#git #jupyter #cat

Вопрос:

У меня есть глобальный фильтр для очистки выходных данных из моих записных книжек Jupyter. Для этого я использую следующие --global настройки в git:
.gitconfig:

 filter.clean_ipynb.clean=/home/username/.scripts/ipynb_drop_output.py
filter.clean_ipynb.smudge=cat
  

.gitattributes:

 *.ipynb filter=clean_ipynb
  

Теперь у меня есть один репозиторий, в котором я не хочу использовать этот фильтр, каков наилучший способ переопределить это в локальном репозитории?

Ответ №1:

В файле .gitattributes or $GIT_DIR/info/attributes для одного репозитория, в котором вы хотите переопределить этот filter параметр,1 используйте:

 *.ipynb !filter
  

который возвращает значение filter параметра на «неопределенный».

Это работает для всех атрибутов, а не только filter . Поскольку filter он работает только тогда, когда для него установлено определенное значение, -filter он также будет работать; и поскольку filter принимает только одно значение, filter=dummy он также будет работать, если у вас нет filter.dummy.* настроек. Но !filter это правильный путь.


1 Используйте .gitattributes , если вы хотите, чтобы новые клоны копировали этот параметр. Используйте $GIT_DIR/info/attributes , если вы хотите, чтобы новые клоны не копировали этот параметр. Это тоже общий шаблон.