Developers Manual - andyceo/documentation GitHub Wiki

Developers Manual

Предполагается, что вы уже форкнули какой-либо репозиторий на Bitbucket или Github, через веб-интерфейс.

Создание upstream-ветки

  • Создаем связь с upstream-репозиторием:

      git remote add upstream [email protected]:USER_LOGIN/UPSTREAM_REPO_NAME.git
    
  • Скачиваем данные из upstream-репозитория:

      git fetch upstream
    
  • Создаем локальную ветку upstream, которая будет связана с веткой master upstream-репозитория и сразу переключимся на нее:

      git checkout -b upstream upstream/master
    

Разрешение конфликтов форка с основным репозиторием

Предполагается, что вы ведете работу в ветке master, и у вас есть ветка upstream (см. Создание upstream-ветки)

# Обновим upstream до актуального состояния
git checkout upstream
git pull

# Сольем свой master с upstream
git checkout master
git merge upstream

# смотрим и решаем конфликты
git status
<<<Разрешить конфликт в редакторе, например PHPStorm>>>

# заканчиваем слияние
git add FILE_WITH_RESOLVED_CONFLICT
git commit
git push

Работа с Git при подготовке Pull Request для Bitbucket без истории коммитов

Предположим, вы всю работу делали в своей ветке master, а для подготовки пулл реквеста намерены создать ветку clean_code.

Также, мы исходим из предположения, что вы настроили себе локальную ветку upstream, которая синхронизирована с master-веткой upstream-репозитория (репозитория, который вы форкнули) (см. Создание upstream-ветки).

  1. Перед подготовкой пулл-реквеста, синхронизируйте ваш репозиторий с основным, разрешите все конфликты (если есть).

  2. Выполните следующее:

     git checkout master
     git pull
    
     git checkout -b clean_code upstream
    
     # удостоверьтесь, что изменения именно те, которые вы хотите отослать
     git diff clean_code..master
    
     git merge --squash master
     git commit
    
     git push -u origin clean_code
    
  3. В веб-интерфейсе Bitbucket (или Github) делаете пулл реквест из вашей ветки clean_code в основной репозиторий, ветку master

  4. Дальнейшую работу над замечаниями к данному пулл реквесту, производите в ветке clean_code. В зависимости от того, насколько много будет сделано изменений и насколько они будут большими, ответственный за принятие пулл реквеста попросит создать новый пулл реквест с чистой историей коммитов (по той же процедуре из пункта 2), либо примет ваш пулл реквест с историей из ветки clean_code.

  5. После принятия пулл реквеста:

    • ветку clean_code удалить, как локально, так и удаленно:

      git branch -D clean_code
      git push origin --delete clean_code
      
    • синхронизируйте ваш репозиторий с основным

Порядок работы над задачей (для разработчика)

Исходные данные: у вас должна быть настроена локальная копия для разработки, исходные коды проекта управляются Git, репозиторий лежит на Bitbucket. Для справки по Git-командам для подготовки Pull Request см. Работа с Git при подготовке Pull Request для Bitbucket без истории коммитов

  1. Взять задачу в работу (о чем в ней написать комментарий)
  2. [опционально] Создать в своем форкнутом репозитории ветку отдельно под задачу
  3. Как только достигнуто состояние кода, готовое к объединению с основным репозиторием, нужно создать Pull Request. Этот сценарий хорошо описан в документации Bitbucket: Fork a Repo, Compare Code, and Create a Pull Request. Перед созданием Pull Request необходимо провести подготовительные действия:
    1. Синхронизировать свой форкнутый репозиторий с основным. Если возникли конфликты, разрешить их в своем репозитории. См. Разрешение конфликтов форка с основным репозиторием
    2. Обновить Drupal 8, и если возникла такая необходимость после обновления, переустановить проект.
    3. Проверить работоспособность своего кода на актуальной версии Drupal 8 и основного (форкнутого) репозитория.
  4. Ответственным за принятие кода в основной репозиторий, проводится проверка вашей работы (вашего Pull Request) и оставляются комментарии о том, что нужно исправить. В случае фатальных ошибок, Pull request отклоняется насовсем (Decline). В случае, если по мнению проверяющего, Pull Request готов к вливанию в основной репозиторий, он принимается (Merge).
  5. В случае, если ваш Pull Request остался непринятым, и в нем присутствуют комментарии о том, что нужно исправить, то нужно исправить код и обновить Pull Request.
  6. Пункты 3-5 повторяются, пока ваш Pull Request не будет принят или отклонен.
  7. В случае принятия Pull Request, нужно прокомментировать задачу, в рамках которой он был сделан. В комментарии нужно:
    • оставить ссылку на Pull Request
    • кратко написать, что было сделано
    • написать, что осталось сделать, чтобы закрыть задачу. Если задача сделана полностью в рамках этого Pull Request, то написать, что задачу можно закрыть.
    • закрыть задачу (статус Resolved)
⚠️ **GitHub.com Fallback** ⚠️