Google is committed to advancing racial equity for Black communities. See how.
Эта страница переведена с помощью Cloud Translation API.
Switch to English

Отправка патчей

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

Предпосылки

Для авторов

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

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

Открытие репо-филиала

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

repo start NAME .

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

Внесение изменений

После того, как вы изменили исходные файлы (и проверили их, пожалуйста), зафиксируйте изменения в своем локальном репозитории:

git add -A
git commit -s

Предоставьте подробное описание изменения в сообщении о фиксации. Это описание помещается в общедоступный репозиторий AOSP, поэтому следуйте этим рекомендациям для написания описаний списков изменений:

  • Начните с однострочного резюме (максимум 50 символов), за которым следует пустая строка. Этот формат используется Git и Gerrit для различных дисплеев.

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

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

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

Short description on first line

More detailed description of your patch,
which is likely to take up multiple lines.

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

Загрузка в Геррит

После того, как вы зафиксируете изменение в своей личной истории, загрузите его в Gerrit с помощью

repo upload

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

После успешной загрузки Repo предоставит вам URL-адрес новой страницы на Gerrit . Перейдите по этой ссылке, чтобы просмотреть свой патч на сервере рецензирования, добавить комментарии или запросить конкретных рецензентов для вашего патча.

Загрузка патча на замену

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

git add -A
git commit --amend

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

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

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

repo sync

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

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

repo rebase

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

git rebase --continue

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

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

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

Upstream проекты

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

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

ICU4C

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

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

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

мкш

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

OpenSSL

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

V8

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

WebKit

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

zlib

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