Selección de Ramas con bencher run
A Branch es la referencia git
(es decir, el nombre de la rama o la etiqueta).
Al usar el subcomando CLI bencher run
,
selecciona una Branch con la opción --branch
o la variable de entorno BENCHER_BRANCH
.
Por defecto, todos los proyectos comienzan con una Branch main
, y
main
se utiliza por defecto si no se especifica.
Cuando Benchmarking Continuo, es decir, benchmarking en CI,
a menudo querrá crear o rebasar una branch
sobre una Branch ya existente.
Esto se llama un Punto de Inicio de Branch.
Un Punto de Inicio es otra Branch en una versión específica (y git
hash, si está disponible).
Al usar el subcomando CLI bencher run
,
selecciona un Punto de Inicio con la opción --start-point
.
Además, usa la opción --start-point-hash
para especificar un git
hash específico para el Punto de Inicio.
La cantidad de datos que se copian desde el Punto de Inicio se controla con la opción --start-point-max-versions
.
De manera similar, los Umbrales pueden copiarse desde el Punto de Inicio con el flag --start-point-clone-thresholds
.
Para prevenir desviaciones, utiliza el flag --start-point-reset
para siempre restablecer la Branch al Punto de Inicio.
--branch <BRANCH>
Para seleccionar una Branch, configure la opción --branch
o la variable de entorno BENCHER_BRANCH
al nombre, slug o UUID para la Branch.
Si el valor especificado es un nombre o slug y la Branch no existe ya, se creará para usted.
Sin embargo, si el valor especificado es un UUID, entonces la Branch debe existir ya.
Si ambos están especificados, la opción --branch
tiene prioridad sobre la variable de entorno BENCHER_BRANCH
.
Si ninguno está especificado, el Bencher CLI intenta encontrar la rama git
actual.
Comienza buscando un repositorio git
en el directorio de trabajo actual.
Si no tiene éxito, continúa con su directorio padre y reintenta hasta el directorio raíz.
Si se encuentra un repositorio git
, entonces se utiliza el nombre corto de la branch actual.
Sin embargo, si no se encuentra un repositorio git
, entonces main
se utiliza como Branch predeterminada.
--start-point <BRANCH>
Utilice el nombre del branch, slug o UUID especificado como el Punto de Inicio para la opción branch
.
Para GitHub, esto suele ser el branch base
para una Pull Request,
y para GitLab, esto suele ser el branch target
para una Merge Request.
El caso de uso principal para --start-point
es Benchmarking Continuo Estadístico.
- Si el Punto de Inicio especificado es una cadena vacía, entonces esta opción se ignora.
- Si
branch
no existe, será creado usando este Punto de Inicio. - Si
branch
existe y el Punto de Inicio es el mismo, entonces esta opción se ignora. - Si
branch
existe y el Punto de Inicio es diferente, se creará un nuevo Head para elbranch
usando este Punto de Inicio actualizado. - Si
branch
no existe y el Punto de Inicio no existe, entonces elbranch
se creará sin ningún dato histórico. - Si
branch
existe y el Punto de Inicio no existe, entonces esta opción se ignora.
Si un nuevo branch
se crea con un Punto de Inicio,
entonces los datos más recientes y opcionalmente los Umbrales del Punto de Inicio especificado se copian.
Consulte la opción --start-point-max-versions
y la opción --start-point-clone-thresholds
para más detalles.
Por ejemplo, si feature_branch
aún no existe, pero main
sí existe y tiene datos históricos.
Entonces usar --branch feature_branch --start-point main
haría lo siguiente:
- Crear un nuevo Branch llamado
feature_branch
- Copiar los datos más recientes de
main
afeature_branch
bencher run
procedería usandofeature_branch
🐰 Nota: Siempre que use variables de entorno, deben ir entre comillas dobles (es decir,
--start-point "$MY_BRANCH_ENV_VAR"
), si desea quebencher run
no genere un error cuandoMY_BRANCH_ENV_VAR
no esté definido.
--start-point-hash <HASH>
Utiliza el hash completo de Git especificado como el Punto de Inicio para la opción branch
. Esta opción requiere que se establezca la opción --start-point
.
- Si
branch
no existe, se creará desdestart-point
en el hash especificado. - Si
branch
existe y tantostart-point
como el hash especificado son iguales, entonces esta opción se ignora. - Si
branch
existe y ya sea elstart-point
o el hash especificado son diferentes, se creará un nuevo Head delbranch
desdestart-point
en el hash especificado. - Si
branch
no existe y elstart-point
no existe en el hash especificado, entonces elbranch
se creará sin ningún dato histórico. - Si
branch
existe y elstart-point
no existe en el hash especificado, entonces esta opción se ignora.
Si se crea un nuevo branch
con un Punto de Inicio,
entonces se copian todos los datos más recientes y opcionalmente los Umbrales desde el start-point
en el hash especificado.
Consulta la opción --start-point-max-versions
y la opción --start-point-clone-thresholds
para más detalles.
Por ejemplo, si feature_branch
existe con su Punto de Inicio siendo la Rama main
en el hash 32aea434d751648726097ed3ac760b57107edd8b
entonces al usar --branch feature_branch --start-point main --start-point-hash 68b12758509ca5e2b1e3983525625e532eb5f562
se:
- Eliminará el antiguo Head de
feature_branch
- Creará un nuevo Head de
feature_branch
- Copiará todos los datos más recientes desde
main
en el hash68b12758509ca5e2b1e3983525625e532eb5f562
al nuevo Head defeature_branch
bencher run
procederá entonces usando el nuevo Head defeature_branch
--start-point-max-versions <COUNT>
Utilice el número máximo de versiones históricas de rama especificadas para incluir desde el Punto de Inicio para la opción branch
. Cualquier versión más allá de este número será omitida. El valor predeterminado es 255
versiones. Esta opción requiere que se establezca la opción --start-point
.
Por ejemplo, si feature_branch
existe con su Punto de Inicio siendo la rama main
y main
tiene 300
versiones, entonces al usar --branch feature_branch --start-point main --start-point-max-versions 100
solo se incluirían las 100
versiones más recientes de main
en feature_branch
.
--start-point-clone-thresholds
Clona todos los Umbrales del Punto de Inicio para la opción branch
.
Esta bandera requiere que se configure la opción --start-point
.
- Si un Umbral no existe, se creará desde el Umbral del
start-point
. - Si un Umbral existe y es igual al Umbral del
start-point
, entonces ese Umbral se ignora efectivamente. - Si un Umbral existe y su modelo es diferente al Umbral del
start-point
, entonces el modelo antiguo será reemplazado por el modelo del Umbral delstart-point
. - Si un Umbral existe y el Umbral del
start-point
no existe, entonces el modelo del Umbral se elimina.
Por ejemplo, si feature_branch
existe con su Punto de Inicio siendo la Rama main
y main
tiene un Umbral para el Banco de Pruebas incorporado localhost
y la Medida latency
,
entonces usar --branch feature_branch --start-point main --start-point-clone-thresholds
crearía un nuevo Umbral para feature_branch
con el Banco de Pruebas localhost
y la Medida latency
.
--start-point-reset
Restablecer la branch
especificada.
Cuando se establece la opción --start-point
,
la branch
se restablecerá al Punto de Inicio especificado.
Esto es útil para prevenir la desviación en los datos de Benchmarking Continuo Estadístico.
El caso de uso principal para --start-point-reset
sin especificar un Punto de Inicio
es el Benchmarking Continuo Relativo.
- Si
branch
no existe y no se especifica un Punto de Inicio, labranch
se creará sin ningún dato histórico. - Si
branch
existe y no se especifica un Punto de Inicio, se creará un nuevo Head debranch
sin ningún dato histórico. - Si
branch
no existe y se especifica un Punto de Inicio, labranch
se creará utilizando el Punto de Inicio. - Si
branch
existe y se especifica un Punto de Inicio, se creará un nuevo Head debranch
utilizando el Punto de Inicio.
Si se crea una nueva branch
con un Punto de Inicio,
entonces todos los datos más recientes y opcionalmente los Umbrales del start-point
en el hash especificado se copian.
Consulta la opción --start-point-max-versions
y la opción --start-point-clone-thresholds
para más detalles.
Por ejemplo, si feature_branch
existe sin un Punto de Inicio
entonces al usar --branch feature_branch --start-point-reset
haría:
- Eliminar el antiguo
feature_branch
Head - Crear un nuevo Head de
feature_branch
sin datos históricos bencher run
procedería entonces usando el nuevo Head defeature_branch
🐰 ¡Felicidades! Has aprendido todo sobre la selección de ramas. 🎉