티스토리 뷰



협업 개발 시스템이 준비된 상태에서 개발자들의 입장에서 형상 관리 시스템을 사용하는 기본적인 요령을 다룰까 합니다. 윈도우 시스템에서의 Trac과 서브버전(Subversion) 기반으로한 협업 개발 시스템을 다루고 있는데 아직 시스템을 설치하지 않았다면 시스템 설치는 아래의 두 글을 참조합니다.



형상 관리 도구 사용은 코드를 체크아웃(check out) 받아 개발을 수행하고(문서 수정이나 코드 수정) 형상 관리 서버에 커밋(commit)하는 단계로 이루어 집니다.



■ 윈도우 환경에 서브버전(Subversion) 설치하기


리눅스나 윈도우등 운영체제에 관계없이 서브버전(Subversion) 프로그램만 있다면 특정 프로젝트에 대한 개발을 개발자 나름의 환경에서 독립적으로 수행하고 작업 결과를 서버에 반영하여 다른 개발자와 긴밀하게 협업해서 개발을 진행할 수 있습니다. 윈도우 환경에서 사용할 수 있는 대표적인 서브버전(Subversion) 프로그램으로는 TortoiseSVN을 들 수 있습니다. 다운로드 및 설치는 https://tortoisesvn.net/downloads.html 를 참조합니다.



정상적으로 설치했으면 탐색기의 팝업 메뉴에 위의 그림과 같이 SVN Checkout과 TortoiseSVN 메뉴를 확인할 수 있습니다.



■ 소스코드 체크아웃(Checkout) 받기



개발의 시작은 소스 코드를 체크아웃 받는 것으로 시작합니다. 작업 폴더로 이동하여 위의 그림처럼 소스를 체크아웃 받아 놓으면 그 다음부터는 주기적으로 업데이트(SVN Update)하는 것으로 다른 개발자가 작업한 내용을 내 코드 사본에 반영합니다. 다른 개발자가 내가 수정중인 동일한 소스 코드를 수정한 것을 업데이트 한다고 내가 작업중인 내용이 없어지는 것은 아니고 업데이트 과정에서 자연스럽게 병합(Merge) 작업을 수행하고 나중에 다루겠지만 코드가 도저히 병합 판단을 내리지 못하는 경우에는 Conflict 마크 해놓아 개발자가 적절히 판단을 내리도록 해 줍니다.


저장소 주소(Repository URL)는 "http://IP주소:포트/svn/프로젝트명" 형식으로 입력하면 됩니다. 저희는 앞선 서브버전 에지 설치 과정에서 서브버전 서버의 서비스 포트를 기본 포트인 80으로 그대로 두었기 때문에 :포트는 기술하지 않아도 됩니다. 또한, 서브버전 에지에서 새로운 저장소를 만들때 기본 구조(tags, trunk, branch)를 만들도록 했으므로 통상의 개발 작업은 프로젝트명/trunk를 체크아웃 받으면 됩니다. 내려받은 소스 코드를 저장할 체크아웃 디렉토리를 적절하게 기술하고 [OK] 버튼을 누르면 코드를 내려 받기 시작하고 체크아웃이 끝나면 현재의 리비전 번호를 표시합니다. 


위의 예제 처럼 체크아웃 시점에 "HEAD revision"을 선택하면 현재의 최신 버전을 내려 받지만 "Revision"을 선택하고 특정 리비전 번호를 입력하면 해당 리비전 시점의 코드로 작업할 수 있습니다. 과거의 특정 시점 상태에서 작업하고 싶을 경우에 사용합니다.



소스를 체크아웃 받는 시점에 사용자 정보를 입력하면서 "Save authentication"를 체크해 놓으면 추후 코드를 업데이트하거나 커밋하는 시점에서는 사용자 인증 정보를 다시 묻지 않고 해당 사용자 인증 정보를 자동으로 재사용합니다. 소스코드를 체크아웃 받은 폴더를 윈도우 탐색기에서 보면 현재 상태를 나타내는 아이콘으로 구분 표시되므로 체크 아웃이후 변경이 있었는지를 탐색기 상태에서도 확인이 가능 합니다. 또한 해당 폴더를 우측 마우스로 컨텍스트 메뉴를 띄워 "속성"을 조회하면 위의 그림처럼 "Subversion" 탭을 통해서 저장소에 대한 상세 정보를 확인할 수 있습니다.



■ 새로운 코드 작성 및 커밋



체크 아웃 받은 폴더에 위의 그림과 같이 a.c라는 코드를 작성합니다. 



탐색기에서 새롭게 추가한 a.c를 우측 마우스로 선택하여 팝업 메뉴에서 TortoiseSVN>Add를 선택합니다. Add했다고 해서 형상 관리 서버에 반영되는 것은 아닙니다. 물론 다른 개발자들도 그 내역을 알 수는 없습니다. Add의 의미는 로컬 폴더에 있는 파일이나 폴더를 형상 관리 대상으로 추가하겠다는 선언적 의미이고 추후 커밋(Commit)을 수행해야 서버에 반영 합니다. 



어느 정도의 개발 끝나서 나름의 테스트를 진행했다면 위의 그림과 같이 폴더에서 팝업 메뉴를 통해 커밋을 선택 합니다 (SVN commit).



커밋 창에서는 해당 폴더 범위에서 변경되거나 추가/삭제한 모든 파일이나 폴더를 한꺼번에 커밋할 수도 있고, 특정 파일들만을 선택하여 커밋할 수도 있습니다. 위의 그림에서도 확인 할 수 있듯이 파일 우측에 추가/변경/삭제등 상태가 표시됩니다. 변경의 경우에는 코드를 더블 클릭하여 어떤 내용을 변경 했는지 Diff 화면을 통해서 간편하게 확인할 수도 있습니다. 


커밋 메시지는 해당 코드들을 어떤 사유로 수정했는지 구체적으로 기술하여 추후 중요한 정보로 활용 합니다. 많은 경우 이슈트래커의 이슈번호, 또는 티켓 번호를 메모하여 특정 리비전과 특정 이슈를 연결시켜 줍니다. 위의 예제에서 #1로 적은 것은 해당 Trac 프로젝트의 1번 티켓을 의미합니다.




커밋이 정상적으로 수행되었다면 위의 그림과 같이 리비전이 증가되는 것을 확인할 수 있습니다. 만약에 동일한 소스를 다른 개발자가 먼저 커밋했다면 Conflict가 발생할 수 있으므로 개발 진행 과정중에는 커밋전에 SVN Update를 수행해서 다른 이들이 수정한 코드를 현재 내가 개발하고 있는 소스에 반영한 다음 확인후 커밋하는 습관을 가져야 합니다.



서버에 정상적으로 커밋되었는지를 확인하기 위해 Trac 프로젝트 홈의 [소스 둘러보기]를 클릭하면 형상 관리 Repository에 있는 소스를 직접 웹으로 확인할 수 있고, 리비전간 차이도 분석할 수 있습니다.



■ 코드 수정과 차이 비교하기



앞서 추가했던 코드를 위와 같이 수정합니다. 



코드를 수정하면 윈도우 탐색기에서는 위의 좌측 그림처럼 해당 소스의 아이콘이 코드가 변경되었음을 표시해주고 폴더의 컨텍스트 메뉴에서 서브버전 커밋(SVN Commit)을 선택하면 코드 우측에 "midified"라고 표시됩니다. 



변경된 코드의 경우에는 더블클릭해서 어떤 내용이 변경되었는지 커밋전에 Diff도구를 통해 확인합니다. 위의 예제에서는 두줄이 추가되었음을 바로 식별할 수 있습니다. 커밋 이전에 변경 사항을 확인하는 방법을 다루었지만 커밋 이후 특정 리비전간의 차이도 확인할 수 있습니다. 서브버전 도구를 통해서도 가능하지만 Trac의 소스 둘러보기에도 해당 기능을 지원합니다.




Trac 프로젝트의 [소스 둘러보기] 탭에서 해당 소스가 있는 폴더로 이동하고 하단의 [변경 사항 보기...]를 선택합니다.



시작, 끝에 비교할 리비전을 입력하고 [변경 사항 보기] 버튼을 클릭합니다.




Trac에서도 코드의 변동 사항을 확인할 수 있었습니다.





댓글
댓글쓰기 폼