.gitattributes размывает и очищает фильтры как часть репозитория

У меня есть несколько файлов шаблонов в моем репозитории git, которые меняются с разной скоростью. Затем они используются для создания HTML-страниц. Если кто-то сообщает о проблеме, я хочу, чтобы они могли сказать мне, какая версия файла шаблона имеет проблему. В настоящее время я вручную вношу дату в файл, когда меняю его. Или, хорошо, я стараюсь. Я забываю большую часть времени.

По крайней мере, теоретически я должен иметь возможность использовать git smudge и clean filters для исправления файлов и автоматически вставлять дату последнего обновления. Это было бы здорово.

За исключением того, что я разрабатываю на одной машине, и когда я готов, я нажимаю/тяну на другую машину.

Как я могу получить смазывание и очистить фильтры на другой машине? Я не хочу добавлять нечетные скрипты в путь; это необходимо только для этого одного репозитория, поэтому я хочу сделать его полностью автономным. Все онлайн говорит "добавьте это определение фильтра в ваш файл ~/.gitconfig, затем добавьте эти сценарии в свой путь, а затем настройте файл репозитория .gitattributes". Я хочу, чтобы, если я перейду к новому компьютеру и клонирую репозиторий, вся чистая и smudge будет настроена автоматически.

Кто-нибудь это сделал?

Ответ 1

Как упоминалось в git clone, вы можете настроить шаблонную директорию, который будет объявлять эту конфигурацию.
Т.е. эта папка шаблона будет иметь минимальный .gitconfig с этими директивами smudge/clean:

filter.manage_date.smudge ${GIT_TEMPLATE_DIR}/smudge-script
filter.manage_date.clean ${GIT_TEMPLATE_DIR}/clean-script

Просто установите (экспортировать) переменную среды GIT_TEMPLATE_DIR, ссылающуюся на эту папку шаблонов.

Используя абсолютный путь, начинающийся с ${GIT_TEMPLATE_DIR}, вам не нужно добавлять эти сценарии в $PATH. И этот путь script может отличаться от машины к машине: каждый может иметь свой собственный путь ${GIT_TEMPLATE_DIR}.

Наконец, .gitattributes является частью вашего репо, поэтому ничего не делать.

С помощью этой настройки вы можете "перейти на новый компьютер и клонировать репозиторий, все чистые и smudge настроены автоматически".
(при условии, что новый компьютер имеет свой шаблон-dir, предварительно заполненный)

Ответ 2

Укажите шаблон, который делает то, что вы хотите при клонировании, или поставьте repo-setup script и введите sh repo-setup после клонирования, или поместите необходимые команды в абзац в README и скажите V}!sh или, тем не менее, ваш редактор передает команды через оболочку или использует git archive для распространения, а не git push, так как поддерживает произвольную замену ключевых слов. Превращение голого git clone в вектор с инъекцией кода кажется плохим ценой, чтобы избежать таких незначительных неудобств.