🌱 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:git checkout main -
Попытайтесь слить ветку
feature-api:git merge feature-api -
Ожидаемый результат: Конфликт в файле
farm_core/module.pyв методеgrow():- В
main:raise NotImplementedError("Рост не реализован в main!") - В
feature-api:self._stage = "Красный"
- В
-
Откройте файл
farm_core/module.pyи разрешите конфликт:- Удалите маркеры конфликта (
<<<<<<<,=======,>>>>>>>) - Оставьте рабочую реализацию из
feature-api
- Удалите маркеры конфликта (
-
Завершите слияние:
git add farm_core/module.py git commit -m "Resolve merge conflict in grow() method"
Задание 2: Интерактивный ребейз (очистка истории)
Цель: Научиться объединять "мусорные" коммиты в один чистый коммит.
Шаги:
-
Переключитесь на ветку
feature-api:git checkout feature-api -
Посмотрите на историю коммитов:
git log --oneline -5Вы увидите три мусорных коммита:
9ae915a done 930b346 fix2 f358639 fix eaafccb Implement grow method and harvest function -
Запустите интерактивный ребейз для последних 3 коммитов:
git rebase -i HEAD~3 -
В открывшемся редакторе измените команды:
pick f358639 fix squash 930b346 fix2 squash 9ae915a done(Или используйте
fixupвместоsquash, чтобы отбросить сообщения коммитов) -
Сохраните и закройте редактор. В следующем редакторе напишите новое сообщение коммита:
Clean up: remove debug comments -
Проверьте результат:
git log --oneline -3Теперь вместо трех мусорных коммитов — один чистый коммит.
Задание 3 (дополнительно): Проверка работы кода
-
Переключитесь на
mainпосле успешного слияния -
Допишите в
main.pyцикл для проверки работы:for culture in module.cultures: culture.grow() print(f"Готово к сбору: {agent.harvest()} культур(ы)") -
Запустите код:
python main.py
Ожидаемый вывод:
Инструкция: pH 6.0
Готово к сбору: 3 культур(ы)
✅ Критерии успешного выполнения
- Конфликт в
module.pyуспешно разрешен - Метод
grow()работает корректно (изменяет стадию на "Красный") - Три мусорных коммита объединены в один
- История коммитов чистая и понятная
- Код запускается без ошибок
Автор: Dmitry Belan
Дата: 2026-07-01