Выбор ветки с использованием bencher run
Ветвь является ссылкой git
(то есть именем ветки или тегом).
При использовании подкоманды CLI bencher run
выберите Ветвь с помощью опции --branch
или переменной окружения BENCHER_BRANCH
.
По умолчанию все проекты начинаются с ветки main
, и
main
используется по умолчанию, если другая ветвь не указана.
При непрерывном бенчмаркинге, то есть при выполнении бенчмаркинга в CI,
вы часто захотите создать или переместить ветвь
в существующую Ветвь.
Это называется Точкой Начала Ветви Start Point.
Точка Начала — это другая Ветвь на определенной версии (и git
хэш, если доступно).
При использовании подкоманды CLI bencher run
,
выберите Точку Начала с помощью опции --branch-start-point
.
Дополнительно используйте опцию --branch-start-point-hash
для указания определенного git
хэша для Точки Начала.
Все данные и Пороги копируются из Точки Начала.
Чтобы избежать расхождений, используйте флаг --branch-reset
для всегда сброса Ветви к Точке Начала.
--branch <BRANCH>
Чтобы выбрать ветку, установите опцию --branch
или переменную окружения BENCHER_BRANCH
в имя, слаг или UUID нужной ветки.
Если указанное значение является именем или слагом и ветка ещё не существует, она будет создана для вас.
Однако, если указанное значение является UUID, тогда ветка должна уже существовать.
Если указаны оба параметра, опция --branch
имеет приоритет над переменной окружения BENCHER_BRANCH
.
Если ни одно из условий не указано, CLI Bencher пытается найти текущую ветку git
.
Сначала он ищет репозиторий git
в текущем рабочем каталоге.
Если это не удаётся, он переходит к родительскому каталогу и повторяет попытку, поднимаясь до корневого каталога.
Если репозиторий git
найден, то используется имя текущей короткой ветки.
Однако, если репозиторий git
не найден, то в качестве ветки по умолчанию используется main
.
--branch-start-point <BRANCH>
Используйте указанное имя ветки, слаг или UUID в качестве начальной точки для опции branch
.
Для GitHub это обычно ветка base
для Pull Request,
а для GitLab это обычно целевой ветка для Merge Request.
Основной сценарий использования --branch-start-point
- Статистическое непрерывное бенчмаркирование.
- Если указанная начальная точка является пустой строкой, то эта опция игнорируется.
- Если
branch
не существует, он будет создан с использованием этой начальной точки. - Если
branch
существует и начальная точка совпадает, то эта опция игнорируется. - Если
branch
существует и начальная точка отличается, старая версияbranch
будет как переименована, так и архивирована, и новаяbranch
будет создана с использованием этой обновленной начальной точки. - Если
branch
не существует и начальная точка не существует, тоbranch
будет создан без каких-либо исторических данных. - Если
branch
существует и начальная точка не существует, то эта опция игнорируется.
Если новая branch
создана с начальной точкой,
то все данные и пороги из указанной начальной точки будут скопированы.
Например, если feature_branch
еще не существует, но main
существует и имеет исторические данные.
Тогда использование --branch feature_branch --branch-start-point main
приведет к:
- Созданию новой ветки с именем
feature_branch
- Копированию всех данных и порогов из
main
вfeature_branch
bencher run
будет продолжать использоватьfeature_branch
🐰 Примечание: При использовании переменных окружения их следует заключать в двойные кавычки (например,
--branch-start-point "$MY_BRANCH_ENV_VAR"
), если вы хотите, чтобыbencher run
не выдал ошибку, когдаMY_BRANCH_ENV_VAR
не определена.
--branch-start-point-hash <HASH>
Используйте указанный полный Git хеш в качестве Начальной Точки для опции branch
.
Эта опция требует установки опции --branch-start-point
.
- Если
branch
не существует, он будет создан изbranch-start-point
на указанном хеше. - Если
branch
существует, и какbranch-start-point
, так и указанный хеш совпадают, то эта опция игнорируется. - Если
branch
уже существует и либоbranch-start-point
, либо указанный хеш различаются, старая версияbranch
будет переименована и заархивирована, и новыйbranch
будет создан изbranch-start-point
на указанном хеше. - Если
branch
не существует иbranch-start-point
не существует на указанном хеше, тоbranch
будет создан без каких-либо исторических данных. - Если
branch
существует иbranch-start-point
не существует на указанном хеше, то эта опция игнорируется.
Если новый branch
создается с Начальной Точкой,
то все данные и Пороги из branch-start-point
на указанном хеше копируются.
Например, если существует feature_branch
с Начальной Точкой на Ветке main
на хеше 32aea434d751648726097ed3ac760b57107edd8b
,
то использование --branch feature_branch --branch-start-point main --branch-start-point-hash 68b12758509ca5e2b1e3983525625e532eb5f562
выполнит следующие действия:
- Переименует старый
feature_branch
вfeature_branch@archive-suffix
и заархивирует его - Создаст новую Ветку с именем
feature_branch
- Скопирует все данные и Пороги из
main
на хеше68b12758509ca5e2b1e3983525625e532eb5f562
в новыйfeature_branch
bencher run
будет выполняться с использованием новогоfeature_branch
--branch-reset
Сброс указанной ветки
.
Когда опция --branch-start-point
установлена,
ветка
будет сброшена до указанной Начальной Точки.
Это полезно для предотвращения отклонений в данных Статистического Непрерывного Тестирования.
Основной случай использования --branch-reset
без указания Начальной Точки —
Относительное Непрерывное Тестирование.
- Если
ветка
не существует и Начальная Точка не указана,ветка
будет создана без исторических данных. - Если
ветка
существует и Начальная Точка не указана, старая версияветки
будет переименована и заархивирована, и будет создана новаяветка
без исторических данных. - Если
ветка
не существует и указана Начальная Точка,ветка
будет создана, используя Начальную Точку. - Если
ветка
существует и указана Начальная Точка, старая версияветки
будет переименована и заархивирована, и будет создана новаяветка
, используя Начальную Точку.
Если новая ветка
создается с Начальной Точкой,
то все данные и Пороги из указанной Начальной Точки копируются.
В противном случае, ветка
будет создана без исторических данных.
Например, если feature_branch
существует без Начальной Точки,
то использование --branch feature_branch --branch-reset
приведет к:
- Переименованию старой
feature_branch
вfeature_branch@archive-suffix
и архивированию - Созданию новой Ветки с именем
feature_branch
bencher run
будет продолжен с использованием новойfeature_branch
🐰 Поздравляем! Вы узнали все о выборе ветки! 🎉