형상 관리 도구(SCM) ▪ Software Configuration Management Tools ▪ Version Control System (VCS) ▪ 프로그램, 문서 및 모든 종류의 컨텐트의 변경 이력을 관리하는 시스템 ▪ “Version” “number” ▪ 변경이 될 때 마다 붙는 표지 / 번호 ▪ “Revision” ▪ 새로 변경된 결과물 ▪ 인덱스가 붙음
버전 관리 시스템 ▪버전 관리 시스템 (Version Control System) ▪ 과거 및 현재 상태를 모두 저장 ▪ 상태 변화에 따른 모든 중간 단계 저장 ▪ 저장소: 소스 (코드, 문서, 그림 등) 를 저장 ▪ 구조에 따른 구분 ▪ 중앙 집중식: CVS, subversion ▪ 분산식: mercurial, git
6.
버전 관리 시스템용어 (1) ▪ 저장소 (repository) ▪ 소스 (코드, 문서, 그림 등) 를 저장하는 공간 ▪ 브렌치 (branching / branch) ▪ 코드를 중간에 분기하는 행위 / 분기한 결과 ▪ 리비전 (revision) ▪ 특정 시간 / 특정 브렌치의 어떤 한 상태 ▪ 상태에 해당하는 인덱스를 리비전 번호 (revision number) 라고 함
7.
버전 관리 시스템용어 (2) ▪ 커밋 (commit) ▪ 저장소에 변경된 컨텐트를 반영하는 행위 ▪ 커밋 로그 (commit log) ▪ 커밋을 할 때 해당 커밋이 어떠한 변경을 했는지 작성한 기록 ▪ 체크아웃 (checkout) ▪ 현재 저장소를 특정한 리비전으로 업데이트 ▪ 태그 (tag) ▪ 특정 리비전을 나중에 찾거나 알아보기 쉽게 붙인 텍스트
8.
중앙 집중식 버전관리 시스템 ▪ 특징 ▪ 중심이 되는 저장소가 존재 ▪ 메인 트리가 존재함 ▪ 저장소 의존도가 크므로 branching 을 쉽게 하지 않음 ▪ 중요한 기능 단위 / 개발 단위로만 branching ▪ 의존성 문제로 한 번 만든 브렌치는 쉽게 없애지 않음 ▪ 연속된 숫자를 인덱스로 사용 ▪ 예) 3125 ▪ 대표적인 오픈소스 VCS ▪ CVS, Subversion
9.
분산식 버전 관리시스템 ▪ 특징 ▪ 중심이 되는 저장소가 존재하지 않음 ▪ Branching / merging이 매우 자유로움 ▪ 새로운 코드를 만들거나 수정할 때 branching을 하는 것이 일반적임 ▪ 고유의 리비전 인덱스를 사용 ▪ 예) 315a2baab56dc69bdd2ba653cfa2a69a8ff0e92c ▪ 대표적인 오픈소스 VCS ▪ Mercurial, git
지속적 통합 도구 ▪지속적 통합 Continuous Integration (CI) ▪ 코드의 변경 내용을 확인하고, 서비스를 계속 최신 상태로 유지 ▪ 최근 리비전의 무결성을 확인 ▪ 코드 오류 검사 ▪ 단위 테스트 (Unit test) / 기능 테스트 (functional test) ▪ 코드의 호환성 검사 ▪ 무결성 결과 보고 ▪ 오픈소스 CI ▪ Jenkins (https://jenkins.io) ▪ Python Buildbot ▪ Travis CI (http://travis-ci.org) ▪ Strider (https://github.com/Strider- CD/strider) ▪ Apache Continuum (https://continuum.apache.org) - 은퇴!
지속적 통합 도구 ▪VCS, IT, CI 연동 ▪ 예) git – github – travis CI ▪ 예) subversion – trac – jenkins ▪ 예) Travis CI : 설정한 .travis.yml 을 git 프로젝트의 루트에 넣음 ▪ 환경 변수 설정 ▪ 브렌치 지정 ▪ 빌드 매트릭스 (build matrix) 구성 ▪ 데이터 스토어 소프트웨어 / 환경 지정
Learn by run:git basics ▪ Git 기본 강의 (1/2) ▪ 강의 진행자: 한홍근 (OSS 개발자 포럼 / git 세미나 강사) ▪ 준비작업: 통합 학습 환경 ▪ https://www.codeonweb.com 로그인 ▪ https://codeonweb.com/course/@oss-basics-hu 에 가입
18.
임무 #3 ▪ 임무#2에서 작성한 프로그램을 개선하기 ▪ 다음의 요건을 모두 만족해야 합니다. ▪ 1번 이상의 branch ▪ 3번 이상의 commit ▪ master 가 아닌 branch에서 커밋 ▪ 커밋 로그는 반드시 해당하는 issue / milestone이 있어야 합니다. ▪ 1번 이상의 merge (master 가 아닌 작업 branch를 다시 master로 merge) ▪ 마감: 10월 25일 23시 59분