subversion(svn) 형상관리하기 subversion

 

 

1. tortoiseSVN 클라이언트 설치


 

2. 제대로 설치가 되었다면 다음 그림과 같이 컨텍스트 메뉴가 뜰 것에요

개인 아이디/패스워드는 일괄적으로   본인한글이름 // 1111 로 초기화 되어 있습니다.

 


 

3. TortoiseSVN - Repo-browser 선택 후 [svn url] 입력

  예) svn://192.168.22.218/업무지원/홈페이지


 

4. 제대로 사용자등록이 되었다면 아이디 패스워드 입력 후 브라우저 화면을 볼 수 있습니다.


 

5. 사실 초기 접속시에는 어떠한 폴더도 보이지 않는 것이 정상임 아래는 ... 제가 미리 해놔서.. -_-;


일반적으로 trunk/branch/tag 폴더를 활용하여 저장소 내부를 나누지만... 안나눠도 별 상관없다.

 

 

 

6. 이제 가장 중요한 체크인을 하자

체크인 // import : 저장소에 소스파일을 등록시키는 행위  ;  

체크아웃 // export:  저장소의 소스파일을 외부에서 가져다 쓰는 행위 ;

 

 1) 먼저 등록하고자 하는 소스를 정리한다.

 2) 저장소에 등록하고자 하는 폴더에 우클릭 하고 TortoiseSVN - import 를 선택한다.


 

 

7. 체크아웃

 체크아웃하고자 하는 디렉토리 우클릭 SVN Checkout.. 선택 후 주소 적어주면 땡~

옵션은 디폴트로 일단... 


 

 

8. commit과 update

commit: 로컬에서 변경한 걸 저장소에 반영하는 행위

update: 저장소의 내용을 로컬에 반영하는 행위

제대로 체크아웃되었다면

commit/update 하고자 하는 폴더에 우클릭을 하면

 

 

 

 

9. 체크인/체크아웃/커밋/업데이트 하면서 실패하면??

구글에게 문의를 -_-;;

 

 

10. trac연동

trac연동 하고 싶으시면 저(대하)한테 말씀하시면

http://192.168.22.218/trac에 안바쁠 때 등록해 드릴게요 ...

 

 

11. 저장소에서 자료 copy


 

 

12. SVN trunk / branch / tag 사용하기

개념설명


  • trunk : 프로젝트중 항상 최신현황이 유지되는 소스 원본

  • branch :  프로젝트중 작은 분류로 나누어 개발 하거나 소스를 따로 분리하여 실험적인 코드 를 작성할 경우 추가되는 복사본   예) 전결기능추가

  • tag : 프로젝트중 의미있는 완성품   예)프로그램 V1.0

 

참고 :  subversion에서는 branch 및 tag를 copy 명령으로 수행 합니다.



 


 

13. branch에서 수정한 내용을 trunk로 Merge 하기

 


 


 

 

 

 14. conflict 충돌 해결방법


예전에 한 친구와 프로젝트를 같이 진행한 적이 있었다. 그때 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로 올라간 것을 볼 수 있을 것이다.!!





15. trac 연동




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/업무지원/홈페이지





공유하기 버튼

  

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://daeha.egloos.com/tb/845603 [도움말]

덧글

댓글 입력 영역


통계 위젯 (블랙)

254357
1655
338129