GitLab

Совместная работа над проектом gitlab-репозитории проекта

Модель совместной разработки

Команда drupal.ru использует модель совместной разработки «Fork + Pull», в которой любой человек может сделать клон (fork, форк, копия) репозитория и сливать изменения в свой личный форк без необходимости иметь доступ к оригинальному репозиторию. Эта модель уменьшает количество телодвижений для новых контрибьюторов и популярна для open source проектов, так как позволяет людям работать независимо, без единого координирования.

Локальная копия репозитория

На странице репозитория https://gitlab.com/drupal.ru/7/ нужно нажать кнопку «Fork» для того, чтобы создать форк.

На странице клона репозитория нужно нажать кнопку «Clone» и скопировать URL-адрес своего форка. Чтобы «стянуть» копию на свой компьютер необходимо ввести команду git clone и указать адрес своего форка:

git clone git@gitlab.com:<user>/<repo>.git

Например, я форкнул репозиторий drupal.ru, а затем сменил имя репо на dru7, чтобы в ссылка в моем GitLab-пространстве выглядела как https://gitlab.com/avakorin/dru7. Чтобы «стянуть» мой репо на компьютер, я использую команду:

git clone git@gitlab.com:avakorin/dru7.git

Затем необходимо создать отсылку на «родительский» репозитарий, чтобы получать обновления:

git remote add upstream git@gitlab.com:drupal.ru/7.git

Тестирование изменений, сделанных другим пользователем

Подключаем удаленный форк-репозиторий автора запроса на включение (pull request, PR, ПР, пулреквест)

git remote add <user> git@gitlab.com:<user>/<repo>.git

Получаем (извлекаем) всю информацию, которая есть в форк-репозитории автора запроса на включение

git fetch <user>

Делаем чекаут ветки, которая содержит изменения, отправленные в pull request

git checkout -b <branch> <user>/<branch>

Например, чтобы протестировать изменения, которые сделаны пользователем avakorin в ветке issue-1200, нужно:

git remote add avakorin git@gitlab.com:avakorin/dru7.git
git fetch avakorin
git checkout -b issue-1200 avakorin/issue-1200

Отправка коммита в pull request другого человека

Подключаем удаленный форк-репозиторий автора запроса на включение

git remote add <user> git@gitlab.com:<user>/<repo>.git

Получаем (извлекаем) всю информацию, которая есть в форк-репозитории автора запроса на включение

git fetch <user>

Делаем чекаут ветки, которая содержит изменения, отправленные в pull request

git checkout -b <branch> <user>/<branch>

Вносим свои изменения в код, делаем коммит, затем отправляем изменения в исходную удаленную (remote) ветку форка автора pull request.

git push <user> <branch>

Например, чтобы отправить свои изменения в пулреквест, сделанный на основе ветки issue-1158 форк-репозитория пользователя ivnish, нужно:

git remote add ivnish git@gitlab.com:ivnish/drupal.ru.git
git fetch ivnish
git checkout -b issue-1158 ivnish/issue-1158
# вносим изменения в код
git commit -m "#1158: <пояснительный текст для коммита>"
git push ivnish issue-1158

Отправка изменений в чужой пулреквест возможна только после включения автором форк-репозитория чекбокса «Allow edits from maintainers» .