본문 바로가기
dev util

간단한 Subversion Branching/Merging

by [김경민]™ ┌(  ̄∇ ̄)┘™ 2013. 4. 27.
728x90

[출처] http://sestory.tistory.com/1
 
 
서버버전을 사용하여 소스코드 checkout 및 commit은 많이 하는데 왠지 branch를 만들거나 merge하려니 이거 좀 복잡한 생각이 들때가 있고 메뉴얼을 읽어 봐도 북잡하기만 하다.

그러나 Branch의 기능은 전제 Team의 개발에 영향을 주지 않고 혼자서 (또는 소규모 팀별로) 프로그램을 고치고 테스트 하고 잘 될때 head로 보낼때 아주 유용하게 사용할 수 있다. 서버버전을 사용하면 그 방법도 간단하다.

우선 Checkout 부터 한번 해보자. (Subversion 저장소- https://coolproj.googlecode.com/svn/trunk)


svn co https://coolproj.googlecode.com/svn/trunk/  coolproj
cd colproj
[작업]
svn ci -m"작업 잘 했음. 무엇 무엇 고쳤음. 무슨무슨 버그 잡았음"

이렇게 하는 것이 보통 그냥 branch같은거 사용하지 않고 하는 작업인데 여기서 branch만들기는 너무 간단하다.

svn copy coolproj  https://coolproj.googlecode.com/svn/branches/new-hot-feature

이렇게 하면 끝이난다.

그런다음 이 새로운 branch 를 checkout 해서 작업을 하면 된다.
svn co https://coolproj.googlecode.com/svn/branches/new-hot-feature coolproj-branch

그냥 이전의 coolproj 라는 workspace를 사용하고 싶으면 살짝 'switch' 해주면 된다.


cd dupbug/
svn switch https://coolproj.googlecode.com/svn/branches/new-hot-feature

[작업]
svn ci -m"작업 잘 했음. 무엇 무엇 고쳤음. 무슨무슨 버그 잡았음"

이렇게 checkin 된 코드는 이전에 생성된 branch에 남아 있게 된다.

여러번 작업을 한다음 이 branch가 충분히 훌륭한 관계로 trunk에 보내고 싶다면 merge하면 된다. 우선 바로 merge하기 전에 (trunk가 변했을수도 있으므로) 몇가지 확인 해보자. 우선 --dry-run (예행연습)

svn merge --dry-run  https://coolproj.googlecode.com/svn/branches/new-hot-feature \                                             https://coolproj.googlecode.com/svn/trunk

그러면 무엇이 바뀌는 것인지 보여 준다.

구체적으로 무엇이 달라졌는지 line-by-line으로 보고 싶으면 diff를 사용한다. (주의 URL의 순서가 merge때와 다르게 바뀌었다)

svn diff https://coolproj.googlecode.com/svn/trunk \
            https://coolproj.googlecode.com/svn/branches/new-hot-feature

마지막으로 모든것이 좋아 보여 merge를 하려면 앞에서 dry-run을 하면 된다.
svn merge --dry-run  https://coolproj.googlecode.com/svn/branches/new-hot-feature \ https://coolproj.googlecode.com/svn/trunk

branch와 merge는 작은 단위의 commit이 많이 필요할때는 불필요하게 다른 사람들이 나의 commit을 보이고 싶지 않을때 요긴하게 사용되는 기능이다. 한번만 사용해보면 쉽게 사용할 수 있다. 
728x90

'dev util' 카테고리의 다른 글

yum install Transaction check error  (0) 2019.05.29
openstack, DevStack  (0) 2018.12.27
도커 / docker  (0) 2018.12.26
MySql.Data - MYSQL 5.X connector net  (0) 2013.04.27

댓글