Этот вопрос появлялся в похожих формах здесь и здесь, но они, кажется, не соответствуют тому, что я ищу.
Я делаю проект в StaticMatic, генераторе статических сайтов на Ruby. По сути, это просто каталог src/ с шаблонами Haml, Sass и CoffeeScript. StaticMatic предоставляет сервер разработки, чтобы продолжать компилировать их в статический сайт, а также команду сборки, которая генерирует статический сайт в build/.
Моя модификация StaticMatic позволяет добавить src/_modules/foo/, который может содержать src/_modules/foo/bar.haml. При запуске сервера или создании сайта в src/bar.haml будет создаваться симлинк, указывающий на файл в foo/.
Пока все хорошо. (Конфликты обработаны, и т.д.)
Смысл отдельных каталогов в _modules/ в том, что они могут отслеживаться как git-подмодули и проверяться независимо другими командами. По сути, это позволяет нескольким командам работать над разными страницами (фактически JS-приложениями) на одном статическом сайте без дублирования основного макета и т.п.
Загвоздка в том, что git хочет воспринимать эти симлинки как файлы. Например, git status
показывает:
# On branch master
# Untracked files:
# (use "git add ..." to include in what will be commited)
#
# src/_modules/bar/foo.haml
# src/foo.haml
... когда на самом деле я хочу, чтобы он показывал src/_modules/bar/foo.haml
и игнорировал src/foo.haml
Одним из подходов было бы заставить мой код, генерирующий ссылки, добавлять их в .gitignore, но программная работа с .gitignore кажется мне чреватой ошибками. (Возможно, это беспокойство не обосновано?)
Моим идеальным вариантом было бы что-то вроде:
[filetype = link]
... в .gitignore. Насколько я знаю, ничего подобного невозможно, или возможно?