Изучение исходного кода V8
Этот документ объясняет, как локально изучить исходный код V8. Если вы просто хотите просмотреть код онлайн, используйте эти ссылки:
Использование Git
Git-репозиторий V8 находится по адресу https://chromium.googlesource.com/v8/v8.git, с официальным зеркалом на GitHub: https://github.com/v8/v8.
Не используйте просто git clone
для этих URL-адресов! Если вы хотите собрать V8 из вашего репозитория, следуйте инструкциям ниже, чтобы всё настроить корректно.
Инструкции
-
На Linux или macOS сначала установите Git, а затем
depot_tools
.На Windows следуйте инструкциям Chromium (для сотрудников Google, для всех остальных) для установки Git, Visual Studio, инструментов отладки для Windows, и
depot_tools
. -
Обновите
depot_tools
, выполнив следующее в вашем терминале/оболочке. На Windows это нужно делать в командной строке (cmd.exe
), а не в PowerShell или других оболочках.gclient
-
Для доступа с правами записи нужно настроить файл
.netrc
с паролем Git:- Перейдите на страницу https://chromium.googlesource.com/new-password и войдите в свой коммиттерский аккаунт (обычно это
@chromium.org
). Примечание: создание нового пароля не отменяет автоматически все ранее созданные пароли. Убедитесь, что вы используете тот же email, что и вgit config user.email
. - Посмотрите в большой серый блок с shell-командами. Вставьте эти строки в вашу оболочку.
- Перейдите на страницу https://chromium.googlesource.com/new-password и войдите в свой коммиттерский аккаунт (обычно это
-
Теперь получите исходный код 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
-
Загрузите CL в Gerrit.
git cl upload
-
Проверьте CL, отправив try job на try bots следующим образом:
git cl try
-
Дождитесь завершения сборки try bots и получения электронного письма с результатом. Вы также можете проверить состояние try на вашем патче в Gerrit.
-
Если применение патча не удается, либо выполните rebase вашего патча, либо укажите ревизию V8 для синхронизации:
git cl try --revision=1234
Создание try job из локальной ветки
-
Закоммитьте изменения в локальной ветке репозитория.
-
Проверьте изменение, отправив try job на try bots следующим образом:
git cl try
-
Дождитесь завершения сборки 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/.