Внесение кода
Этот раздел предназначен для основной команды Wagtail или для всех, кто интересуется процессом внесения кода в Wagtail.
Код следует вносить только после проверки его как минимум одним другим рецензентом или коммитером, если изменения не являются незначительными изменениями документации или исправлением опечатки. Если после рецензии внесены дополнительные изменения кода, их можно внести без дальнейшей проверки, если они не вызывают споров и достаточно незначительны, чтобы с минимальной вероятностью ввести новые ошибки.
Большинство внесений кода будут осуществляться в виде запросов на вытягивание из Github. Запросы на вытягивание не должны сливаться из Github, за исключением незначительных исправлений документации, которые можно слить с опцией «Сжатие и слияние». Вместо этого код должен быть выгружен коммитером локально, изменения должны быть изучены и переоснованы, CHANGELOG.txt и заметки о релизе обновлены, и, наконец, код должен быть отправлен в ветвь main. Этот процесс описан более подробно ниже.
Выгрузка кода локально
Если код был отправлен как запрос на вытягивание, вы должны получить изменения и выгрузить их в свой репозиторий Wagtail. Простым способом сделать это является добавление следующего git псевдонима в вашу ~/.gitconfig (предполагая, что upstream является wagtail/wagtail):
[alias]
pr = !sh -c \"git fetch upstream pull/${1}/head:pr/${1} && git checkout pr/${1}\"
Теперь вы можете выгрузить запрос на вытягивание номер xxxx, выполнив git pr xxxx.
Перебазирование на main
После получения кода вы должны перебазировать коммиты на ветвь main. Перебазирование предпочтительнее слияния, так как коммиты слияния усложняют чтение истории коммитов при небольших изменениях.
Вы можете исправить любые мелкие ошибки в коммитах, такие как опечатки и форматирование, как часть перебазирования. git rebase --interactive является отличным инструментом для этой задачи.
В идеале используйте это как возможность сжать изменения до нескольких коммитов, чтобы каждый коммит вносил одно осмысленное изменение (и не ломал ничего). Если это невозможно из-за характера изменений, допустимо либо сжать в один коммит, либо оставить все коммиты не сжатыми, в зависимости от того, что будет более читаемым в истории коммитов.
$ # Get the latest commits from Wagtail $ git fetch upstream $ git checkout main $ git merge --ff-only upstream/main $ # Rebase this pull request on to main $ git checkout pr/xxxx $ git rebase main $ # Update main to this commit $ git checkout main $ git merge --ff-only pr/xxxx
Обновление CHANGELOG.txt и заметок о релизе
Примечание
Это следует делать только основным коммитерам, после того, как изменения были проверены и приняты.
Каждое существенное изменение в Wagtail должно иметь запись в CHANGELOG.txt, и в заметках о релизе текущей версии.
CHANGELOG.txt содержит краткое описание каждой новой функции, рефакторинга или исправления ошибки в каждом релизе. Каждое описание должно быть в одной строке. Исправления ошибок следует группировать в конце списка для каждого релиза и предварять «Fix:». Имя участника должно быть добавлено в конце описания в скобках. Например:
* Fix: Tags added on the multiple image uploader are now saved correctly (Alex Smith)
Заметки о релизе каждой версии содержат более подробное описание каждого изменения. Также должны быть включены заметки о совместимости со старыми версиями. Большие новые функции или изменения должны иметь свой раздел, в то время как более мелкие изменения и исправления ошибок должны быть сгруппированы в своем собственном разделе. См. предыдущие заметки о релизе для примеров. Заметки о релизе каждой версии находятся в docs/releases/x.x.x.rst.
Если участник новый, и это его первое внесение в Wagtail, он должен быть добавлен в список CONTRIBUTORS.rst. Участники добавляются в хронологическом порядке, новые участники добавляются в конец списка. Используйте их предпочтительное имя. Обычно имя участника можно найти на его странице Github. Если сомневаетесь или его имя нет на его странице, спросите его, как он хочет, чтобы его называли.
Если объединяемые изменения достаточно малы, чтобы быть одним коммитом, исправьте этот единственный коммит с добавлением обновлений CHANGELOG.txt, заметок о релизе и участников:
$ git add CHANGELOG.txt docs/releases/x.x.x.rst CONTRIBUTORS.rst $ git commit --amend --no-edit
Если изменения не помещаются в один коммит, сделайте новый коммит с обновлениями CHANGELOG.txt, заметок о релизе и участников. Сообщение коммита должно гласить Release notes for #xxxx:
$ git add CHANGELOG.txt docs/releases/x.x.x.rst CONTRIBUTORS.rst $ git commit -m 'Release notes for #xxxx'
Отправка на main
Теперь изменения готовы к отправке в main.
$ # Check that everything looks OK $ git log upstream/main..main --oneline $ git push --dry-run upstream main $ # Push the commits! $ git push upstream main $ git branch -d pr/xxxx
Если вы допустили ошибку
Это нормально! Все ошибаются. Если вы обнаружите, что недавние объединенные изменения оказывают негативное влияние, создайте новый запрос на вытягивание с откатными изменениями и слить его без ожидания проверки. Запрос на вытягивание послужит дополнительной документацией к изменениям и пройдет тестирование CI.
Добавление коммитов к запросу на вытягивание другого человека
Пользователи Github с правами записи в wagtail/wagtail (члены ядра) могут добавить коммиты в ветвь запроса на вытягивание участника.
Учитывая, что имя пользователя участника johndoe, а его ветвь запроса на вытягивание называется foo:
$ git clone git@github.com:wagtail/wagtail.git $ cd wagtail $ git remote add johndoe git@github.com:johndoe/wagtail.git $ git fetch johndoe foo $ git checkout johndoe/foo # Make changes # Commit changes $ git push johndoe HEAD:foo
© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/v3.0.3/contributing/committing.html