Чистый репозиторий — первое доверие к проекту

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