Selección de Ramas con bencher run
Una Rama es la referencia git
(es decir, nombre de la rama o etiqueta).
Al usar el subcomando de la interfaz de línea de comandos bencher run
,
selecciona una Rama con la opción --branch
o la variable de entorno BENCHER_BRANCH
.
Por defecto, todos los proyectos comienzan con una Rama main
, y
main
se utiliza por defecto si no se especifica ninguna.
Cuando se realiza Benchmarking Continuo, es decir, benchmarking en CI,
a menudo querrás crear o rebase una branch
en una Rama ya existente.
Esto se llama un Punto de Inicio de Rama Start Point.
Un Punto de Inicio es otra Rama en una versión específica (y hash git
, si está disponible).
Al usar el subcomando de la interfaz de línea de comandos bencher run
,
selecciona un Punto de Inicio con la opción --branch-start-point
.
Adicionalmente, utiliza la opción --branch-start-point-hash
para especificar un hash git
específico para el Punto de Inicio.
Todos los datos y Umbrales se copian desde el Punto de Inicio.
--branch <BRANCH>
Para seleccionar una Rama, establezca la opción --branch
o la variable de entorno BENCHER_BRANCH
al nombre, slug o UUID de la Rama.
Si el valor especificado es un nombre o slug y la Rama no existe previamente, se creará para usted.
Sin embargo, si el valor especificado es un UUID, entonces la Rama ya debe existir.
Si ambos están especificados, la opción --branch
tiene precedencia sobre la variable de entorno BENCHER_BRANCH
.
Si no se especifica ninguno, el CLI de Bencher intenta encontrar la rama actual de git
.
Comienza buscando un repositorio de git
en el directorio de trabajo actual.
Si no tiene éxito, continúa con el directorio padre y reintentar hasta llegar al directorio raíz.
Si se encuentra un repositorio de git
, entonces se usa el nombre corto de la rama actual.
Sin embargo, si no se encuentra un repositorio de git
, entonces main
se utiliza como la rama predeterminada.
--branch-start-point <BRANCH>
Utilice el nombre de la Rama, slug o UUID especificado como el Punto de Inicio para la opción branch
.
Para GitHub, esto suele ser la base
branch para una Pull Request,
y para GitLab, esto suele ser la branch
objetivo para una Merge Request.
El caso de uso principal para --branch-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, se creará usando este Punto de Inicio. - Si
branch
ya existe y el Punto de Inicio es el mismo, entonces esta opción se ignora. - Si
branch
ya existe y el Punto de Inicio es diferente, la versión antigua debranch
será renombrada y se creará una nuevabranch
usando este Punto de Inicio actualizado.
Si se crea una nueva branch
con un Punto de Inicio,
entonces todos los datos y Umbrales del Punto de Inicio especificado se copian.
Por ejemplo, si feature_branch
aún no existe, pero main
existe y tiene datos históricos.
Entonces, usando --branch feature_branch --branch-start-point main
se:
- Crearía una nueva Rama llamada
feature_branch
- Copiaría todos los datos y Umbrales de
main
afeature_branch
bencher run
procedería usandofeature_branch
🐰 Nota: Siempre que se utilicen variables de entorno, se deben envolver entre comillas dobles (es decir,
--branch-start-point "$MY_BRANCH_ENV_VAR"
), si desea quebencher run
no falle cuandoMY_BRANCH_ENV_VAR
esté indefinido.
--branch-start-point-hash <HASH>
Utiliza el hash completo de Git especificado como Punto de Inicio para la opción branch
.
Esta opción requiere que se establezca la opción --branch-start-point
.
- Si
branch
no existe, se creará a partir debranch-start-point
en el hash especificado. - Si
branch
ya existe y tantobranch-start-point
como el hash especificado son iguales, entonces esta opción se ignora. - Si
branch
ya existe y tanto elbranch-start-point
como el hash especificado son diferentes, la antigua versión debranch
se renombrará y se creará una nuevabranch
a partir debranch-start-point
en el hash especificado.
Si se crea una nueva branch
con un Punto de Inicio,
entonces todos los datos y Umbrales desde el branch-start-point
en el hash especificado se copian.
Por ejemplo, si feature_branch
existe con su Punto de Inicio siendo la rama main
en el hash 32aea434d751648726097ed3ac760b57107edd8b
entonces usar --branch feature_branch --branch-start-point main --branch-start-point-hash 68b12758509ca5e2b1e3983525625e532eb5f562
haría:
- Renombrar la antigua
feature_branch
afeature_branch@main/hash/32aea434d751648726097ed3ac760b57107edd8b
- Crear una nueva rama nombrada
feature_branch
- Copiar todos los datos y Umbrales desde
main
en el hash68b12758509ca5e2b1e3983525625e532eb5f562
a la nuevafeature_branch
bencher run
procedería utilizando la nuevafeature_branch
--branch-reset
Restablece la branch
especificada.
El principal caso de uso para --branch-reset
es el Benchmarking Continuo Relativo.
Esta bandera es incompatible con la opción --branch-start-point
.
- Si
branch
no existe, será creada. - Si
branch
ya existe, la versión antigua debranch
será renombrada y se creará una nuevabranch
.
Cuando se crea una nueva branch
, esta no tendrá datos históricos ni Umbrales.
Por ejemplo, si feature_branch
existe sin un Punto Inicial
entonces usar --branch feature_branch --branch-reset
haría:
- Renombrar la antigua
feature_branch
afeature_branch@detached
- Crear una nueva Branch llamada
feature_branch
bencher run
procedería usando la nuevafeature_branch
🐰 ¡Felicidades! Has aprendido todo sobre la selección de ramas. 🎉