1 / 35

버전관리와 WinCVS

버전관리와 WinCVS. www.themegallery.com. CVS?. Concurrent Versions System 소프트웨어 프로젝트의 버전 관리를 도와준다 . RCS 를 기반으로 작성되어 있음 RCS 는 파일 단위의 버전 관리를 해줌 대표적인 사용 예 : WikiWiki. 참고 – 소프트웨어 프로젝트 관리의 3 요소. Unit test Build automation Version Control. 버전 관리란 ?. 버전이 뭔지는 알죠 ?

lucie
Download Presentation

버전관리와 WinCVS

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 버전관리와 WinCVS www.themegallery.com

  2. CVS? • Concurrent Versions System • 소프트웨어 프로젝트의 버전 관리를 도와준다. • RCS를 기반으로 작성되어 있음 • RCS는 파일 단위의 버전 관리를 해줌 • 대표적인 사용 예 : WikiWiki HAJE in KAIST

  3. 참고 – 소프트웨어 프로젝트 관리의 3요소 • Unit test • Build automation • Version Control HAJE in KAIST

  4. 버전 관리란? • 버전이 뭔지는 알죠? • 어떤 파일이 언제 어떻게 누구에 의해 변경/추가 되었는지를 알게 해준다. • Branch, Milestone 관리에 용이. • 숙련된 개발자가 경험에 의존하던 프로젝트 자원 관리를 자동화 해줌. HAJE in KAIST

  5. 버전 관리의 장점 (1) • 실수에 대한 복구가 쉬움 • 버전 관리 없는 프로젝트는 Backspace 키가 없는 키보드와 같다 • 팀원들의 co-work를 돕는다. • 비단 프로그래머 뿐만 아니더라도.. • 프로젝트의 역사를 통째로 남길 수 있다. • Ex: 2003년 5월 17일에 release한 제품에 버그가 보고되었는데, 2002년 12월 11일에는 분명히 이 버그가 없었다. 이 두 버전간의 차이를 분석해 버그를 수정하였다. HAJE in KAIST

  6. 버전 관리의 장점 (2) • 프로젝트의 “문맥(context)”를 쉽게 파악할 수 있게 해준다. • 나쁜 팀 프로젝트 습관 • 파일의 맨 앞에 history log 남기기 • // modified by adaline 따위 붙이기 • 수정할 때 옛날 부분 주석처리 해서 남기기 등 • 버전관리 소프트웨어를 사용하면 이런 나쁜 습관을 없앨 수 있다. • 소스 파일에는 순수한 코드와 핵심적인 주석만 있어야 한다. HAJE in KAIST

  7. 구조 CVS 저장소 (Repository) 개발자 1 개발자 2 개발자 3 HAJE in KAIST

  8. Repository • 프로젝트의 모든 버전들의 원본이 담겨 있는 핵심 장소이다. • 자신의 컴퓨터(local)일 수도 있고, 외부 컴퓨터로 지정할 수도 있음. • 하제의 경우 /home/cvs • 많은 오픈 소스 프로젝트들이 CVS를 통해 배포를 하고 있음 HAJE in KAIST

  9. Project • 어떤 소프트웨어를 이루는 자원(= 파일)의 집합 • 한 저장소는 여러 프로젝트를 담고 있을 수 있음 • 여러 파일과 폴더로 이루어짐. • 소스 코드 • 각종 리소스나 도큐먼트 • 테스트 데이터 등 HAJE in KAIST

  10. 시나리오 1 • 경돈이는 모 게임 회사에 취직해 프로젝트 “α” 제작에 참여하게 되었다. “α” 는 CVS로 관리되고 있는 프로젝트이다. 경돈이는 ‘check out’을 하여 저장소의 프로젝트 파일들을 자신의 컴퓨터로 전송하였다. • cvs –d … checkout alpha • Check out이란 저장소의 파일을 자신의 컴퓨터로 통째로 가져오는 것을 말한다. • cf. VSS의 check out HAJE in KAIST

  11. 시나리오 2 • 경돈이가 아침에 출근을 해서, 그 동안 다른 사람들이 그 동안 수정한 사항들을 자기 컴퓨터에 반영하고 싶어한다. • cvs –d … update • Update란 자신 컴퓨터에 있는 파일들을 저장소의 최신 파일들로 갱신하는 것을 말한다. HAJE in KAIST

  12. 시나리오 3 • 경돈이가 화랑의 발차기를 현재보다 2배 느리게 하는 것이 좋겠다고 생각하여 hwoarang.cpp 파일을 수정한 후, “commit”을 하여 저장소의 파일을 갱신하였다. 다른 팀원들이 update를 하면 이 수정한 내용이 갱신될 것이다 • cvs –d … commit hwoarang.cpp • Commit이란 저장소의 최신 버전을 자신의 파일로 갱신하는 것을 말한다. HAJE in KAIST

  13. Commit 할 때의 주의점 • 빌드가 깨지지 않게 할지어다 • 항상 충분한 테스트를 거칠지어다 • Commit 할 때는 메시지를 남기도록 되어 있다. • 일종의 log 역할을 함 • 무엇을 했는지만적지 말고 왜 했는지 적으시오 • 캐릭터 구조체에 가속도 필드를 추가 (x) • 미끄러지는 효과가 필요했음 (o) HAJE in KAIST

  14. Hello.cpp • Revision이란 각 파일의 버전을 말한다. • 시작과 동시에 모든 파일은 1.1이라는 버전을 갖는다. void main() { printf(“hello world\n”); } HAJE in KAIST

  15. Merge (1/3) • 만약 두 사람이 같은 파일을 동시에 고치면? • 경돈의 경우 #include <stdio.h> void main() { printf(“hello world\n”); } • 세훈의 경우 int main() { printf(“hello world\n”); return 0; } HAJE in KAIST

  16. Merge (2/3) • 경돈이 자신의 수정본을 commit함 • 성공. 저장소의 버전은 1.2가 됨. • 세훈이 자신의 수정본을 commit함 • 실패. 저장소의 버전은 1.2인데 자신이 편집한 파일은 1.1이므로 Up-to-date check failure • 세훈이 update를 시도함 • 성공적으로 Merge 됨. • 세훈이 Merge된 파일에 이상이 없음을 확인하고 commit함 • 성공. 저장소의 버전은 1.3이 됨. HAJE in KAIST

  17. Merge (3/3) • CVS는 optimistic lock scheme • Merge 된 파일 #include <stdio.h> int main() { printf(“hello world\n”); return 0; } HAJE in KAIST

  18. Confliction이 일어나는 경우 <<<<<<< hello.cpp #include <stdio.h> ======= #include <cstdio> >>>>>>> 1.2 int main() { printf(“hello world\n”); return 0; } 해결책 : 전화를 한다 HAJE in KAIST

  19. WinCVS • cvs 커맨드는 다양하고 복잡. • WinCVS는 GUI frontend를 통해 CVS를 윈도우에서 쉽게 사용할 수 있게 해주는 프로그램이다. • 자매품: MacCVS, gCVS HAJE in KAIST

  20. 설치 (1/2) • http://www.wincvs.org/download.html HAJE in KAIST

  21. 설치 (2/2) • WinCVS 설치가 끝나면 CVSNT를 설치할 것이냐고 물어봄  반드시 설치해야 함! • WinCVS를 제대로 사용하기 위해서는 Python 2.1 이상의 버전을 설치해야 한다 HAJE in KAIST

  22. 실행화면 HAJE in KAIST

  23. 새 프로젝트 만들기 • 새 프로젝트를 처음으로 만들 때 한번만 해준다. • 작업중이던 프로젝트 메인 폴더 설정 • 메뉴의 Remote -> Import module • CVSROOT 설정 • 확인 버튼 누르면 끝! HAJE in KAIST

  24. CVSROOT ??? • 저장소의 위치를 지정함 HAJE in KAIST

  25. Check out • 기존에 돌아가고 있는 프로젝트에 참여하고 싶을 때. • 메뉴의 Remote -> Check module HAJE in KAIST

  26. ex> Noah2k HAJE in KAIST

  27. 히스토리 보기 • 파일을 오른쪽 버튼으로 클릭하고 Graph를 선택해보자 HAJE in KAIST

  28. Update • update 하고자 하는 디렉토리(혹은 개별 파일)에서 오른쪽 버튼을 누르고 Update 선택 HAJE in KAIST

  29. Commit (1/2) • 파일 수정 시 자동으로 인식해서 다음과 같이 나온다 HAJE in KAIST

  30. Commit (2/2) • 수정한 파일에서 오른쪽 버튼을 누르고 Commit을 선택한다 • 폴더에서 하면 변경된 파일들이 모두 commit됨 • Revision이 올라감. (1.1 -> 1.2) HAJE in KAIST

  31. 새 파일 추가 (1/2) • 새로운 파일이 생기면 다음과 같이 나온다 HAJE in KAIST

  32. 새 파일 추가 (2/2) • 파일을 선택하고 메뉴에서 Modify  Add 선택 HAJE in KAIST

  33. 마치며 (1/3) • 사용하는 IDE가 버전 관리를 지원하면 적극 사용하자(Visual Studio, Eclipse 등) Eclipse and CVS live together in perfect harmony HAJE in KAIST

  34. 마치며 (2/3) • Branch, Tag와 같은 멋진 기능이 많으니 必히 공부해 보자. • Team project를 하게 되는 경우, 혹은 혼자 하는 project라도 사용하면 매우 편리하다. • 프로그램 소스코드 뿐만 아니라, 중요한 문서 등을 관리할 때에도 사용하면 좋다. • 동아리 방에 “실용주의 프로그래머를 위한 버전관리 using CVS” 책을 참고하자 HAJE in KAIST

  35. 마치며 (3/3) • 참고할만한 자료 • “실용주의 프로그래머를 위한 버전관리 using CVS” • 동방에 있음 -_ -; • http://home.bawi.org/~minskim/moin.cgi/CVS%20사용 HAJE in KAIST

More Related