← 전체 기능

검증·리뷰v0.3.0에서 사용 가능

확인한 뒤 반영

oah land --check는 리뷰한 head를 그대로 반영해도 되는지 판단하고 리스, 의도, 리뷰, 게이트, 영향, 필수 검사, fast-forward, 비밀 검사, CI마다 한 줄씩 보여 준다. oah land --merge는 모든 검사를 다시 돌리고 사용자에게 확인을 받은 뒤에만 원격 기본 브랜치를 정확히 그 head로 fast-forward한다.

필요한 상황

수렴한 리뷰, 통과한 CI, 비밀 검사 없이 병합하는 실수는 쉽게 일어나고, 에이전트가 스스로 push하거나 병합해서는 안 된다.

동작 방식

  1. oah land --check --task T가 lease, intent, review, gates, impact, required-checks, fast-forward, scan, ci 검사마다 한 줄씩 보여 준다.
  2. gh로 HEAD의 check run과 commit status를 읽는다. 최신 결과가 모두 성공이어야 하고(check run은 neutral·skipped도 허용), 설정된 필수 검사마다 결과가 있어야 한다.
  3. oah land --merge --task T는 모든 검사를 다시 돌리고 y 입력으로 확인을 받은 뒤, 원격 기본 브랜치가 방금 확인한 커밋과 여전히 같을 때만 정확히 HEAD로 fast-forward한다.
  4. 다른 사람이 먼저 반영했다면 아무것도 push하지 않는다. 가져와서 다시 평가한 뒤 다시 시도한다.
  5. gh가 없거나 결과가 없거나 필수 검사 결과가 빠지면 CI는 unverified이고 기본적으로 반영을 막는다(OAH_LAND_CI_UNVERIFIED). 두 명령에 --accept-unverified-ci "<reason>"을 붙이면 head마다 예외를 기록하지만 CI는 unverified로 남고 통과로 세지 않는다.

예제

검사한 뒤 확인을 거쳐 반영한다(따라 하기 예제 9단계).

oah land --check --task hello-name
oah land --merge --task hello-name

요구 사항

  • 비밀 검사용 gitleaks. 없으면 scan 줄이 OAH_LAND_SCAN_REQUIRED로 실패하고 아무것도 push하지 않는다.
  • CI 결과를 읽기 위해 로그인한 gh.
  • URL이나 절대 경로인 원격. 상대 경로 원격은 반영이 거절한다.

한계와 복구

  • CI 실패(OAH_LAND_CI_FAILED)나 진행 중·조회 불가(OAH_LAND_CI_PENDING)는 반영을 막고, 어떤 예외로도 이것과 다른 실패한 검사를 우회하지 못한다.
  • 수렴한 리뷰 뒤에 커밋하면 새 라운드가 필요하다(OAH_LAND_REVIEW_REQUIRED).
  • [land] 정책은 대상 브랜치에 커밋된 .oah/config.toml이 정한다. 작업 head에서 느슨하게 하면 OAH_LAND_POLICY_LOOSENED로 거절한다.
  • GitHub 브랜치 규칙은 따로이며 그대로 적용된다.

원문 문서

관련 기능