- trunk : 프로젝트중 항상 최신현황이 유지되는 소스 원본
- branch : 프로젝트중 작은 분류로 나누어 개발 하거나 소스를 따로 분리하여 실험적인 코드 를 작성할 경우 추가되는 복사본 예) 전결기능추가
- tag : 프로젝트중 의미있는 완성품 예)프로그램 V1.0
예전에 한 친구와 프로젝트를 같이 진행한 적이 있었다. 그때 svn을 사용해서 개발하려고 subclipse를 설치해서 사용했다.
그리고 열심히 프로젝트를 진행하려고 하는데 크나큰 문제점이 닥쳤다.
revision1 인 파일을 나와 내 친구가 update를 통해 받은 상태에서 각자의 작업을 진행하고 있었고, 내 친구가 먼저 수정을 끝내고 commit을 했다. 나도 얼마있지 않아서 작업을 끝내고 commit을 하려고하는데 error가 발생했다.
이유는 revision 때문이었다.
친구가 commit을 한 순간 그 파일은 revision2가 HEAD로 된다. 그런데 나는 revision1을 가지고 수정을 한 상태이니, 당연히 commit을 못하도록 막는 것이다.
그런데 오늘에서야 그 해결책을 찾아냈다.
방법은 간단하다.
먼저 앞에서 말한 상황과 같은 상황을 만들어보자.
아래의 Test.java파일은 revision182이다.
여기에서 수정을 약간 가해보자.
그리고 수정된 파일을 commit하면 이제 revision183이 된다. 이 상태가 내 친구가 commit을 한 상태이다.
그런데 나는 아직 update가 되지 않은 상태이므로 그 이전 상태로 돌아가야 한다.
Test.java에서 오른 클릭하여 Team - Switch to another Branch/Tag/Revision을 눌러서 revision182로 돌아가도록 하자.
다시 revision182로 돌아가서 여기에서 친구가 수정한 부분과 다르게 수정을 해보자.
이렇게 수정을 한 뒤에 team - commit을 해보면 에러가 발생한다는 것을 알 수 있다.
이제 본격적으로 우리가 알아봐야 할 부분이다.
Test.java에서 오른클릭하여 team - update to HEAD를 눌러보자. 그러면 다음과 같은 화면을 볼 수 있을 것이다.
(이때 Test.java의 아이콘에 별표가 아닌 사각형이 생김에 유의하자.)
subclipse에서 친절하게도 HEAD버전와 충돌이 일어나는 부분을 다 표시해 주었다.
뿐만 아니라, revision이 183으로 올라갔다!!!
<<<<<<< .mine에서부터 ========== 까지가 내가 수정한 부분이고,
=========에서부터 >>>>>> .r183까지가 revision183버전의 상태이다.
(즉, ========를 경계로 어떻게 바꿀지 확인을 하면되는 것이다.)
여기에서는 a의 값은 내가 수정한대로 바꾸고, 주석 부분은 친구가 수정한 부분으로 두고 싶다.
그러면 직접 손으로 그 부분을 수정하면 된다.
이렇게 한 뒤에 Test.java에서 오른 클릭 - Team - Mark Resolved를 누르면 아래와 같은 화면이 뜬다.
그리고 나서 Package Ex탭을 보면 Test.java의 아이콘에 별표가 뜰 것이다.
이렇게 한 뒤에 Test.java에서 오른 클릭 - Team - Commit을 해보자.
아무런 에러없이 잘 올라갔고 버전도 revision184로 올라간 것을 볼 수 있을 것이다.!!
trac과 연동하며 trac에서 티켓을 activate 시켜서 작업하고 commit할때 ticket번호 연동(?) 하는 것때문에
뒤립다 찾았는데.. 다 svn 설정한다고 하는데.. 당최 설정하는게 뵈질 않는거다...
설정하고 보는 화면만 띄워주고.. 쩝.....
골머리 아프게 찾았다..
Team -> set Property 였다...
트랙과 연동하려면
property name property content
bugtraq:label Trac Ticket Number:
bugtraq:logregex Ticket #(\d+)
bugtraq:message Ticket #%BUGID%
bugtraq:number true
bugtraq:url http://localhost/trac/project/ticket/%BUGID%
(trac 설치하고 서비스한 url을 사용 굵은 글씨는 경우에 따라 다름)
이렇게 넣어 주는 거였다...
한번에 여러행을 입력하는 것이 아니라 한번에 property name 1개씩... 그러니 눈앞에 두고도 못 찾지...
여하튼 trac과 subversion을 설치하고 eclipse에서 연동하여 사용한다면 팀프로젝트 준비는 어느정도 된것이 아닐까 싶다..
물론 사용하면서 subversion의 merge 기능도 문제고... trac에서는 tasklist의 연관성으로 묶는 것도 필요하지 않을까 하는데..
갑자기 생각해보니 컴포넌트가 있었구나.. 쩝... ^^;;;;
16. lock 해제
svnadmin lslocks /svn/업무지원/홈페이지/ | grep trunk >> /svn/업무지원/홈페이지/unlock
cut -d: -f2,5 /svn/업무지원/홈페이지/unlock | xargs svnadmin rmlocks /svn/업무지원/홈페이지













덧글