bencher run을 사용한 브랜치 선택
A Branch는 git
ref (즉, branch 이름 또는 태그)입니다.
bencher run
CLI 서브명령어를 사용할 때,
--branch
옵션 또는 BENCHER_BRANCH
환경 변수를 사용하여 Branch를 선택하세요.
기본적으로 모든 프로젝트는 main
Branch로 시작하며,
둘 중 어느 것도 지정되지 않은 경우 기본적으로 main
이 사용됩니다.
지속적 벤치마킹을 할 때, 즉 CI에서 벤치마킹을 할 때,
기존에 존재하는 Branch에서 branch
를 생성하거나 리베이스(rebase)하는 경우가 많습니다.
이를 Branch 시작 지점이라고 합니다.
Start Point는 특정 버전(가능하면 git
해시)에서의 다른 Branch입니다.
bencher run
CLI 서브명령어를 사용할 때,
--branch-start-point
옵션으로 Start Point를 선택하세요.
또한, --branch-start-point-hash
옵션을 사용하여 Start Point에 특정 git
해시를 지정할 수 있습니다.
모든 데이터와 임계값은 Start Point에서 복사됩니다.
드리프트를 방지하려면 --branch-reset
플래그를 사용하여 항상 Branch를 Start Point로 재설정하세요.
--branch <BRANCH>
분기를 선택하려면, --branch
옵션 또는 BENCHER_BRANCH
환경 변수에 분기의 이름, 슬러그 또는 UUID를 설정하세요.
지정된 값이 이름 또는 슬러그이고 분기가 아직 존재하지 않는 경우, 분기가 생성됩니다.
그러나, 지정된 값이 UUID인 경우 해당 분기가 이미 존재해야 합니다.
둘 다 지정된 경우, --branch
옵션은 BENCHER_BRANCH
환경 변수보다 우선합니다.
지정되지 않은 경우 Bencher CLI는 현재 git
브랜치를 찾으려고 시도합니다.
현재 작업 디렉토리에서 git
저장소를 찾기 시작합니다.
실패하면 부모 디렉토리로 이동하여 루트 디렉토리까지 모두 다시 시도합니다.
git
저장소를 찾으면 현재 짧은 브랜치 이름이 사용됩니다.
그러나 git
저장소를 찾지 못하면 기본 브랜치로 main
이 사용됩니다.
--branch-start-point <BRANCH>
지정된 브랜치 이름, 슬러그 또는 UUID를 branch
옵션의 시작 지점으로 사용하세요.
GitHub의 경우, 이는 주로 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"
),MY_BRANCH_ENV_VAR
가 정의되지 않은 경우에도bencher run
이 오류를 발생하지 않도록 하려면 큰따옴표를 사용하세요.
--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
가 존재하고 그 시작 지점이 해시 32aea434d751648726097ed3ac760b57107edd8b
에 있는 main
Branch라면
--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
를 리셋합니다.
--branch-start-point
옵션이 설정되면,
branch
는 지정된 시작 지점으로 리셋됩니다.
이는 통계적 지속적 벤치마킹 데이터의 드리프트를 방지하는 데 유용합니다.
시작 지점을 지정하지 않고 --branch-reset
을 사용하는 주요 사례는 상대적 지속적 벤치마킹입니다.
branch
가 존재하지 않고 시작 지점이 지정되지 않은 경우,branch
는 아무런 이력 데이터 없이 생성됩니다.branch
가 존재하고 시작 지점이 지정되지 않은 경우, 기존branch
는 이름이 변경되고 아카이브되며, 새로운branch
가 아무런 이력 데이터 없이 생성됩니다.branch
가 존재하지 않고 시작 지점이 지정된 경우,branch
는 시작 지점을 사용하여 생성됩니다.branch
가 존재하고 시작 지점이 지정된 경우, 기존branch
는 이름이 변경되고 아카이브되며, 새로운branch
가 시작 지점을 사용하여 생성됩니다.
새로운 branch
가 시작 지점을 사용하여 생성되는 경우,
지정된 시작 지점의 모든 데이터와 임계값이 복사됩니다.
그렇지 않은 경우, branch
는 아무런 이력 데이터 없이 생성됩니다.
예를 들어, feature_branch
가 시작 지점 없이 존재하는 경우
--branch feature_branch --branch-reset
을 사용하면:
- 기존
feature_branch
의 이름을feature_branch@archive-suffix
로 변경하고 이를 아카이브합니다. feature_branch
라는 이름의 새로운 브랜치를 생성합니다.bencher run
은 새로운feature_branch
를 사용하여 진행됩니다.
🐰 축하합니다! 브랜치 선택에 대해 모두 배웠습니다! 🎉