У меня есть центральный репозиторий с подмножеством файлов, которые я хочу защитить от того, чтобы быть измененным (путем продвижения) от других пользователей. Если я добавляю эти файлы к .gitignore
, они не были бы клонированы.
Действительно ли возможно дать способность клонировать все файлы, но после клонирования добавляют некоторых из них к .gitignore
на стороне клиента?
Есть ли конкретная причина, по которой Git сам по себе должен быть ответом на это?
Как насчет того, чтобы сделать файлы доступными только для чтения и диктовать как policy, что эти файлы не должны передаваться?
Иногда технологическое решение не является самым простым способом.
Если кто-то отправляет изменения в эти файлы, эти изменения всегда могут быть отменены.
Сначала я думал о драйвере фильтра (см. Pro Book), который бы:
Но это не очень хорошее решение, поскольку эти скрипты относятся к stateless преобразованию содержимого файлов (см. этот ответ SO).
Вы можете попробовать применить механизм сохранения/восстановления в хуках (см. тот же ответ SO), но учтите, что он будет локальным для вашего репо (он защитит ваши файлы только в вашем репо, хуки не пихаются)
Вы также можете использовать:
git update-index --assume-unchanged file
См. "С git, временно исключить изменённый отслеживаемый файл из коммита в командной строке", опять же только локальная защита. Это защитит их от внешнего push в ваше репо ("импорт"), но если вы опубликуете их ("экспорт"), то они могут быть изменены на стороне клиента.