Отправка исправлений

На этой странице описан полный процесс отправки исправления в Android Open Source Project (AOSP), в том числе то, как запросить проверку и отслеживать изменения с помощью Gerrit .

Предпосылки

Для начала убедитесь, что вы сделали следующее:

Ресурсы

Для авторов

Аутентификация на сервере

Если вы используете общий IP-адрес с другими пользователями, квоты могут быть активированы даже для обычных шаблонов использования. Это может произойти, например, когда многие пользователи синхронизируют новых клиентов с одного и того же IP-адреса в течение короткого периода времени. Аутентифицированный доступ использует отдельную квоту для каждого пользователя, независимо от IP-адреса. Чтобы узнать об активации доступа с проверкой подлинности, см. Использование проверки подлинности .

Запуск ветки репо

Для каждого изменения, которое вы собираетесь внести, создайте новую ветку в соответствующем репозитории Git:

repo start NAME .

You can start several independent branches at the same time in the same repository. The branch NAME is local to your workspace and isn't included either on Gerrit or in the final source tree.

Making your change

Modify the source files, and validate your changes.

Commit the changes to your local repository with these commands:

git add -A
git commit -s

Изменить описания

  • Строка 1: Заголовок

    Предоставьте резюме в одну строку ( максимум 50 символов)

    Этот формат используется Git и Gerrit для различных отображений. Это самая важная и самая насыщенная часть сообщения о коммите. Рассмотрите возможность использования префиксов для описания области, которую вы изменили, за которой следует описание изменения, которое вы сделали в этом коммите, например, с префиксом ui :

    ui: Removes deprecated widget

  • Строка 2: Пусто

    Всегда держите эту строку пустой.

  • Строка 3: Тело

    Напишите более подробное описание, начиная с этой строки.

    Он должен содержать максимум 72 символа. Опишите, какую проблему решает изменение и как. Хотя это необязательно при реализации новых функций, это очень поможет другим позже, если они обратятся к этому изменению, особенно для отладки.

    Включите краткое примечание о любых предположениях или справочной информации, которые могут быть важны, когда другой участник работает над этой функцией.

Уникальный идентификатор изменения, а также ваше имя и адрес электронной почты, указанные во время repo init , автоматически добавляются в сообщение о коммите.

Вот пример сообщения фиксации:

Line 1, Headline - a short description

Line 3, Body - Add the detailed description of your patch here. Use as many lines
as needed. You can write an overall description, then list specifics.

I6e3c64e7a:Added a new widget.
I60c539a8f:Fixed the spinning image.
To read a blog about good commit descriptions (with examples), see How to Write a Git Commit Message by Chris Beams.

Uploading to Gerrit

After you commit your change to your personal history, upload it to Gerrit with this command:

repo upload

If you started multiple branches in the same repository, you're prompted to select which ones to upload.

After a successful upload, Repo provides you with the URL of a new page on Gerrit. Click the link that Repo gives you to view your patch on the review server, add comments, or request specific reviewers for your patch.

Requesting a review

After you've uploaded your changes to Gerrit, the patch must be reviewed and approved by the appropriate code owners. Locate code owners in OWNERS files.

To find the appropriate code owners and add them as reviewers for your change, follow these steps.

  1. Select the SUGGEST OWNERS link in the Gerrit UI to see a list of code owners for the files in your patch.

    suggest owners link in Gerrit
    Figure 1. Suggest owners link in Gerrit
  2. Add code owners from the list as reviewers for your patch.

To determine the status of the files in your patch, check for the following icons next to the files in the patch.

  • (checkmark icon): Approved by code owner
  • (cross icon): Not approved by code owner
  • (clock icon): Pending approval by code owner
Figure 2. Example of files with icons showing code owner approval status

Uploading a replacement patch

Suppose a reviewer looked at your patch and requested a small modification. You can amend your commit within Git, which results in a new patch on Gerrit that has the same change ID as the original.

git add -A
git commit --amend

Когда вы загружаете измененный патч, он заменяет оригинал как в Gerrit, так и в вашей локальной истории Git.

Разрешение конфликтов синхронизации

Если в исходное дерево отправлены другие исправления, которые конфликтуют с вашим, перебазируйте свое исправление поверх нового HEAD исходного репозитория. Для этого выполните эту команду:

repo sync

Команда repo sync получает обновления с исходного сервера, а затем пытается автоматически перебазировать ваш HEAD на новый удаленный HEAD .

Если автоматическая перезагрузка не удалась, выполните ручную перезагрузку.

repo rebase

Еще один инструмент для решения конфликта перебазирования — git mergetool . Когда вы успешно объединили конфликтующие файлы, выполните эту команду:

git rebase --continue

После завершения автоматической или ручной перебазировки запустите repo upload , чтобы отправить обновленный патч.

После утверждения заявки

После того, как отправка проходит процесс проверки и проверки, Gerrit автоматически вносит изменения в общедоступный репозиторий. Другие пользователи могут запустить repo sync , чтобы загрузить обновление на свои локальные клиенты.

Для апстрим-проектов

Android использует ряд других проектов с открытым исходным кодом, таких как ядро ​​Linux и WebKit, как описано в разделе Управление программным обеспечением Android . Для большинства проектов, находящихся в external/ , внесите изменения вышестоящего уровня, а затем сообщите специалистам по сопровождению Android о новом выпуске основного потока, который содержит ваши изменения.

Вы также можете загружать исправления, которые позволяют отслеживать новый основной выпуск. Обратите внимание, что эти изменения могут быть трудными для внесения, если проект широко используется в Android, как и большинство более крупных проектов, упомянутых ниже, которые обычно обновляются с каждым выпуском.

Одним интересным частным случаем является Bionic. Большая часть кода взята из BSD, поэтому, если изменение не связано с кодом, который является новым для Bionic, пожалуйста, сделайте исправление вышестоящего уровня, а затем извлеките полностью новый файл из соответствующего BSD.

Ядро Android

Внесите все изменения вверх по течению. Общие рекомендации см. в Руководстве по разработке ядра Android и на странице Разработка кода ядра для GKI .

отделение интенсивной терапии

Внесите все изменения в проект ICU в external/icu (папки icu4c/ и icu4j/ ) на домашней странице ICU-TC . Дополнительные сведения см. в разделе Отправка сообщений об ошибках ICU и запросах функций . Добавьте метку «android» ко всем восходящим запросам Jira.

КЛДР

Большинство лингвистических данных в ICU поступает из проекта Unicode CLDR . Отправьте все запросы вверх по течению в соответствии с Contributing to CLDR и добавьте метку «android».

LLVM/Clang/Компилятор-rt

Внесите все изменения в проекты, связанные с LLVM ( external/clang , external/compiler-rt , external/llvm ) на странице LLVM Compiler Infrastructure .

мкш

Внесите все изменения в проект MirBSD Korn Shell в external/mksh , либо отправив электронное письмо на адрес miros-mksh в домене mirbsd.org (подписка не требуется для отправки туда), либо на Launchpad .

OpenSSL

Внесите все изменения в проект OpenSSL в external/openssl на странице OpenSSL .

V8

Отправьте все изменения в проект V8 по адресу external/v8 на странице выпуска V8 . Подробности см. в разделе Участие в V8 .

Вебкит

Внесите все изменения в проект WebKit в external/webkit на странице WebKit . Начните процесс, заполнив сообщение об ошибке WebKit . В сообщении об ошибке используйте Android для полей «Платформа» и «ОС» , только если ошибка связана с Android. Ошибки с гораздо большей вероятностью привлекут внимание рецензентов после того, как будет добавлено предлагаемое исправление и включены тесты. Дополнительные сведения см. в разделе Добавление кода в WebKit .

zlib

Внесите все изменения в проект zlib в external/zlib на домашней странице zlib .