ТЛ; др
Технически ваше требование противоречиво.
На более философском уровне это (кажется) столкновение между открытым исходным кодом и корпоративной философией.
Во всяком случае ... я предложу некоторые вещи, которые приходят мне в голову
технически
git
либо отслеживает, либо игнорирует файл.
- Отслеживание легче (есть). Просто ничего не делайте ... кроме использования мерзавца! И любой файл отслеживается.
- Игнорировать это почти так же просто - просто убедитесь, что оно соответствует чему-то в вашем файле gitignore.
- Но вы не можете сделать оба!
- Основная оговорка: перемещение файла из отслеживаемого в игнорируемое несколько нетривиально - простое добавление подходящего шаблона в gitignore не обрезает его после отслеживания. Подходящий
Лучшая практика
Не запускайте git-проект без создания правильного
- gitignore
Также связано
- gitattributes
Итак, первое (и несколько нереальное)
Предложение 1
- Начать новый проект git
- Сделайте правильные файлы gitignore и gitattribute
- Отладка при необходимости с помощью git-check-ignore
- Скопируйте, добавьте, зафиксируйте ваши обычные файлы
- Скопируйте, добавьте, состояние файлов, которые не будут отслеживаться. Статус должен быть чистым
Но, как я сказал, это, кажется, не совсем то, что вы хотите, потому что вам нужны какие-то общие, но не отслеживаемые файлы.
Так что вам нужно
Отследить отслеженные файлы
Вы на самом деле хотите мерзавца
Пост-клон крюк
Это попытка здесь
Но это плохая идея, как объясняется здесь
Что подводит меня к
Философская разница
- Корпоративный работодатель обоснованно хочет контролировать, что / как функционируют его сотрудники-программисты. Что влечет за собой различные виды управления машиной
- Случайное программное обеспечение с открытым исходным кодом, расположенное на github, которое берет на себя управление машиной другого случайного человека, является неэтичным и незаконным.
Поэтому, если бы вы были большим игроком с Fortune-500, естественным вариантом было бы раскошелиться на самого git и добавить функцию пост-клонового хука в ваш форк.
Более разумный и только немного более неудобный
Решение 2
- Напишите свой собственный пост-клон, но вручную вызываемый скрипт
- ... что делает требование копии, если отсутствует, оставить в покое, если присутствует
- И добавьте (ручной) шаг в вашу команду: (1) clone (2) скрипт вызова
- И не забывайте, Gitignore!
Если это решение имеет смысл, вы можете предпочесть
Решение 3
Инвертировать скрипт-внутри-мерзавца в сценарий-мерзавца
то есть попросите вашу команду только скачать / скопировать и запустить скрипт, который
- Запускает
git clone
- Проверяет наличие / пригодность этих других файлов
- Создает / загружает их при необходимости (возможно, из источника, независимого от вашего основного репо)