.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
в вектор с инъекцией кода кажется плохим ценой, чтобы избежать таких незначительных неудобств.