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

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

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

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

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

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


person Ricky Morse    schedule 30.09.2014    source источник
comment
Вы можете настроить каталог шаблонов. Таким образом, вы можете распространять свои настройки конфигурации. Но это было бы для всех репозиториев git. stackoverflow.com/questions/16658087/   -  person Klas Mellbourn    schedule 30.09.2014
comment
Другим хорошим примером использования является помещение блокнотов Jupyter (ранее IPython) в git, для чего требуются фильтры, чтобы избежать фиксации нагрузок. двоичных данных по мере изменения вывода. Если сценарии фильтров являются частью репозитория (или, по крайней мере, ссылки на них не требуют дополнительной подготовки локтей), значительно упрощает совместное использование и изменение этих блокнотов.   -  person Andrew Mao    schedule 15.06.2016


Ответы (2)


Как упоминалось в 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. И этот путь сценария может отличаться от машины к машине: у каждой может быть свой ${GIT_TEMPLATE_DIR} путь.

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

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

person VonC    schedule 15.06.2016

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

person jthill    schedule 15.06.2016