Skip to content
isdnetworks
Go back

다른 분기에 작업이 남아 있었다

기능 하나를 다시 만들자는 얘기가 나왔다. 예전에 시도하다 만 것이 있다고 했다. 주 경로를 뒤졌는데 없어서 없다고 답했다.

Table of contents

Open Table of contents

증상 — 다른 경로에 있었다

저장소 구조를 다시 봤다.

$ svn ls http://svn/repo/
branches/
tags/
trunk/

branches/ 아래를 봤다.

$ svn ls http://svn/repo/branches/
coupon-v2/
mobile-ui/
report-refactor/

coupon-v2 가 그 작업이었다. 두 달 전에 만들고 병합 안 한 채로 있었다.

주 경로만 보면 다른 경로의 작업을 못 본다. 내가 없다고 답한 것은 trunk 에 없다는 뜻이었는데 그렇게 전달되지 않았다.

어디를 봤는지 밝히지 않으면 그 답은 전체에 대한 답으로 읽힌다. 없다고 말하려면 무엇을 봤는지 함께 말해야 했다.

목록을 만들어 상태를 봤다

경로별로 마지막 변경 시각과 커밋 수를 봤다.

for b in $(svn ls http://svn/repo/branches/); do
  info=$(svn info "http://svn/repo/branches/$b" | grep "Last Changed Date")
  cnt=$(svn log -q "http://svn/repo/branches/$b" | grep -c "^r")
  echo "$b  $cnt건  $info"
done
coupon-v2/        18건  2014-07-14
mobile-ui/         3건  2014-03-02
report-refactor/  42건  2014-09-19

mobile-ui 는 3건이고 반년 전이라 시작만 하고 만 것이다. report-refactor 는 최근까지 활발해서 진행 중이다.

svn log 의 커밋 수와 svn infoLast Changed Date 두 숫자로 상태가 갈린다. 목록이 있으니 무엇을 확인해야 하는지가 정해졌다.

주 경로와 얼마나 다른지 봤다

각 경로가 주 경로에서 얼마나 떨어져 있는지 확인했다.

svn log --stop-on-copy http://svn/repo/branches/coupon-v2 | tail -5

--stop-on-copy 를 주면 그 경로를 만든 svn copy 리비전에서 로그가 끊긴다. 언제 갈라졌는지가 나오는데 두 달 전이었다.

svn diff http://svn/repo/trunk http://svn/repo/branches/coupon-v2 | grep "^Index:" | wc -l

바뀐 파일이 24개였다. 아직 안 합쳐진 리비전은 svn mergeinfo --show-revs eligible 로 나온다.

그동안 주 경로에 들어간 변경과 겹치는 부분이 있어서 그냥 병합하면 충돌한다. 세 가지를 놓고 봤다.

병합한다                충돌을 풀어야 한다. 두 달치라 양이 많다
참고만 하고 새로 만든다  그 코드를 보면서 다시 짠다
버린다                  필요 없으면 지운다

coupon-v2 는 두 번째로 했다. 그때와 요구가 달라져 그대로 병합해도 안 맞았다. mobile-ui 는 3건이고 내용이 없어 버렸고 report-refactor 는 진행 중이라 그대로 뒀다.

버리기로 한 것도 바로 지우지 않았다.

svn move http://svn/repo/branches/mobile-ui \
         http://svn/repo/tags/abandoned/mobile-ui-20140909 \
         -m "미완성 브랜치 보관. 3건, 2014-03 이후 변경 없음"

svn delete 대신 svn move 로 보관 자리에 옮겼다. SVN 은 이동도 이력에 남는 복사라 나중에 그 리비전으로 다시 꺼낼 수 있다.

쌓이지 않게 만든 기준

앞으로 안 쌓이게 기준을 뒀다.

활성    최근 2주 내 변경    그대로
정체    2주~2개월 무변경    담당자에게 확인
방치    2개월 이상 무변경   보관 또는 삭제

한 달에 한 번 목록을 뽑아 확인했다.

./tools/branch-status.sh

이걸 만들고 나서 오래된 것이 쌓이지 않았다.

만들 때 규칙도 정했다. 이름에 용도와 대상이 드러나게 하고 목적을 커밋 메시지에 적게 했다.

svn copy http://svn/repo/trunk http://svn/repo/branches/coupon-v2 \
  -m "쿠폰 기능 재작성. 담당: ○○, 예상 완료: 2014-08"

예상 완료를 적으니 지났을 때 확인 대상이 된다. --stop-on-copy 로 그 한 줄만 뽑으면 되니 목록에 붙이기도 쉬웠다.

정리


Share this post on:

Previous Post
판을 올렸더니 쓰던 기능이 없어졌다
Next Post
상품 속성이 너무 많았다