Selección de Ramas con bencher run
A Branch es la referencia de 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
.
De forma predeterminada, todos los proyectos comienzan con una Branch main
, y
main
se usa por defecto si no se especifica ninguna.
Cuando Benchmarking Continuo, es decir, benchmarking en CI,
a menudo querrás crear o rebasar una branch
en una Branch ya existente.
Esto se llama un Punto de Inicio de Branch Start Point.
Un Start Point 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 --branch-start-point
.
Además, usa la opción --branch-start-point-hash
para especificar un git
hash específico para el Punto de Inicio.
Todos los datos y Umbrales se copian del Punto de Inicio.
Para evitar la deriva, usa la bandera --branch-reset
para siempre reiniciar la Branch al 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 Branch especificado, slug o UUID como el Punto de Inicio para la opción branch
.
Para GitHub, esto es usualmente la base
branch para un Pull Request,
y para GitLab, esto es usualmente la target
branch para un 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
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, la versión antigua debranch
será renombrada y archivada, y una nuevabranch
será creada usando este Punto de Inicio actualizado. - Si
branch
no existe y el Punto de Inicio no existe, entonces labranch
será creada sin ningún dato histórico. - Si
branch
existe y el Punto de Inicio no existe, entonces esta opción se ignora.
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
no existe aún, pero main
sí existe y tiene datos históricos.
Entonces, usar --branch feature_branch --branch-start-point main
haría:
- Crear una nueva Branch llamada
feature_branch
- Copiar todos los datos y Umbrales de
main
afeature_branch
bencher run
procedería usandofeature_branch
🐰 Nota: Siempre que use variables de entorno, deben estar entre comillas dobles (es decir,
--branch-start-point "$MY_BRANCH_ENV_VAR"
), si desea quebencher run
no arroje un error cuandoMY_BRANCH_ENV_VAR
no esté definida.
--branch-start-point-hash <HASH>
Usa el hash completo de Git especificado como el Punto de Inicio para la opción branch
.
Esta opción requiere que la opción --branch-start-point
esté configurada.
- Si
branch
no existe, se creará desdebranch-start-point
en el hash especificado. - Si
branch
existe y tantobranch-start-point
como el hash especificado son los mismos, entonces esta opción se ignorará. - Si
branch
ya existe y cualquiera debranch-start-point
o el hash especificado son diferentes, la versión antigua debranch
será renombrada y archivada, y se creará un nuevobranch
desdebranch-start-point
en el hash especificado. - Si
branch
no existe ybranch-start-point
no existe en el hash especificado, entonces elbranch
se creará sin ningún dato histórico. - Si
branch
existe ybranch-start-point
no existe en el hash especificado, entonces esta opción se ignorará.
Si se crea un nuevo branch
con un Punto de Inicio,
todos los datos y Umbrales del branch-start-point
en el hash especificado se copiarán.
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 lo siguiente:
- Renombrar el viejo
feature_branch
afeature_branch@archive-suffix
y archivarlo - Crear una nueva Rama llamada
feature_branch
- Copiar todos los datos y Umbrales de
main
en el hash68b12758509ca5e2b1e3983525625e532eb5f562
a la nuevafeature_branch
bencher run
procederá usando la nuevafeature_branch
--branch-reset
Restablecer la branch
especificada.
Cuando la opción --branch-start-point
está configurada,
la branch
se restablecerá al Punto de Inicio especificado.
Esto es útil para prevenir desviaciones en los datos de Benchmarking Continuo Estadístico.
El caso principal de uso para --branch-reset
sin especificar un Punto de Inicio
es Benchmarking Continuo Relativo.
- Si la
branch
no existe y no se especifica un Punto de Inicio, labranch
será creada sin ningún dato histórico. - Si la
branch
existe y no se especifica un Punto de Inicio, la versión antigua debranch
será renombrada y archivada y una nuevabranch
será creada sin ningún dato histórico. - Si la
branch
no existe y se especifica un Punto de Inicio, labranch
será creada usando el Punto de Inicio. - Si la
branch
existe y se especifica un Punto de Inicio, la versión antigua debranch
será renombrada y archivada y una nuevabranch
será creada usando el Punto de Inicio.
Si una nueva branch
es creada con un Punto de Inicio,
entonces todos los datos y Umbrales del Punto de Inicio especificado se copiarán.
De lo contrario, la branch
será creada sin ningún dato histórico.
Por ejemplo, si feature_branch
existe sin un Punto de Inicio
entonces usar --branch feature_branch --branch-reset
haría:
- Renombrar la antigua
feature_branch
afeature_branch@archive-suffix
y archivarla - Crear una nueva Rama llamada
feature_branch
bencher run
procederá usando la nuevafeature_branch
🐰 ¡Felicidades! Has aprendido todo sobre la selección de ramas. 🎉