Перейти к основному содержимому

Изучение исходного кода V8

Этот документ объясняет, как локально изучить исходный код V8. Если вы просто хотите просмотреть код онлайн, используйте эти ссылки:

Использование Git

Git-репозиторий V8 находится по адресу https://chromium.googlesource.com/v8/v8.git, с официальным зеркалом на GitHub: https://github.com/v8/v8.

Не используйте просто git clone для этих URL-адресов! Если вы хотите собрать V8 из вашего репозитория, следуйте инструкциям ниже, чтобы всё настроить корректно.

Инструкции

  1. На Linux или macOS сначала установите Git, а затем depot_tools.

    На Windows следуйте инструкциям Chromium (для сотрудников Google, для всех остальных) для установки Git, Visual Studio, инструментов отладки для Windows, и depot_tools.

  2. Обновите depot_tools, выполнив следующее в вашем терминале/оболочке. На Windows это нужно делать в командной строке (cmd.exe), а не в PowerShell или других оболочках.

    gclient
  3. Для доступа с правами записи нужно настроить файл .netrc с паролем Git:

    1. Перейдите на страницу https://chromium.googlesource.com/new-password и войдите в свой коммиттерский аккаунт (обычно это @chromium.org). Примечание: создание нового пароля не отменяет автоматически все ранее созданные пароли. Убедитесь, что вы используете тот же email, что и в git config user.email.
    2. Посмотрите в большой серый блок с shell-командами. Вставьте эти строки в вашу оболочку.
  4. Теперь получите исходный код V8, включая все ветки и зависимости:

    mkdir ~/v8
    cd ~/v8
    fetch v8
    cd v8

После этого вы намеренно окажетесь в состоянии detached head.

При желании можно указать, как должны отслеживаться новые ветки:

git config branch.autosetupmerge always
git config branch.autosetuprebase always

Также можно создавать новые локальные ветки следующим образом (рекомендуется):

git new-branch fix-bug-1234

Обновление репозитория

Обновите текущую ветку с помощью git pull. Обратите внимание, что если вы не на ветке, git pull не сработает; вам нужно будет использовать git fetch вместо этого.

git pull

Иногда обновляются зависимости V8. Вы можете синхронизировать их с помощью:

gclient sync

Отправка кода на ревью

git cl upload

Коммит

Вы можете использовать флажок CQ на codereview для коммита (рекомендуется). См. также инструкции Chromium для CQ-флагов и устранения неполадок.

Если вам нужно больше trybots, чем по умолчанию, добавьте следующее в сообщение коммита на Gerrit (например, для добавления nosnap bot):

CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_nosnap_rel

Чтобы вручную выполнить слияние, обновите вашу ветку:

git pull --rebase origin

Затем выполните коммит с помощью

git cl land

Try jobs

Эта секция полезна только для участников проекта V8.

Создание try job из codereview

  1. Загрузите CL в Gerrit.

    git cl upload
  2. Проверьте CL, отправив try job на try bots следующим образом:

    git cl try
  3. Дождитесь завершения сборки try bots и получения электронного письма с результатом. Вы также можете проверить состояние try на вашем патче в Gerrit.

  4. Если применение патча не удается, либо выполните rebase вашего патча, либо укажите ревизию V8 для синхронизации:

git cl try --revision=1234

Создание try job из локальной ветки

  1. Закоммитьте изменения в локальной ветке репозитория.

  2. Проверьте изменение, отправив try job на try bots следующим образом:

    git cl try
  3. Дождитесь завершения сборки try bots и получения электронного письма с результатом. Примечание: в данный момент существуют проблемы с некоторыми репликами. Рекомендуется отправлять try jobs из codereview.

Полезные аргументы

Аргумент revision указывает try bot, какую ревизию кодовой базы использовать для применения ваших локальных изменений. Без параметра revision используется LKGR ревизия V8.

git cl try --revision=1234

Чтобы избежать выполнения try job на всех ботах, используйте флаг --bot со списком имён сборщиков, разделённых запятыми. Пример:

git cl try --bot=v8_mac_rel

Просмотр try server

git cl try-results

Ветки исходного кода

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

Возможно, вы захотите следовать версии V8, которую Chrome использует в своих стабильных (или бета) каналах, см. https://omahaproxy.appspot.com/.