# GitLab

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

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

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

На странице репозитория [https://gitlab.com/drupal.ru/7/](https://github.com/DrupalRu/drupal.ru/) нужно нажать кнопку «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
```

### Тестирование изменений, сделанных другим пользователем <a href="#testirovanie-izmenenii-sdelannykh-drugim-polzovatelem" id="testirovanie-izmenenii-sdelannykh-drugim-polzovatelem"></a>

Подключаем удаленный форк-репозиторий автора запроса на включение (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
```

{% hint style="warning" %}
Отправка изменений в чужой пулреквест возможна только после включения автором форк-репозитория чекбокса «**Allow edits from maintainers**»  .
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.drupal.ru/code/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
