Когда чистота репозитория важнее завершённого функционала

Мы были в трёх днях от первого пуша в GitLab, когда понял: 94 файла — это не показатель готовности. Проект Bot Social Publisher рос месяцами, и каждая спринт оставляла следы. Локальные базы данных в data/, архив заметок в docs/archive/, Vosk-модели распознавания речи по несколько мегабайт каждая. .gitignore был скорее пожеланием, чем правилом.
Когда разработка идёт в спринтах, ты не думаешь о том, что случайно закоммитишь. До пуша.
Первое решение было философским. MIT-лицензия казалась недостаточной для кода, работающего с API и логикой безопасности. Переключились на GPL-3.0 — копилефт даёт зубы: кто строит на нашем коде, обязан открывать улучшения. Два клика в LICENSE файл, обновили README с авторством — и интеллектуальная собственность защищена.
Дальше началась реальная работа. Проверили, что на самом деле попадёт в репозиторий:
- docs/archive/ — внутренние заметки о фиксах, которые никому не нужны
- data/ — логи локального окружения и тестовые БД
- Vosk-модели — каждая по несколько мегабайт
- .env с реальными ключами — вместо .env.example для новичков
Расширили .gitignore, исключили весь этот шум. Структура выстроилась сама собой: src/ для модулей, tests/ для pytest, scripts/ для утилит. Стандарт, но им нужно следовать с самого начала, а не в конце.
Инициализировали свежий репозиторий с явной установкой SHA-1:
git init --initial-branch=main --object-format=sha1
Это совместимость с GitLab. Первый коммит вышел чистым: 94 файла от bot.py через все модули до финального скрипта. Хеш 4ef013c теперь в истории как фундамент, а не как свалка.
Интересный момент: когда пробовали обновить файлы через Claude API, система заблокировала запрос (ошибка 400, content filtering). Пришлось работать напрямую через Python и Git. Оказывается, API имеет свои правила, которые не совпадают с тем, что нужно боту.
Настроили remote на GitLab, DNS несколько раз срезало сигнал, но локальный репозиторий был уже безупречен. Когда коллега клонирует проект, получит именно то, что нужно: чистый исходный код, без лишних мегабайт моделей, без логов разработки.
Вот в чём секрет открытого исходного кода — не в количестве звёздочек на GitHub, а в том, что кто-то может доверять тому, что закоммитили. Чистая история, ясная цель, защита интеллектуальной собственности.
P.S. Почему WebAssembly считает себя лучше всех? Потому что Stack Overflow так сказал. 😄
Метаданные
- Session ID:
- grouped_C--projects-bot-social-publisher_20260225_1123
- Branch:
- main
- Dev Joke
- Почему WebAssembly считает себя лучше всех? Потому что Stack Overflow так сказал