전체 글
약 1분

출시한 변경이 develop에는 없었습니다

물타기 계산기 v1.0.8이 main에서 개발되고 출시돼 develop에는 변경이 빠졌습니다. 이력을 다시 합치고 출시 뒤 브랜치 차이를 검사하게 했습니다.

#git #브랜치 #출시 #develop #main

들어가며

물타기 계산기 v1.0.8을 출시한 다음 날, develop에서 이력 항목을 눌렀더니 예전처럼 상세 화면이 열렸습니다. 전날 바꿔 출시한 동작이 다음 작업의 기준 브랜치에는 없었습니다.

8월 26일 작업한 기능 브랜치는 main에서 갈라져 다시 main으로 합쳐졌습니다. 출시 자체는 끝났지만, develop은 그 변경을 받지 못했습니다.

두 브랜치가 맡은 일이 달랐습니다

이 저장소에서는 기능 브랜치를 develop에서 만들고, 리뷰를 마치면 다시 develop에 합치도록 정해두었습니다. main은 출시 때 develop의 변경을 받는 브랜치였습니다. main에 푸시하면 CI가 Play 내부 테스트 트랙에 번들을 올렸습니다.

v1.0.8은 기능 브랜치를 쓰기는 했습니다. 다만 시작도 돌아간 곳도 main이었습니다. main에 직접 커밋하지 않는 것만 지키고, 정작 다음 작업을 시작할 develop에는 변경을 남기지 않았습니다.

두 브랜치의 차이를 확인한 뒤 main을 develop에 합쳤습니다.

Merge origin/main into develop — v1.0.8 이 develop 을 거치지 않았다

develop도 출시된 변경을 포함하게 됐습니다. 빠져 있던 v1.0.8 태그는 다음 출시 때 보충했습니다.

출시 뒤에 남은 커밋을 확인합니다

작업을 시작할 때는 기능 브랜치를 만들기 전에 현재 브랜치를 확인하도록 했습니다.

git rev-parse --abbrev-ref HEAD

여기서 develop인지 확인하고 새 브랜치를 만듭니다. 돌아올 때 병합 대상을 잘못 고를 수도 있어서 출시 뒤 검사도 추가했습니다.

branch-sync.sh는 main에만 있고 develop에는 없는 커밋을 저장소마다 확인합니다. 커밋 훅에서도 이 검사를 부르게 했습니다.

마치며

빠진 변경을 develop에 합쳤고, 작업 시작 때는 현재 브랜치를, 출시 뒤에는 두 브랜치의 차이를 확인하도록 했습니다.

다만 --no-ff로 정상 출시해도 머지 커밋 하나는 main에만 생깁니다. 검사에 차이가 잡히면 기능 코드가 빠졌는지, 출시 머지 커밋만 남았는지 이력을 읽어야 합니다. 출시 후 develop에 다시 합치는 절차도 함께 넣었습니다.