feature-api
🌱 Farm Automation System
Учебный проект для практики работы с Git: слияние конфликтов и интерактивный ребейз.
Описание проекта
Простая система автоматизации гидропонной фермы на Python с использованием ООП:
- BioCulture — класс биокультуры со стадиями роста ("Зеленый" → "Красный")
- HydroponicModule — модуль, управляющий несколькими культурами
- FarmAgent — агент-оператор для управления модулем и сбора урожая
Структура проекта
Igor-kr/
├── main.py # Точка входа
├── farm_core/
│ ├── __init__.py
│ ├── module.py # Классы BioCulture и HydroponicModule
│ └── agent.py # Класс FarmAgent
└── README.md
Ветки
- main — базовая заготовка со "сломанным" методом
grow()(вызываетNotImplementedError) - feature-api — рабочая реализация метода
grow()и новая функцияharvest()
🎯 Практические задания
Задание 1: Разрешение конфликтов при слиянии
Цель: Научиться разрешать merge conflicts.
Шаги:
- Убедитесь, что вы на ветке
main - Попытайтесь слить ветку
feature-api - Ожидаемый результат: Конфликт в файле
farm_core/module.pyв методеgrow():- В
main:raise NotImplementedError("Рост не реализован в main!") - В
feature-api:self._stage = "Красный"
- В
- Откройте файл
farm_core/module.pyи разрешите конфликт - Завершите слияние
Задание 2: Интерактивный ребейз (очистка истории)
Цель: Научиться объединять "мусорные" коммиты в один чистый коммит.
Шаги:
- Переключитесь на ветку
feature-api - Посмотрите на историю коммитов (вы увидите три мусорных коммита: done, fix2, fix)
- Запустите интерактивный ребейз для последних 3 коммитов
- Объедините три мусорных коммита в один
- Проверьте результат — вместо трех мусорных коммитов должен быть один чистый коммит
Задание 3 (дополнительно): Проверка работы кода
- Переключитесь на
mainпосле успешного слияния - Допишите в
main.pyцикл для проверки работы:for culture in module.cultures: culture.grow() print(f"Готово к сбору: {agent.harvest()} культур(ы)") - Запустите код
Ожидаемый вывод:
Инструкция: pH 6.0
Готово к сбору: 3 культур(ы)
✅ Критерии успешного выполнения
- Конфликт в
module.pyуспешно разрешен - Метод
grow()работает корректно (изменяет стадию на "Красный") - Три мусорных коммита объединены в один
- История коммитов чистая и понятная
- Код запускается без ошибок
Автор: Dmitry Belan
Дата: 2026-07-01
Languages
Python
100%