정보처리기사/필기

[2과목-3장-047] 소프트웨어 버전 관리 도구

여니두 2020. 4. 21.

1. 공유 폴더 방식

: 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식

 

* 특징

1) 개발자) 개발이 완료된 파일을 공유 폴더에 매일 복사

2) 담당자) 공유 폴더 파일을 자기 PC로 복사, 컴파일 > 이상 유무 확인

3) 이상 유무 확인 과정에서 파일 오류 확인되면, 등록한 개발자에게 수정 의뢰

4) 이상 없으면, 개발자들이 동작 여부 재확인

5) 파일 잘못 복사 or 다른 위치로 복사하는 것에 대비하기 위해 변경 사항을 DB에 기록하여 관리

6) 종류: SCCS, RCS, PVCS, QVCS 등

 

2. 클라이언트/서버 방식

: 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식

 

* 특징

1) 서버의 자료를 개발자별로 자신의 PC(클라이언트)로 복사 > 변경 내용을 서버에 반영

2) 모든 버전 관리  > 서버에서 수행

3) 하나의 파일을 서로 다른 개발자가 작업할 경우) 경고 메시지 출력

4) 서버에 문제 생기면, 복구 전까지 다른 개발자와 협업 및 버전 관리 작업은 중단됨

5) 종류: CVS, SVN, CVSNT,Clear Case, CMVC, Perforce 등

 

3. 분산 저장소 방식

: 버전 관리 작료가 하나의 원격 저장소, 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리되는 방식

 

* 특징

1)  개발자별 원격 저장소 자료를 자신의 로컬 저장소로 복사, 작업 > 변경 내용을 로컬 저장소에서 우선 반영(버전 관리) > 이를 원격 저장소에 반영

2) 로컬 저장소에서 버전 관리가 가능 > 원격 저장소에 문제 생겨도 로컬 저장소의 자료를 이용하여 작업 가능

3) 종류: Git, GNU arch, DCVS, Bazaar, Mercurial, TeamWare, Bitkeeper, Plastic SCM 등

 

 

4. Subversion(서브버전, SVN) (클라이언트/서버 방식)

: CVS 개선한 것

- 클라이언트/서버 구조. 서버에는 최신 버전 파일들과 변경 내역이 관리

- 서버 자료를 클라이언트로 복사, 작업  > 변경 내용을 서버에 반영(커밋)
- 모든 개발 작업은 trunk 디렉토리(중심 디렉터리)에서 수행, 추가 작업은 branches 디렉터리 안에 별도 디렉터리를 만들어 작업 완료 > trunk 디렉터리와 병합

- 커밋할 때마다 리버전(Reversion)이 1씩 증가

- 클라이언트 - 대부분 OS서 사용 / 서버 - 주로 유닉스

- 오픈 소스

- CVS 단점이었던 파일, 디렉터리의 이름 변경, 이동 등이 가능

 

* 명령어

1) add

: 새 파일, 디렉터리를 버전 관리 대상으로 등록

- add로 등록 X 대상 > commit 적용 X

2) commit

: 클라이언트 소스 파일을 서버 소스 파일에 적용

3) update

: 서버 최신 commit 이력을 클라이언트 소스 파일에 적용

- commit 전엔 매번 update 수행 > 클라이언트에 적용 안 된 서버의 변동 내역을 클라이언트에 적용

4) checkout

- 버전 관리 정보, 소스 파일을 서버에서 클라이언트로 받아옴

5) lock/unlock

6) import

: 맨 처음 소스 파일을 저장하는 명령. 한 번 사용하면 다시 사용 X

7) export

: 버전 관리 정보 제외 순수 소스 파일만 서버에서 받아옴

8) info

: 정보 표시

9) diff

: 이전 리버전과의 차이 표시

10) merge

: 다른 디렉터리에서 작업된 버전 관리 내역을 기본 개발 작업과 병합

 

import > checkout > 작업 > add > update > commit

 

 

5. Git(깃) (분산 저장소 방식)

: 지역(로컬) 저장소, 원격 저장소 존재

- 지역 저장소) 실제 개발 진행 장소. 버전 관리가 수행됨

- 원격 저장소) 협업을 위해 버전을 공동 관리하는 곳. 자신의 버전 관리 내역을 반영 or 다른 개발자 변경 내용을 가져올 때 사용

- 지역 저장소에서 버전 관리 진행 > 버전 관리가 신속히 처리됨

- 원격 저장소 or 네트워크에 문제 있어도 작업 가능

- 브랜치 이용하면 기본 버전 관리 틀에 영향 주지 않음, 다양한 형태의 기능 테스팅 가능

- 파일 변화를 스냅샷으로 저장 > 이전 스냅샷의 포인터를 가지므로 버전 흐름 파악 가능

 

* 명령어

1) add

: 작업 내역을 지역 저장소에 저장하기 위해 스테이징 영역에 추가함

- -all 옵션 > 디렉터리 모든 파일을 스테이징 영역에 추가 가능

 

** 스테이징 영역: 작업 내용 한번 더 확인 > 선별적으로 지역 저장소 반영하기 위함

2) commit

: 작업 내역을 지역 저장소에 저장

3) branch

: 새 브랜치 생성

- 최초 commit > 마스터 브랜치가 생성됨

- commit 시마다 해당 브랜치는 가장 최근 commit한 내용을 가리키게 됨

- -d 옵션 > 브랜치 삭제 가능

4) checkout

- 지정 브랜치로 이동

- 현재 작업 중인 브랜치는 HEAD 포인터가 가리킴. 이 명령을 통해 HEAD 포인터 지정한 브랜치로 이동 가능

5) merge

: 변경 내역을 현 HEAD 포인터가 가리키는 브랜치에 반영 > 두 브랜치 병합

6) init

: 지역 저장소 생성

7) remote add

: 원격 저장소에 연결

8) push

: 로컬 저장소 변경 내역을 원격 저장소에 반영

9) fetch

: 원격 저장소 변경 이력만을 지역 저장소로 가져와 반영

10) clone

: 원격 저장소 전체 내용을 지역 저장소로 복제

11) fork

: 지정한 원격 저장소 내용을 자신의 원격 저장소로 복제

 

 

init > remote add > add > all > commit > push

fetch > 작업 > add > commit < push

댓글