Facebook Server Side Architecture Group #SSAG
https://www.facebook.com/groups/serverside/
원래는 Part3에서 SVN 과 Git에 대한 설명을 하려고 했습니다.
그런데 SVN 관련 부분이 생각보다 많아서
Part를 나누기로 했습니다.그래서 Part3은 SVN, Part4는 Git으로
진행할 예정 입니다.
지금까지
- 인텔리J 시작하기 Part1 (Getting Start IntelliJ) -기본 설정편-
- 인텔리J 시작하기 Part2 (Getting Start IntelliJ) -자바 프로젝트편-
을 설명 드렸습니다.
※ Part1, Part2를 보시지 않으신 분들은 꼭 보셨으면 합니다. 그렇지 않으면
Part3의 내용이 이해가 어려울 수 있습니다.
기존에 Eclipse 또는 유사한 IDE를 사용 하셨다면 Part2까지만 보셔도
스스로 충분히 학습이 가능 할 것이라고 생각 합니다.
제 경험상 VCS (Version Control System) 중에서
가장 많이 사용 하고 있는 것이 SVN, Git이 아닐까 합니다.
얼마전 제 페이스북 그룹인 SSAG 에서도 SVN vs Git에 대한 토론을 했었습니다.
그 당시 서로 공감했던 부분은 SI 또는 TFT 성향이 강한 프로젝트 경우
learning curve 등을 고려해서 SVN이 낫고, 스타트업 또는
스마트 worker가 가능한 곳은 Git이 낫지 않을까 였습니다.
누가 낫건 IntelliJ는 둘다 지원을 합니다.
※ IntelliJ가 focus이기 때문에 SVN, Git에 대한 자세한 설명을 생략 하고자 합니다.
최근에 한글로 된 좋은 자료들을 참고 하시기 바랍니다.
[– Pre – Requirements ——]
IntelliJ에서 SVN를 사용할 때 유용한 플러그인들이 있습니다.
- SVN bar : commit, add, update, diff 등의 기능을 편하게 제공하는 툴바
Settings – plugins 에서 플러그인을 설치 합니다.
※ 플러그인 설치 방법은 Part1을 참고 하시기 바랍니다.
[– Part3, Part4 에서 구현할 디렉토리 구조 ——]
module1, module2는 SVN, module3, modue4는 Git 를 사용할 예정입니다.
[– SVN Repositories ——]
“SVN Repositories” 은 직관적인 GUI를 통해서 원격에 있는 SVN 레파지토리
를 추가, 삭제, 조회 할 수 있도록 제공해주는 플러그인 입니다.
※ IntelliJ에서는 기본적으로 제공을 하기 때문에 별도의 플러그인 설치는 없습니다.
VCS – Browse…. – Browse Subversion…를 선택 합니다.
계정을 입력 합니다.
※ SVN 정책에 따라서 계정을 묻지 않을 수 있습니다.
SVN Repositories 콘솔이 오픈 됩니다.
+ 버튼을 선택 후 SVN 주소를 입력 합니다.
원격 폴더를 생성해 보겠습니다. New – Remote Folder..를 선택 합니다.
정상적으로 생성이 되었는지 확인 하기 위해서 순환 아이콘를 선택해서 서버로 부터
동기화를 합니다. 폴더가 생성 되었는지 확인 합니다.
방금 생성한 test 폴더를 삭제 해보겠습니다.
폴더 선택 – 오른쪽 클릭 – Delete..를 선택 합니다.
SVN Repositories에 추가 했던 Location 정보를 삭제 하려면
Repositories 선택 – 오른쪽 클릭 – Discard Location를
선택 하시면 됩니다.
※ 화면에서만 단지 삭제가 된 것이지, 원격에 있는
SVN 레파지토리 삭제가 된 것은 아닙니다.
[– SVN Import ——]
Import기능은 작성한 소스를 최초 원격 저장소에 소스를 등록 하는 것을 말합니다.
또 다른 말로는 “first commit” 이라고도 합니다.
IntelliJ에서는 기본적으로 VCS 적용 범위가 Project 단위 입니다.
예를 들어서 project에서 SVN를 사용하면 포함된
모든 module들은 svn을 사용 하도록 됩니다.
하지만 IntelliJ에서는 project 단위가 아니라 각 module 단위로
사용하는 VCS 타입을 설정 할 수 있습니다.
Project 단위 관리 vs Module 단위 관리는 어디까지는 각자의 몫 같습니다.
저 같은 경우는 Module 단위 관리를 권고해 드립니다.
또한 Eclipse 와 IntelliJ를 같이 사용 하는 팀이라면
“Eclipse로 Import 하고 IntelliJ에서는 Checkout만 하는 운영“을 권고 드립니다.
※ 이유는 IntelliJ가 Eclipse로 생성된 프로젝트들에 대해서 호환이 훨씬 좋기 때문 입니다.
자바 모듈 module1, module2를 생성 합니다.
※ project type은 empty 입니다.
각 모듈이 svn을 사용하도록 개별 설정을 합니다.
※ import 할때만 설정하고, checkout 할때는 설정 할 필요가 없습니다.
Settings – Version Control – + 선택
module1의 디렉토리를 설정 합니다.
동일한 방법으로 module2도 설정을 합니다.
설정이 완료되면 module1, module2의 폰트 색깔이 빨강색으로 변경 됩니다.
빨강색의 의미는 VCS를 SVN으로 사용할 예정인 것이지 실제 원격 레파지토리에
저장된 뜻은 아닙니다.
module1을 원격 저장소에 import 하기 위해서
module1 오른쪽 클릭 – Subversion – Share Directory..를 선택 합니다.
원격 저장소 URL를 설정 합니다. Define share...는 개인이 원하는 type으로 설정을 합니다.
완료가 되면 module1의 폰트 색깔은 green로 변경이 됩니다. 그리고 module1 디렉토리에
.svn 디렉토리가 생성 됩니다.
폰트 색깔의 의미는 아래와 같습니다.
- green : new file
- blue : updated file
- white : commited file
- gray : delete file
이제 commit을 하겠습니다. 둘중 하나의 아이콘을 선택 합니다.
커밋할 파일 과 메세지를 입력 후 Commit 버튼을 선택 합니다.
커밋이 완료 되면 module1의 폰트 색깔은 white 변경 됩니다.
정상적으로 완료가 되었는지 SVN Repositories를 통해서 확인 합니다.
module2도 동일한 방법으로 커밋 합니다.
[– SVN Checkout ——]
SVN Checkout에 대해서 설명 하겠습니다.
테스트를 위해서 module1, module2를 삭제 하겠습니다.
module1, module2를 선택 하고 DEL 키를 누릅니다.
intelliJ에서 module 삭제는 메타 삭제 입니다. 완전하게 삭제를 하려면 물리 디렉토리도
삭제를 해야 합니다.
SVN Repositories에서 Checkout 받을 디렉토리르 선택 하고 Checkout.. 메뉴를 선택 합니다.
project 디렉토리를 설정 합니다.
두 번째를 선택 합니다.
No를 선택 합니다. 이유는 이미 project가 존재 하기 때문입니다.
※ 되도록 checkout 후 수동으로 import 하시길 권고 드립니다.
checkout 받은 소스를 IntelliJ에서 인식을 시키기 위해서 Import Module..
를 실행 합니다.
File – Import Module..를 선택 합니다.
module1.iml 파일을 선택 합니다.
정상적으로 동작을 확인 하기 위해서 파일을 수정 합니다.
commit이 완료되면 폰트 색깔은 white로 변경 됩니다.
module2도 동일한 방식으로 checkout 받습니다.
[– SVN 기능들 (add, commit, update, diff, history, revert ——]
지금까지는 원격 레파지토리 생성, SVN Import , SVN Checkout 기능에 대해서
설명 했습니다.
이번에는 SVN의 기본 동작에 대해서 말씀 드리겠습니다.
(1) add
add 기능은 신규 파일을 생성 후, 추후 커밋 대상이 되는 파일을 설정 하는 기능입니다.
IntelliJ에서는 파일 생성 과 동시에 add가 실행 됩니다.
즉, 파일만 추가 하시면 됩니다.
(2) update
update 기능은 원격 저장소에 있는 파일 과 로컬에 있는 파일이 동기화 되는 기능 입니다.
(3) commit
commit은 현재 작성한 파일을 원격 저장소에 저장 하는 기능 입니다.
(4) diff
svn은 리비전으로 관리가 됩니다. 로컬 파일 과 특정 리비전 파일을
비교해주는 기능 입니다.
(5) history
history 현재 까지 저장된 리비전들의 지난 기록들을 확인 하는 기능 입니다.
(6) revert
현재 로컬에 작업한 파일들을 취소하는 기능을 합니다.
svn 기능에 대해서는 이 정도만 설명 드리도록 하겠습니다. 나머지 기능들은
개인적으로 충분히 하실 것이라 판단 됩니다.
[– Eclipse Project Checkout ——]
Eclipse에서 import한 프로젝트를 IntelliJ에서 Checkout 하는 방법에 대해서 설명 하겠습니다.
이클립스에 있는 project를 SVN에 import 합니다.
IntelliJ에서 Checkout를 받습니다.
체크아웃 받을 project 폴더를 지정 합니다.
No를 선택 합니다.
Import Module를 실행 합니다.
checkout 받은 module 디렉토리를 선택 합니다.
※Eclipse에서 생성된 프로젝트는 “.iml” 파일이 존재 하지 않습니다.
Import module… 체크, Eclipse 선택
Eclipse JDK 설정 과 IntelliJ JDK 설정이 일치 하지 않아서 생기는 에러 입니다.
OK를 선택 합니다.
Settings – Modules – Dependencies 에서 설치된 JDK를 설정 합니다.
정상적으로 설치가 되었는지 확인 합니다.
Conclusion
Part3에서는 IntelliJ에서 SVN 사용법에 대해서 알아 봤습니다.
이번 Part3에서는 중요한 점은 SVN Import 팁 과 Eclipse에서 Import한
프로젝트를 IntelliJ에서 Checkout 하는 기능 입니다.
Part4에서는 IntelliJ에서 Git을 사용 하는 방법에 대해서
설명 하도록 하겠습니다.