서버버전을 사용하여 소스코드 checkout 및 commit은 많이 하는데 왠지 branch를 만들거나 merge하려니 이거 좀 복잡한 생각이 들때가 있고 메뉴얼을 읽어 봐도 북잡하기만 하다.
그러나 Branch의 기능은 전제 Team의 개발에 영향을 주지 않고 혼자서 (또는 소규모 팀별로) 프로그램을 고치고 테스트 하고 잘 될때 head로 보낼때 아주 유용하게 사용할 수 있다. 서버버전을 사용하면 그 방법도 간단하다.
우선 Checkout 부터 한번 해보자. (Subversion 저장소-
https://coolproj.googlecode.com/
)
svn co
https://coolproj.googlecode.com/
coolproj
cd colproj
[작업]
svn ci -m"작업 잘 했음. 무엇 무엇 고쳤음. 무슨무슨 버그 잡았음"
이렇게 하는 것이 보통 그냥 branch같은거 사용하지 않고 하는 작업인데 여기서 branch만들기는 너무 간단하다.
svn copy coolproj
https://coolproj.googlecode.com/
이렇게 하면 끝이난다.
그런다음 이 새로운 branch 를 checkout 해서 작업을 하면 된다.
svn co
https://coolproj.googlecode.com/
coolproj-branch
그냥 이전의 coolproj 라는 workspace를 사용하고 싶으면 살짝 'switch' 해주면 된다.
cd dupbug/
svn switch
https://coolproj.googlecode.com/
[작업]
svn ci -m"작업 잘 했음. 무엇 무엇 고쳤음. 무슨무슨 버그 잡았음"
이렇게 checkin 된 코드는 이전에 생성된 branch에 남아 있게 된다.
여러번 작업을 한다음 이 branch가 충분히 훌륭한 관계로 trunk에 보내고 싶다면 merge하면 된다. 우선 바로 merge하기 전에 (trunk가 변했을수도 있으므로) 몇가지 확인 해보자. 우선 --dry-run (예행연습)
svn merge --dry-run
https://coolproj.googlecode.com/
https://coolproj.googlecode.com/
그러면 무엇이 바뀌는 것인지 보여 준다.
구체적으로 무엇이 달라졌는지 line-by-line으로 보고 싶으면 diff를 사용한다. (주의 URL의 순서가 merge때와 다르게 바뀌었다)
svn diff
https://coolproj.googlecode.com/
\
https://coolproj.googlecode.com/
마지막으로 모든것이 좋아 보여 merge를 하려면 앞에서 dry-run을 하면 된다.
svn merge --dry-run
https://coolproj.googlecode.com/
https://coolproj.googlecode.com/
branch와 merge는 작은 단위의 commit이 많이 필요할때는 불필요하게 다른 사람들이 나의 commit을 보이고 싶지 않을때 요긴하게 사용되는 기능이다. 한번만 사용해보면 쉽게 사용할 수 있다.