Jump to main content Jump to doc navigation

Некоторые проекты требуют Pull Request (PR) в их репозиторий. Вы форкаете repo, правите feature branch в форке и отправляете PR в исходный проект.

В этом учебнике мы форкаем Fred Starter Theme, Bootstrap 4 quickstart для авторов тем. Начните с входа в Github.

Fork и clone в экземпляр MODX

Для PR нужен fork репозитория и работа в feature branch.

1. Fork репозитория

Сфоркайте репозиторий, в который хотите внести вклад. Например, откройте Fred Theme Starter и нажмите fork справа вверху.

Скопируйте HTTPS URL у Clone or download, например https://github.com/modxcms/fred-theme-starter.git. Понадобится и SSH URL вашего форка, например [email protected]:your_username/your-fork-name.git.

2. Clone форка в экземпляр MODX

git clone работает только в пустых директориях. Клонируем во временный tmp/ и переносим файлы в web root. По SSH на рабочем Cloud:

cd ~/www
git clone [email protected]:your_username/your-fork-name.git tmp

Репозиторий окажется в ~/www/tmp/. Перенесите содержимое tmp/ под www/:

rsync -av ./tmp ./

Убедитесь, что .git/ и файлы лежат в webroot www/. Затем удалите tmp/ командой rm -rf ./tmp.

3. Добавление remote upstream

Это исходный проект. Используйте его HTTPS clone URL из шага 1:

git remote add upstream https://github.com/modxcms/fred-theme-starter.git

Работа с форком

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

Без локальных изменений: sync upstream с форком

Для PR никогда не коммитьте напрямую в master. Подробнее: Feature Branches and Pull Requests: Walkthrough и Understanding the GitHub flow.

Перед push в feature branch синхронизируйте локальный репозиторий с upstream. См. также Syncing a fork:

git checkout master
git fetch upstream
git merge --ff-only upstream/master  # only merges if local is clean
git push origin master               # push to your fork
gitify package:install --all
gitify build

Эти команды нужны, когда версия commit в upstream и в форке расходятся. Запускать каждый раз не вредно.

С локальными изменениями: sync upstream с форком

Команды ниже создают локальный feature branch и коммитят правки в локальный git repo.

cd ~/www
git checkout -b my-feature   # checkout to a new branch named `my-feature`,
                             # or any other name you decide for your work
gitify extract               # extract all your local changes
git add --all                # or git add only specific changed files
git commit -m "My Changes"   # Use a more reasonable commit message

Дальше синхронизируем master upstream с вашим форком.

git checkout master
git fetch upstream
git merge --ff-only upstream/master
git push origin master

Теперь синхронизируем feature branch с изменениями master форка после merge.

git checkout my-feature      # checkout your `my-feature` branch again
git rebase master            # this pulls from your forked master```

Могут появиться конфликты. Их нужно разрешить до продолжения. Конфликт возникает, когда двое правят одну строку. См. руководство Github по конфликтам.

Соберите изменения в рабочий экземпляр MODX через Gitify.

gitify package:install --all
gitify build

Проверьте, что тема и правки работают как ожидается. Затем отправьте их в Github fork и оформите PR в upstream:

git push origin my-feature   # push to your `my-feature` branch on Github to
                             # submit as a PR, per the next section below
git checkout master          # return to the master branch to start your next
gitify package:install --all # restore the `master` state to your local MODX
gitify build

Отправьте PR в upstream-проект.

Отправка PR в upstream

Откройте форк на Github. Должно появиться уведомление о создании PR из новой ветки. Нажмите его и отправьте PR в нужную ветку, чаще всего master или как указано в README исходного репозитория.

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • deJaya
  • JT Skaggs
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$204 per month—let's make that $500!

Learn more