본문 바로가기

SCM/SVN

04. 이클립스 환경에서 svn을 이용한 간략한 소스관리

이클립스 환경에서 svn을 이용한 간략한 소스관리
 
 
아래에 보면 trunk, branches, tags 라는게 있는데
 
 
 

trunk
 
trunk는 현재 개발되는 가장 중심되는 줄기인데

보통 이 trunk를 이용해 branch를 만들거나 tag을 달게 된다.
 
 

branch
 
branch는 의미로 가지 인 것처럼
 
흔히 프로젝트에서 기존 구현된 기능을 변경하거나 현재 기능에 영향을 미치는 기능을 추가할 때,
 
 trunk에서 branch로 프로젝트를 복사하고
 
 해당 작업을 완료한 후 다시 trunk로 merge하여 프로젝트를 발전시켜 나갈때 사용한다.
 
 

tag
 
개발이 끝나서 이건 보존해야돼 이렇게 생각되는 것을 tag 로 남긴다.
 
즉 tag의 경우는 보통 스냅샷을 찍을 때 이용한다. 
 
 
 

프로젝트 생성
 
 
SVN Repositories 뷰에서 trunk 에 만들 프로젝트명의 폴더를 생성한다.
 
만들 프로젝트명과 동일하게 지정하자.
 
 
 
다음으로 해당 폴더에서 프로젝트를 생성하기 위해 폴더를 선택후 
 
컨텍스트 메뉴를 열어 Find/Check Out As... 항목을 선택
 
 
 
 
 
첫번째 항목을 선택하여 프로젝트를 생성하고 Finish
 
 
 
 
Package Explorer 에 보면 해당 프로젝트가 생성된 것을 확인할 수 있다.
 
 
 
 
? 가 떠 있는 것은 아직 서버에 변경된 내용이 Commit 되지 않았다는 의미이며
 
? 항목을 모두 선택후 컨텍스트 메뉴를 열어 Team 항목의 Commit 을 클릭해 올리면 된다.
 
 
 
 
Commit 전에 Comment 를 달아 어떤 내용이 추가된 것인지 확실하게 기술해 줘야 
 
다른 사람이 이해할 수 있다.
 
 
 
 
이제 Package Explorer 를 확인해 보면 황금색 마크로 현재 파일이 최신임이 표시가 된다.
 
 
 
 


기존 프로젝트 를 SVN 으로 Import 하기 
 
 
아래와 같이 기존 프로젝트가 있을때
 
 
 
 
 이를 올릴 웹 폴더를 SVN 의 컨텍스트 메뉴를 사용하여 만든다.
 
 
 
 
아래와 같이 2개의 폴더를 만들었고 JUnitTest 에 로컬 프로젝트를 임포트할 예정이다.
 
 
 
 
 
해당 폴더를 선택하고 컨텍스트 메뉴의 Import 를 선택한다.
 
 
 
 
그러면 아래와 같은 창이 나오고 
 
올릴 프로젝트를 로컬 위치에서 선택하면 된다.
 
기본 옵션에 Depth 가 Recursively 이므로
 
서브 폴더와 파일이 자동으로 임포트 될 것이다.
 
 
 
 
소스 구조 그대로 임포트 된 것을 알 수 있다.
 
 
 
 
 

SVN 에서 로컬로 Import 하기
 
 
일단 테스트를 위해서 아래처럼 기존에 내 폴더에 있던 프로젝트를 지웠다.
 
이는 다른 PC 에서 소스를 받는 상황을 가정하기 위함이다.
 
 
 
 
이 상태의 Package Explorer 에서 컨텍스트 메뉴( 우 마우스 클릭 ) 를 열어
 
Import 를 선택한다. 
 
 
 
 
다이얼로그가 나오면 SVN 의 Checkout Projects from SVN 을 선택한다. 
 
그리고 Next
 
 
 
 
여기에서 svn 서버를 선택하고 Next 를 클릭
 
 
 
 
로컬 위치로 Import 할 Project 를 선택한다. 그리고 Next 버튼을 클릭
 
 
 
아래와 같은 다이얼로그가 나타나는데 아래와 같이 체크하고 Project Name 을 지정해준 후
 
Next 를 클릭
 
 
 
마지막으로 프로젝트가 저장될 위치를 지정한다. 그리고 Finish 버튼을 클릭
 
 
 
 
결과를 확인하자.
 
아래와 같이 임포트한 프로젝트가 Package Explorer 에 나타남을 확인.
 
 
 
 
 

Commit
 
 
이제 수정된 버전을 SVN 서버에 올리는 Commit 명령을 한번 해보자.
 
아래와 같이 주석 하나만 추가하고 Save All 하면 수정된 코드라는 * 표시가 
 
Package Explorer 에 나타난다.
 
 
 
이번에는 새로운 파일을 New 해서 하나 추가했다.
 
아래처럼 ? 로 나온다. 왜냐면 서버에는 아직 존재하지 않는 파일이므로.
 
 
 
 
해당 파일들을 선택하고 우클릭으로 컨텍스트 메뉴를 열어 Team => Commit 을 누른다.
 
 
 
 
Comment 로 수정된 사항을 기입한다.
 
그리고 아래 마크한 부분은 수정한 항목이 보여지며 Show unversioned files 를 클릭하면 
 
새로 추가한 항목은 제외되고 코드가 올라간다.
 
사용에 주의가 필요한데 왜냐믄 파일 하나 안올려서 소스 자체가 안돌아갈 수 있기 때문이다.
 
 
 
 
위 메뉴에서 Configure Comment Templates... 를 클릭해보자
 
그러면 코멘트 템플릿을 만들수 있는데 보통의 경우 
 
어떤 이슈와 이에 대한 코멘트 누가 올렸는지 정보등을 포함해야 한다.
 
상세할수록 좋다. 나도 아래와 New 해서 하나 만들었다.
 
 
 
 
여튼 아래와 같이 코멘트도 작성했다.
 
 
 
 
Ok 를 누르고 Package Explorer 를 확인하면 코드가 SVN 서버로 올라갔음을 알 수 있다.
 
 
 
 

File Delete
 
 
그냥 주저없이 지울 파일을 지우고 
 
 
 
 
지운 패키지를 선택해서 Commit 을 누르면
 
 
 
 
지운 파일이 아래 항목처럼 표시된다. OK 를 누르면 SVN 에 반영된다.
 
 
 
 
 

Show history
 
 
언제 누가 어떤 것을 수정하였는지 확인하려면 
 
SVN Repositories 에서 Show History 항목을 클릭한다.
 
 
 
 
클릭하면 History View 가 나타나며 Date 나 Author 등을 확인할 수 있다.
 
Compare Mode 를 클릭하면 맨 위에 선택된 ChangeSet 에 해당하는 코멘트가 나타나고 
 
파일 리스트로 수정된 파일을 볼 수 있다.
 
 
 
 
 

Code Compare
 
 
코드를 짝 프로그래밍 할때 반드시 올리기 전에 필요한 것이 
 
이전 것과 내 것이 어떻게 변했고
 
어떤 부분만 올려야 하는지에 대한 검토다.
 
겹치게 수정이 되었다면 코드가 꼬일수 있으므로 Code Compare 는 필수다.
 
보통 먼저 올린놈이 장땡이라는.... 만고 불변의 진리가 있다.
 
왜냐믄 내가 코드 수정했는데 다른 사람이 하나 올렸다고 가정하면 
 
그것을 깨지 않는 범위에서 내 수정한 코드를 삽입해야 하기 때문에...
 
 
 
 
 
추가된것은 흰색으로 수정한것은 약회색으로 나타난다.
 
 
 
 
요 상태에서 마우스를 아래 마크한 부분으로 이동하면 코드 고칠래? 라고 나온다. 
 
이러면 SVN 코드를 내 코드로 붙여준다.
 
이런식으로 Merge 를 실행한다.
 
 
 
 


Recover
 
 
만약 위 파일이 잘못 지워져 SVN 에 올라간 것이라면 기존 버전을 복구해야 한다.
 
컨텍스트 메뉴의 Team - Merge 를 선택해서 적절한 버전을 선택하면 파일을 복구할 수 있다.
 
 
 

branch 및 tag
 
 
branch 를 뜨거나 tag 를 남기는 것은 아래 사이트를 참조
 
 
 
 
 
 
 
 
 
 

'SCM > SVN' 카테고리의 다른 글

05. SVN 리눅스에 구축  (0) 2020.01.29
03. SVN Connector 설치  (0) 2020.01.28
02. Java 에 SVN 설치  (0) 2020.01.28
01. 원격 저장소  (0) 2020.01.28