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

Глоссарий

Набор правок (patch set)

Браузер ведёт себя иначе, чем проект, из которого он вырос, именно из-за такого списка. Чего в списке нет, то до исходников не доходит, какие бы файлы ни лежали рядом.

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

Выполняется список, а не папка

Папка с правками это ещё не набор. Сборщик читает один список сверху вниз и накладывает ровно то, что в нём названо, а всё остальное в папке для него не существует.

  1. 1

    Сперва приходят новые файлы

    Наши собственные файлы, которых у проекта нет, распаковываются в дерево до того, как тронут существующее.

  2. 2

    Изменения ложатся по порядку

    Позднее изменение может опираться на то, что завело раннее, поэтому порядок несёт собственный смысл.

  3. 3

    Имени нет в списке значит его нет нигде

    Файл, лежащий рядом со списком, описывает место работы и сам по себе до дерева не доходит.

Насколько велик этот набор

Набор меняет 39 файлов дерева Chromium и приносит 10 своих собственных.

Оба числа считаются по списку, а не по папке, поэтому изменение, которое описано и не наложено, не считается вовсе.

Наложено значит снимается обратно

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

Поэтому спрашивают другое: снимается ли изменение с дерева целиком. Кусок, который не снимается, целиком там и не лежал.

  • Считается каждый кусок

    Изменение судится целиком, и один недостающий в дереве кусок валит его так же, как недостающий файл.

  • Пустой список это провал

    Нечего проверять обязано читаться как беда, а не как чистый итог, иначе проверка стережёт пустоту.

  • Заглушка останавливает сборку

    Пропущенное изменение оставило бы обычный браузер под нашим именем, и он сошёл бы за наш.

У файла один хозяин

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

  • Тонкая строка в чужом файле

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

  • Снять временный слой это тоже работа

    Когда движок берёт поверхность на себя, временный слой над ней убирают, а не оставляют спорить с движком.

Почему перенос и есть настоящая цена

Изменение дёшево, а пересборка нет. Каждая веха Chromium двигает строки, к которым изменение привязано, и каждая система компилируется заново целиком.

Поэтому набор держат маленьким, и каждая прибавка обязана заслужить в нём место. Поверхность, которую страница читает редко, этого места не стоит.

Часто путают с этим

  • Ключ запуска

    Ключ меняет то, как стартует готовый браузер, и стоит на виду в командной строке процесса.

  • Расширение

    Расширение идёт внутри уже собранного браузера и достаёт только до того, что браузер ему отдал.

  • Настройка сборки

    Настройка выбирает, как исходники скомпилировать. Изменение выбирает, что в исходниках написано.

Чего это не делает

  • Это не меняет браузер, который у вас уже стоит. Работа идёт до компиляции, поэтому достаётся она только тому, что собрано из этих исходников.
  • Это не закрывает поверхность, которая не названа. Чего нет в списке, того нет и в браузере, что бы ни описывал соседний файл.
  • Это не переносит себя на новую веху. Новым исходникам набор накладывают заново, а изменение, которое не ложится, останавливает сборку, а не выпадает молча.
  • Это не прячет настоящую опись шрифтов от поиска по уникальному имени. Замер там урезан списком профиля, а закрыть сам поиск можно только новым изменением.

Проверить

За каждой строкой выше файл, который можно открыть, и стенд, который держит её честной.

Список, который сборщик выполняет по порядку
engine/patches/series
Заглушка в списке отвергается, а не пропускается
apps/desktop/test/engine-patches-real.js
Изменение считается лёгшим, только если дерево отдаёт его обратно целиком
engine/scripts/сверка-правок.sh
Каждое объявленное умение снимается из правленого дерева
engine/scripts/опись-умений.js · apps/desktop/test/опись-умений-снимается.js

Вопросы

Почему не поменять браузер после сборки?
Потому что ответ, который читает страница, рождается в скомпилированном коде. Значение, подменённое над этим кодом, само становится значением, и страница, спросившая дважды, получает два рассказа.
Как узнать, что изменение действительно легло?
Каждое умение, которое движок объявляет, снимается из правленого дерева по признаку, оставленному самим изменением. Умение без признака не объявляется вовсе.
Что будет, если изменение не ложится?
Сборка останавливается на этом месте. Пойти дальше без него значит собрать браузер, похожий на наш, и показать сайту настоящую машину.
Больший набор значит лучший браузер?
Нет. Каждое изменение приходится переносить на новые исходники при каждой вехе, поэтому набор растёт только там, где страница читает разницу.
Можно посмотреть список самому?
Можно. Это обычный текстовый файл в хранилище, и блок проверки ниже называет его вместе со стендом, который держит заглушки снаружи.

Посмотрите набор в сборке, которая едет

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