vcs/svn

팀 개발을 위한 SVN Branch, Merge 사용

C/H 2016. 7. 22. 12:09

저장소

svn://domain.com/project

- 팀원 단위 진행 순서로 구성.(로컬 저장소 대용)
- 팀원의 개별 폴더를 생성해서 관리하는 방식은 svn특성상 많은 문제가 발생 할 수 있다.
- 개발자의 저장 폴더와 branches/release 간 commit / update 가 빈번하게 일어나며,
- rev 관리가 되지 않을 가능성이 99%이고,
- 개발자의 이해도에 따라서 관리자체가 되지 않을 수 있다.
- 웬만하면 개발자 폴더를 버리고 branches/release 폴더를 기준으로 관리하는게 바람직하다

  • svn://domain.com/project/trunk
  • svn://domain.com/project/branches
  • svn://domain.com/project/developer/dev1
  • svn://domain.com/project/developer/dev2
  • svn://domain.com/project/tags
  • svn://domain.com/project/release
  • svn://domain.com/project/hotfix

- 개발 프로젝트 단위.

  • svn://domain.com/project/branches/smalldevname1
  • svn://domain.com/project/branches/smalldevname2

Developer Branch 생성

개발자 단위로 개인 Branch 생성후 개발 진행
branches/release 기준 개발

# Branch/release Create
svn copy svn+ssh://domain.com/project/trunk \
    svn+ssh://domain.com/project/branches/release \
   -m "Create branches/release"

# Branch CheckOut
svn co svn+ssh://domain.com/project/branches/release release

최신 Trunk를 본인의 로컬에 적용

Commiter가 Trunk 업데이트 공지 시 Developer는 Trunk를 Branch에 병합해서 최신상태를 유지.
(혹은 수시로 확인해서 최신상태로 유지한다.)

# Branch 에서 trunk를 Branch에 병합
cd release
svn merge --dry-run ^/trunk
svn merge ^/trunk

# 병합내용을 Branch에 Commit
svn ci -m "Merging release branch with trunk" 

본인의 작업결과물을 Trunk에 통합

Commiter와 Developer가 다를 경우 Developer가 자신은 Branch를 최신으로 Commit 후 병합요청,
그 후 Commiter가 Merge, Commit 진행

# 최신 trunk를 release로 CheckOut
svn co svn+ssh://domain.com/project/trunk trunk

# release 병합 테스트 --dry-run
cd trunk
svn merge --dry-run ^/branches/release

# release를 trunk에 병합, 충돌해결
svn merge ^/branches/release

# 병합결과 Commit
svn ci -m "Merging release work release into main trunk!"

로컬에 직접 병합, 충돌 해결 후 Commit

svn co svn://domain.com/project/trunk trunk
cd trunk
svn up
svn merge ^/branches/release
# 충돌해결
svn ci -m "Merging release work release into main trunk"

Hotfix

급하게 변경되거나 수정해야 할 사항이 있을 경우 hotfix에서 처리

# Hotfix Branch Create
svn copy svn+ssh://domain.com/project/trunk \
    svn+ssh://domain.com/project/branches/hotfix \
    -m "Creating Hotfix"

# Branch CheckOut
svn co svn+ssh://domain.com/project/branches/hotfix

# 이 후 Trunk에 적용


반응형

'vcs > svn' 카테고리의 다른 글

svn checkout ignore directory/folder  (0) 2017.03.30
svn hooks를 이용한 release, trunk 자동 업데이트  (0) 2017.03.24
SVN Conflict(충돌) Option  (0) 2016.06.10
propset propedit  (0) 2016.01.05
SVN_EDITOR  (0) 2015.12.17