🛠 Git Submodules: как не плодить копипасту в ML-проектах
Представьте: у вас три команды (Fraud Detection, Credit Scoring и Trading). Всем им нужна одна и та же функция calculate_risk_score().
Обычно это превращается в кошмар:
1. Команды копируют код себе.
2. Одна команда находит баг и исправляет его.
3. Остальные два проекта остаются с багами, потому что даже не знают об исправлении.
Итог: «расползание» версий (version drift) и ошибки в продакшене.
✅ Решение: Git Submodules
Это способ вставить одну Git-репозиторий внутрь другого как подпапку. Вы не копируете код, а ссылаетесь на конкретный коммит в общем репозитории библиотек.
🚀 Шпаргалка по командам
1. Добавить общую библиотеку в проект:
git submodule add https://github.com/user/ml-utils.git ml-utils
Это создаст папку ml-utils/ и файл .gitmodules, где прописана ссылка на репозиторий.
2. Клонировать проект со всеми зависимостями:
Если вы просто сделаете git clone, папка с сабмодулем будет пустой. Нужно так:
git clone --recurse-submodules https://github.com/user/main-project.git
3. Обновить общие утилиты до последней версии:
git submodule update --remote ml-utils
git add ml-utils
git commit -m "Update shared ML utils"
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста
#буст
Представьте: у вас три команды (Fraud Detection, Credit Scoring и Trading). Всем им нужна одна и та же функция calculate_risk_score().
Обычно это превращается в кошмар:
1. Команды копируют код себе.
2. Одна команда находит баг и исправляет его.
3. Остальные два проекта остаются с багами, потому что даже не знают об исправлении.
Итог: «расползание» версий (version drift) и ошибки в продакшене.
✅ Решение: Git Submodules
Это способ вставить одну Git-репозиторий внутрь другого как подпапку. Вы не копируете код, а ссылаетесь на конкретный коммит в общем репозитории библиотек.
🚀 Шпаргалка по командам
1. Добавить общую библиотеку в проект:
git submodule add https://github.com/user/ml-utils.git ml-utils
Это создаст папку ml-utils/ и файл .gitmodules, где прописана ссылка на репозиторий.
2. Клонировать проект со всеми зависимостями:
Если вы просто сделаете git clone, папка с сабмодулем будет пустой. Нужно так:
git clone --recurse-submodules https://github.com/user/main-project.git
3. Обновить общие утилиты до последней версии:
git submodule update --remote ml-utils
git add ml-utils
git commit -m "Update shared ML utils"
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека дата-сайентиста
#буст