본문 바로가기
푸닥거리

svnversion

by ┌(  ̄∇ ̄)┘™ 2022. 4. 15.
728x90

SVN(Subversion)에서 svnversion 명령은 작업 사본(working copy)의 리비전 상태를 한 줄로 요약해 줍니다. 빌드 스크립트에서 배포 버전을 태깅하거나, 작업 사본이 깨끗한지 확인할 때 유용합니다. 그런데 출력에 4123:4168MS 같은 기호가 붙으면 무슨 뜻인지 헷갈립니다. 각 표기를 정리합니다.

출력 표기 해석

출력 예 의미 설명
4168 단순 리비전 모든 파일이 같은 리비전 (깨끗한 상태)
4123:4168 mixed revision 혼합 리비전 — 파일마다 리비전이 다름(선택적 업데이트 등)
4168M modified 수정된 작업 사본 (커밋 안 된 변경 있음)
4123S switched 전환된 작업 사본 (일부가 다른 URL로 switch됨)
4123P partial 부분 작업 사본 (sparse checkout으로 듬성듬성 받음)
4123:4168MS 혼합+수정+전환 여러 상태가 겹친 경우 기호가 함께 붙음

svn info와의 차이

비슷해 보이는 svn info와 목적이 다릅니다.

  • svn info — 작업 사본의 상세 메타데이터(URL, 마지막 커밋 리비전 등)를 여러 줄로 출력. 사람이 읽는 용도.
  • svnversion — 전체 작업 사본의 리비전 상태를 한 줄로 압축. 스크립트/자동화에 적합. 특히 혼합 리비전(mixed)을 한눈에 보여준다는 점이 핵심 — svn info로는 파악하기 어렵습니다.

그래서 "현재 작업 사본 전체를 대표하는 리비전으로 태깅"하려면 svnversion이 정답입니다.

활용 예

# 빌드에 리비전 정보 심기
svnversion > build_version.txt

# 깨끗한 상태(M/S 없음)인지 확인 후 배포
if svnversion | grep -qE "[MS]"; then
  echo "작업 사본에 미커밋 변경/전환 있음 — 배포 중단"
  exit 1
fi

참고로 SVN 후속인 Git에서는 git describegit rev-parse HEAD가 유사한 역할을 하며, git status --porcelain이 "깨끗한지" 확인에 해당합니다.

 

what is the difference b/w svn info and svnversion

I need to tag my project with the latest revision(working copy).I thought about using svn info command,but I am doing selective updates so what i have is a working copy with mixed revision and while

stackoverflow.com

728x90

댓글