stack sync는 부모-자식 관계를 기반으로 위상 정렬(topological order) 순서대로 rebase를 수행합니다.
동작 방식
parsec start PROJ-1 # main 기반
parsec start PROJ-2 --on PROJ-1 # PROJ-1 브랜치 기반
parsec start PROJ-3 --on PROJ-2 # PROJ-2 브랜치 기반
parsec stack sync # 아래 순서로 자동 rebase
# 1. PROJ-1 → origin/main 위로 rebase
# 2. PROJ-2 → PROJ-1 브랜치 위로 rebase
# 3. PROJ-3 → PROJ-2 브랜치 위로 rebase
루트부터 BFS로 순회하면서 각 자식을 부모 브랜치 위로 rebase하는 구조입니다. main이 업데이트되었으면 루트부터 변경사항이 자연스럽게 전파됩니다.
## merge 순서가 바뀌는 경우
현재는 스택의 아래쪽(부모)부터 머지하는 것을 전제로 설계되어 있습니다. 만약 중간 PR이 먼저 머지되면, 해당 노드의 자식들이 다음 stack sync 때 부모를 찾지 못해 실패하게 됩니다. 이 경우
수동으로 base를 재지정해야 합니다.
## 충돌 발생 시
rebase 중 충돌이 나면 해당 브랜치만 rebase --abort로 롤백하고 나머지는 계속 진행합니다. 어떤 티켓이 성공/실패했는지 결과를 테이블로 보여주기 때문에, 실패한 것만 수동으로 해결하면 됩니다.
관심 가져주셔서 감사합니다!
stack sync는 부모-자식 관계를 기반으로 위상 정렬(topological order) 순서대로 rebase를 수행합니다.동작 방식