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

Изучение исходного кода 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/.