뚱땅뚱땅

[2020 정보처리기사 필기] 2.3.47 소프트웨어 버전 관리 도구 본문

아카이브

[2020 정보처리기사 필기] 2.3.47 소프트웨어 버전 관리 도구

양순이 2020. 4. 1. 12:48
728x90

# 필기 참고: 2020 시나공 정보처리기사 필기 2. 소프트웨어 개발 >3.제품 소프트웨어 패키징

 

1. 공유 폴더 방식

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

- 개발자: 개발 완료된 파일을 약속된 공유 폴더에 매일 복사

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

- if 파일 오류 확인, 해당 파일 등록한 개발자에게 수정 의뢰

- if 이상x, 각 개발자들이 동작 여부 다시 확인

- 파일의 변경 사항을 데이터베이스에 기록하여 관리

- SCCS,RCS, PVCS, QVCS

 

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

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

- 서버의 자료를 자신의 PC(client)로 복사하여 작업한 후 변경된 내용을 서버에 반영

- 모든 버전 관리: 서버

- 하나의 파일을 서로 다른 개발자들이 수행할 경우: 경고 메시지 출력

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

- ex. CVS, SVN(Subversion), CVSNT, Clear Case, CMVS, Perforce

 

3. 분산 저장소 방식

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

- 원격 저장소의 자료를 로컬 저장소로 복사하여 작업 -> 변경된 내용을 로컬 저장소에서 우선 반영(버전 관리)-> 원격 저장소에 반영

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

 

4. Subversion (SVN)

CVS를 개선한 것

- 클라이언트/서버 구조. 서버(저장소, Repository)에는 최신 버전의 파일들과 변경 내역 관리

- 서버의 자료: 클라이언트로 복사해와서 작업 -> 변경 내용을 서버에 반영(Commit)

- 모든 개발 작업: trunk 디렉토리에서 수행. 추가작업: branches 디렉토리안에 별도의 디렉토리 만들어 작업 완료후 trunk 디렉토리와 병합(merge)

- commit할 때마다 revision 1 증가

  * revision: commit version. 처음 저장소 만들면 revision 0

- 클라이언트는 대부분의 os에서 사용됨, 서버: 주로 유닉스

- 소스: 오픈-> 무료로 사용가능

- 파일이나 디렉터리의 이름 변경 이동  가능

- 주요 명령어

명령어 의미
add

- 새로운 파일이나 디렉터리를 버전 관리 대상으로 등록

- add로 등록되지 않은 대상: commit의 적용 대상 아님

commit 버전 관리 대상으로 등록된 클라이언트의 소스파일을 서버의 소스 파일에 적용
update

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

- commit 전에는 매번 update 수행-> 클라이언트에 적용되지 않은 서버의 변동 내역을 클라이언트에 적용

checkout 버전 관리 정보, 소스파일 -> 서버에서 클라이언트로 받아옴
lock/unlock 서버의 소스 파일이나 디렉터리를 잠그거나 해제
import

아무것도 없는 서버의 저장소에 맨 처음 소스 파일을 저장하는 명령어.

한번 사용하면 다시는 사용 안함

export 버전 관리에 대한 정보를 제외한 순수 소스 파일만을 서버에서 받아옴
info 지정한 파일에 대한 위치나 마지막 수정 일자 등에 대한 정보 표시
diff 지정된 파일이나 경로에 대해 이전 리비전과의 차이 표시
merge 다른 디렉터리에서 작업된 버전 관리 내역을 기본 개발 작업과 병합

 

5. Git

- 분산 버전 관리 시스템. 지역 저장소&원격 저장소

- 지역 저장소: 개발자들이 실제 개발 진행하는 장소. 버전관리가 수행됨

- 원격 저장소: 버전을 공동 관리(for 협업), 자기의 버전 관리 내역을 반영하거나 다른 변경 내용 가져올 때

- 버전 관리: 지역 저장소->버전 관리 신속 처리 가능. 

   -> 원격 저장소/네트워크 문제에도 ㄱㅊ

- 브랜치 이용시 기본 버전 관리 틀에 영향 안주면서 다양한 형태의 기능 테스팅 가능

- 파일의 변화 형태; 스냅샷으로 저장. 스냅샷: 이전 스냅샷의 포인터를 가짐-> 버전의 흐름 파악 가능

- 주요 명령어

명령어 의미
add

- 작업 내용을 지역 저장소에 저장하기 위해 staging area에 추가함.

- '--all' 옵션으로 작업 디렉터리의 모든 파일을 스테이징 영역에 추가

commit 작업 내역을 지역 저장소에 저장
branch

- 새로운 브랜치 생성

- 최초 커밋 시 마스터 브랜치 생성

- 커밋할 때 마다 해당 브랜치는 가장 최근의 커밋 내용을 가리킴

- '--d' : 브렌치 삭제 가능

checkout

-지정 브랜치로 이동

- 현재 작업중인 브랜치는 HEAD포인터가 가리킴. 이 명령하면, HEAD포인터를 지정한 브랜치로 이동시킴

merge 지정한 브랜치의 변경 내역을 현재 HEAD포인터가 가리키는 브랜치에 반영 -> 두브랜치 병합
init 지역 저장소 생성
remote add 원격 저장소에 연결
push 로컬 저장소의 변경 내역을 원격 저장소에 반영
fetch 원격 저장소의 변경 이력만을 지역 저장소로 가져와 반영
clone 원격 저장소의 전체 내용을 지역 저장소로 복제
fork 지정한 원격 저장소의 내용을 자신의 원격 저장소로 복제
728x90
Comments