Files
Igor-kr/README.md
T
2026-07-01 13:52:35 +03:00

145 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🌱 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`:
```bash
git checkout main
```
2. Попытайтесь слить ветку `feature-api`:
```bash
git merge feature-api
```
3. **Ожидаемый результат:** Конфликт в файле `farm_core/module.py` в методе `grow()`:
- В `main`: `raise NotImplementedError("Рост не реализован в main!")`
- В `feature-api`: `self._stage = "Красный"`
4. Откройте файл `farm_core/module.py` и разрешите конфликт:
- Удалите маркеры конфликта (`<<<<<<<`, `=======`, `>>>>>>>`)
- Оставьте рабочую реализацию из `feature-api`
5. Завершите слияние:
```bash
git add farm_core/module.py
git commit -m "Resolve merge conflict in grow() method"
```
### Задание 2: Интерактивный ребейз (очистка истории)
**Цель:** Научиться объединять "мусорные" коммиты в один чистый коммит.
**Шаги:**
1. Переключитесь на ветку `feature-api`:
```bash
git checkout feature-api
```
2. Посмотрите на историю коммитов:
```bash
git log --oneline -5
```
Вы увидите три мусорных коммита:
```
9ae915a done
930b346 fix2
f358639 fix
eaafccb Implement grow method and harvest function
```
3. Запустите интерактивный ребейз для последних 3 коммитов:
```bash
git rebase -i HEAD~3
```
4. В открывшемся редакторе измените команды:
```
pick f358639 fix
squash 930b346 fix2
squash 9ae915a done
```
(Или используйте `fixup` вместо `squash`, чтобы отбросить сообщения коммитов)
5. Сохраните и закройте редактор. В следующем редакторе напишите новое сообщение коммита:
```
Clean up: remove debug comments
```
6. Проверьте результат:
```bash
git log --oneline -3
```
Теперь вместо трех мусорных коммитов — один чистый коммит.
### Задание 3 (дополнительно): Проверка работы кода
1. Переключитесь на `main` после успешного слияния
2. Допишите в `main.py` цикл для проверки работы:
```python
for culture in module.cultures:
culture.grow()
print(f"Готово к сбору: {agent.harvest()} культур(ы)")
```
3. Запустите код:
```bash
python main.py
```
**Ожидаемый вывод:**
```
Инструкция: pH 6.0
Готово к сбору: 3 культур(ы)
```
## ✅ Критерии успешного выполнения
- [ ] Конфликт в `module.py` успешно разрешен
- [ ] Метод `grow()` работает корректно (изменяет стадию на "Красный")
- [ ] Три мусорных коммита объединены в один
- [ ] История коммитов чистая и понятная
- [ ] Код запускается без ошибок
---
**Автор:** Dmitry Belan
**Дата:** 2026-07-01