Skip to content

Latest commit

 

History

History
136 lines (83 loc) · 7.77 KB

CONTRIBUTING.md

File metadata and controls

136 lines (83 loc) · 7.77 KB

Участие в проекте

Любой желающий может внести свой вклад в развитие данного проекта.

Помощь может заключаться не только в непосредственной разработке, но и в поиске ошибок, исправлении опечаток, предложении новых идей, которые сделают проект лучше.

Как предложить свою идею или указать на найденный баг?

Открой раздел Issues. Все текущие и будущие задачи обсуждаются здесь. Если в списке открытых вопросов нет твоей идеи, то смело создавай новый Issue с предложением.

Как начать выполнять задачу?

Открой раздел Issues. Выбери задачу, над которой хотел бы поработать. Внимательно ознакомься с описанием. Если остались вопросы, то задавай их в обсуждении Issue.

Убедись, что задача тебе полностью понятна и только после этого приступай к её реализации. Если задача связана с написанием кода, то подробности выполнения такой задачи указаны в разделе ниже.

Технические требования

Ко всем выполняемым задачам есть определенные требования. Они довольно простые:

Один Pull Request должен закрывать только одну задачу. Нельзя включать в Pull Request никакие изменения, которые напрямую не относятся к теме пуллреквеста, даже если это просто исправление опечатки в тексте.

Pull Request должен закрывать решаемую задачу полностью. Нельзя закрывать только часть задачи, другую часть оставив на другой Pull Request. Если задача требует разбивки на более мелкие задачи, то это нужно обсудить в Issue этой задачи и в случае необходимости создать новые Issue для подзадач.

Весь код должен идти с комментариями. Разрешается не комментировать участки кода, которые можно однозначно понять в рамках своего контекста. Комментарии не должны содержать грамматические ошибки.

Пример 1:

useEffect(() => {
  dispatch(fetchUsers());
}, [dispatch]);

В данном случае можно недвусмысленно понять что делает этот код, поэтому его можно не комментировать.


Пример 2:

// создаем переменную стейта, чтобы сделать поле ввода логина управляемым компонентом
const [text, setText] = useState(null);

В этом случае код нужно было прокомментировать, потому что переменная text может использоваться как угодно и нужно вносить ясность в момент её создания.


Пример 3:

const [loginFieldValue, setLoginFieldValue] = useState('');

Данной код выполяет ту же задачу, но за счет хорошего нейминга переменных можно избежать неоднозначности, поэтому дополнительный комментарий не требуется.

Как приступить к разработке

Подготовка git

1. Сделай fork текущего репозитория.

2. Склонируй свой fork на рабочий компьютер:

git clone https://github.com/твой-логин/iqa-frontend.git

3. Добавь головной сервер upstream:

git remote add upstream https://github.com/intocode/iqa-frontend.git

4. Создай новую ветку под выполняемую задачу:

git switch -c my-feature

Запуск тестов

После выполнения задачи запусти линтеры и тесты командой npm run check. Если какой-то тест не проходит, то внеси исправления в свой код.

Выгрузка изменений

Если задача будет решена и все тесты проходят выгрузи свою работу и открыть новый Pull Request:

git add измененный-файл.js
git commit -m "Хорошее описание коммита"
git push origin my-feature

После этого нужно перейти в свой репозиторий на GitHub и открыть Pull Request. Подробнее об этом в документации GitHub.

Проверка на конфликты

Если выполнение задачи заняло много времени, то возможно репозиторий в это время был обновлен. Необходимо сгрузить себе изменения и замёржить их. Для этого:

а) Сделай коммит своей работы:

git add file1.js file2.js
git commit -m "Описание выполненной работы"

б) Перейди на ветку main:

git switch main

в) Подтяни изменения с головной ветки:

git pull upstream main

г) Перейди на рабочую ветку и сделай мёрж:

git switch my-feature
git merge main

д) Если есть конфликты, то исправь их. Если не знаешь как это делать, то прочитай какой-нибудь материал на эту тему. Например этот, этот или вот этот.

После этого можно делать push и открывать Pull Request.

Принятие Pull Request

Открытый Pull Request должен пройти код ревью как минимум двух участников проекта. Однако, в некоторых случаях мы можем принять изменения не дожидаясь двух подтверждений.

Всё обсуждение пулл реквеста должно вестись на его странице в комментариях, чтобы оно было доступно всем участникам разработки.