Skip to content

Latest commit

 

History

History
72 lines (43 loc) · 8.09 KB

second-lesson.md

File metadata and controls

72 lines (43 loc) · 8.09 KB

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

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


Issues — проблемы репозитория

В репозитории сверху есть несколько вкладок, вторая из них — Issues. Для того, чтобы вам назначили задачу из этого списка, стоит написать в комментариях к этой задаче, что вы хотели бы выполнить её. Через некоторое время хозяева репозитория добавят вас в список работающих над задачей.


Посмотрите на список задач этого репозитория. Выберите ту, которая вам по душе и ещё никем не занята, отпишитесь в комментариях.

Задача у нас теперь есть, рассмотрим способ её решения.


Форки: создаём и используем

Некоторые из вас уже обратили внимание, что справа вверху интерфейса гитхаба есть кнопка "Fork". Она нужна для создания полной копии репозитория, но в вашем аккаунте. Здесь можно вносить изменения, даже если у вас нет возможности править основной репозиторий. Эти изменения пока что никак не отразятся на главном репозитории.

Помните: когда вы работаете в форке, создавайте отдельную ветку для вносимых изменений так, будто вы работаете не в копии репозитория, а в оригинале. Такие ветки обычно называют в соответствии с выполняемой задачей: например её номер (если используется трекер задач) и название.


Создайте форк этого репозитория — это понадобится для выполнения задания. Сделайте ветку в соответствии с выбранной задачей. Для этого удобнее всего склонировать ваш форк на локальную машину.

Решите вашу задачу любым удобным способом. Запушьте все изменения в ветке на гитхаб.

Теперь осталось только доставить наши изменения в главный репозиторий.


Pull Request — сердце опенсорса

Зайдите в свой форк и свою ветку через сайт гитхаба и нажмите кнопку Pull Request. Затем непосредственно на вкладке создания Пулл Реквеста проверьте, что он делается из вашей ветки форка в мастер главного репозитория. Нажимайте конпку Create Pull Request и пишите подробное описание того, какие изменения вы внесли этим Пулл Реквестом (по аналогии с сообщением коммита, только, возможно, более подробно).


Сделайте Пулл Реквест с вашими изменениями в наш репозиторий.

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


Конфликты — основной источник проблем

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

Если при попытке мёрджа возник конфликт, гит сообщит об этом, перечислит список файлов, содержащих конфликты, и потребует разрешить их вручную. Открыв такой файл мы увидим следующий текст:

<<<<<<< HEAD
<конфликтующий код из текущей ветки>
=======
<конфликтующий код из ветки для мёрджа>
>>>>>>> <ветка, которую мёрджили>

Всю это конструкцию надо заменить кодом, который должен по вашему мнению оказаться в ветке на месте конфликта. Когда вы разрешите конфликты, проверьте статус, добавьте изменённый файл, сделайте коммит. Пока вы не сделали коммит, можно выполнить $ git merge --abort, чтобы отменить слияние.


Перейдите в этот репозиторий и выполните задание из README.


Ревью

Вы можете написать обзор любого Пулл Реквеста в открытом репозитории. Для этого откройте этот Пулл Реквест, перейдите во вкладку Files changed и нажмите на кнопку Review changes


Напишите ревью чьего-нибудь Пулл Реквеста в этом репозитории.

Когда на ваш Пулл Реквест напишут ревью, вы обсудите с ревьюером запрошенные изменения и сделаете нужные, и ревьюер одобрит их, придёт время сливать вашу ветку с основным репозиторием. Нажмите на кнопку Reviewers, выберите одного из мейнтейнеров и нажмите на него, чтобы запросить ревью. Мейнтейнер придёт и вмёрджит реквест в основной репозиторий.

Отлично! Теперь вы готовы встретиться с миром опенсорса лицом к лицу.