Отправить изменения кода

На этой странице описан полный процесс отправки изменения кода в проект Android с открытым исходным кодом (AOSP), включая способы запроса проверки и отслеживания изменений.

AOSP полагается на Gerrit , веб-систему проверки кода для проектов, использующих Git.

Подпишите лицензионные соглашения для участников

Прежде чем вносить какие-либо изменения кода для AOSP, вы должны прочитать лицензионные соглашения и заголовки участников и подписать одно из следующих соглашений:

Открыть ветку

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

  1. Создайте новую ветку в соответствующем репозитории Git. Ветка не является копией исходных файлов; это указатель на конкретный коммит, что упрощает создание локальных веток и переключение между ними. Используя ветки, вы можете идентифицировать изменения друг от друга. Запустите эту команду, чтобы запустить ветку:

    repo start BRANCH_NAME
    

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

  2. (необязательно) Убедитесь, что ветка создана:

    repo status .
    

    Вы должны увидеть вновь созданную ветку. Например:

    project frameworks/native/                      branch mynewbranch
    

Внесите и протестируйте изменения

Выполните следующие действия, чтобы внести и протестировать изменения:

  1. Чтобы убедиться, что вы работаете с самой последней кодовой базой, выполните синхронизацию всей кодовой базы:

    repo sync
    

    Если во время синхронизации возникли конфликты, обратитесь к шагам 2–4 раздела Устранение конфликтов синхронизации .

  2. Найдите код, который нужно изменить. Чтобы найти код, рассмотрите возможность использования Android Code Search . Вы можете использовать Android Code Search, чтобы просмотреть исходный код AOSP в том виде, в котором вы его фактически используете. Дополнительные сведения см. в разделе Начало работы с поиском кода . Чтобы просмотреть весь код в main ветке при поиске кода Android, перейдите по адресу https://cs.android.com/android/platform/superproject/main .

  3. Измените или добавьте исходные файлы. Для любых внесенных изменений:

  4. Сборка Андроида .

  5. Проверьте свою сборку .

Подготовьте и зафиксируйте изменения

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

  1. По умолчанию Git регистрируется, но не отслеживает вносимые вами изменения. Чтобы поручить Git отслеживать ваши изменения, вы должны пометить или подготовить эти изменения для включения в коммит. Запустите эту команду, чтобы внести изменения:

    git add -A
    

    Эта команда отслеживает изменения, внесенные вами в любые файлы.

  2. Возьмите файлы из промежуточной области и зафиксируйте или сохраните их в локальной базе данных:

    git commit -s
    

    По умолчанию открывается текстовый редактор, и вам будет предложено ввести сообщение о фиксации.

  3. Предоставьте сообщение фиксации в следующем формате:

    • Строка 1: Заголовок. Предоставьте однострочное описание изменения (максимум 50 символов). Рассмотрите возможность использования префиксов для описания области, которую вы изменили, с последующим описанием изменения, внесенного вами в этом коммите, например, следующий пример, содержащий изменение пользовательского интерфейса:

      ui: Removes deprecated widget
      
    • Строка 2: Пустая строка. После заголовка следует пустая строка.

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

    Чтобы прочитать блог о хороших описаниях коммитов (с примерами), см. раздел «Как написать сообщение о коммите Git» .

  4. Сохраните коммит.

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

Загрузите изменение для проверки

После того как вы зафиксируете изменения в своей личной истории Git, загрузите их в Gerrit:

  1. Запустите следующую команду, чтобы загрузить все ваши коммиты во все ваши проекты:

    repo upload
    

    Все изменения во всех проектах включаются в загрузку.

    Вам будет предложено запустить сценарии перехвата.

  2. Нажмите a, а затем Enter .

    Вам будет предложено одобрить загрузку:

    Upload project frameworks/native/ to remote branch main:
    branch BRANCH_NAME ( 1 commit, Wed Aug 7 09:32:33 2019 -0700):
           ff46b36d android codelab change
    to https://android-review.googlesource.com/ (y/N)?
    
  3. Нажмите y , а затем Enter , чтобы одобрить загрузку.

Вы должны получить сообщение, похожее на remote: SUCCESS .

Запросить отзыв

После успешной загрузки Repo предоставит вам ссылку на ваши изменения в Gerrit. Щелкните ссылку, чтобы просмотреть свои изменения на сервере проверки, добавить комментарии или запросить внесение изменений конкретными рецензентами. Все изменения в коде должны быть проверены соответствующими владельцами кода. Чтобы запросить проверку:

  1. В Gerrit нажмите ПРЕДЛОЖИТЬ ВЛАДЕЛЬЦЕВ :

    Предложить ссылку владельцам в Геррите

    Рисунок 1. Ссылка «Предложить владельцам» в Gerrit.

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

  2. Нажмите на владельца кода, чтобы добавить его в свой обзор.

    Кнопка ОТПРАВИТЬ активируется.

  3. (Необязательно) Введите адрес электронной почты человека, которому вы хотите просмотреть ваше изменение.

  4. (Необязательно) Нажмите +1 рядом с надписью «Автоматическая отправка», чтобы автоматически отправить изменение после получения одобрения. Если вы не нажмете эту кнопку, сотрудник Google должен будет внести за вас изменения.

  5. Нажмите ОТПРАВИТЬ , чтобы отправить изменение на проверку.

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

Определить статус изменения

Чтобы определить статус файлов в ваших изменениях, проверьте следующие значки рядом с файлами в изменениях:

  • (значок галочки): одобрено владельцем кода.
  • (значок крестика): не одобрено владельцем кода.
  • (значок часов): ожидает одобрения владельцем кода.

На следующем рисунке показаны эти значки состояния, применяемые к файлам при изменении:

Пример файлов со значками, показывающими одобрение владельца кода

Рис. 2. Пример файлов со значками, показывающими одобрение владельца кода.

Устраните отзыв и загрузите заменяющее изменение

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

Чтобы разрешить отзыв и внести изменения:

  1. Выполните шаги 2–4 в разделе «Внесение и проверка изменений» .

  2. Выполните следующие команды, чтобы внести изменения:

    git add -A
    git commit --amend
    
  3. Загрузите сдачу .

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

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

Если в исходное дерево внесены другие изменения, конфликтующие с вашими, вы получите сообщение о наличии конфликтов. Чтобы разрешить конфликты:

  1. Убедитесь, что вы работаете с самой последней версией кода:

    repo sync .
    

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

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

    repo rebase .
    
  3. Разрешение конфликтов слияния. Если у вас нет предпочтительного метода разрешения конфликтов слияния, вы можете использовать git mergetool для ручного устранения конфликтов между файлами.

  4. Когда вы успешно устранили конфликтующие файлы, запустите эту команду, чтобы применить новые коммиты:

    git rebase --continue
    

Отправить изменение

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

После объединения вашей отправки вы можете посетить панель мониторинга непрерывной интеграции Android , чтобы отслеживать, когда ваши отправки интегрируются в дерево.