dev-os

[Linux] svn branch & merge

검은바람 2013. 8. 30. 10:05
반응형

서버버전을 사용하여 소스코드 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을 보이고 싶지 않을때 요긴하게 사용되는 기능이다. 한번만 사용해보면 쉽게 사용할 수 있다.  

  •  

 

반응형