Files
Igor-kr/README.md
T

3.8 KiB
Raw Blame History

🌱 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.

Шаги:

  1. Убедитесь, что вы на ветке main
  2. Попытайтесь слить ветку feature-api
  3. Ожидаемый результат: Конфликт в файле farm_core/module.py в методе grow():
    • В main: raise NotImplementedError("Рост не реализован в main!")
    • В feature-api: self._stage = "Красный"
  4. Откройте файл farm_core/module.py и разрешите конфликт
  5. Завершите слияние

Задание 2: Интерактивный ребейз (очистка истории)

Цель: Научиться объединять "мусорные" коммиты в один чистый коммит.

Шаги:

  1. Переключитесь на ветку feature-api
  2. Посмотрите на историю коммитов (вы увидите три мусорных коммита: done, fix2, fix)
  3. Запустите интерактивный ребейз для последних 3 коммитов
  4. Объедините три мусорных коммита в один
  5. Проверьте результат — вместо трех мусорных коммитов должен быть один чистый коммит

Задание 3 (дополнительно): Проверка работы кода

  1. Переключитесь на main после успешного слияния
  2. Допишите в main.py цикл для проверки работы:
    for culture in module.cultures:
        culture.grow()
    
    print(f"Готово к сбору: {agent.harvest()} культур(ы)")
    
  3. Запустите код

Ожидаемый вывод:

Инструкция: pH 6.0
Готово к сбору: 3 культур(ы)

Критерии успешного выполнения

  • Конфликт в module.py успешно разрешен
  • Метод grow() работает корректно (изменяет стадию на "Красный")
  • Три мусорных коммита объединены в один
  • История коммитов чистая и понятная
  • Код запускается без ошибок

Автор: Dmitry Belan
Дата: 2026-07-01