Telling git to ignore symlinks

Этот вопрос появлялся в похожих формах здесь и здесь, но они, кажется, не соответствуют тому, что я ищу.

Я делаю проект в 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. Насколько я знаю, ничего подобного невозможно, или возможно?

50
задан Community 23 May 2017 в 00:30
поделиться