※ 공부 내용의 복습 개념으로 정리된 글입니다. - 출처 시나공
공유 폴더 방식
공유 폴더 방식은 비전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식으로, 다음과 같은 특징이 있습니다.
- 개발자들은 개발이 완료된 파일을 약속된 공유 폴더에 매일 복사합니다.
- 담당자는 공유 폴더의 파일을 자기 PC로 복사한 후 컴파일 하여 이상 유무를 확인합니다.
- 이상 유무 확인 과정에서 파일의 오류가 확인되면, 해당 파일을 등록한 개발자에게 수정을 의뢰합니다.
- 파일에 이상이 없다면 다음날 각 개발자들이 동작 여부를 다시 확인합니다.
- 파일을 잘못 복사하거나 다른 위치로 복사하는 것에 대비하기 위해 파일의 변경 사항을 데이터베이스에 기록하여 관리합니다.
- 종류에는 SCCS, RCS, PVCS, QVCS 등이 있습니다.
※ RCS(Revision Control System)
RCS는 여러 개발자가 프로젝트를 수행할 때 시간에 따른 파일 변화 과정을 관리하는 소프트웨어 버전 관리 도구로, 소스 파일을 동시에 수정하는 것을 방지하고, 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있습니다.
클라이언트 / 서버 방식
클라이언트/서버 방식은 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식으로, 다음과 같은 특징이 있습니다.
- 서버의 자료를 개발자별로 자신의 PC(클라이언트)로 복사하여 작업한 후 변경된 내용을 서버에 반영합니다.
- 모든 버전 관리는 서버에서 수행됩니다.
- 하나의 파일을 서로 다른 개발자가 작업할 경우 경고 메시지를 출력합니다.
- 서버에 문제가 생기면, 서버가 복구되기 전까지 다른 개발자와의 협업 및 버전 관리 작업은 중단됩니다.
- 종류에는 CVS, SVN(Subversion), CVSNT, Clear, Case, CMVC, Perforce 등이 있습니다.
분산 저장소 방식
분산 저장소 방식은 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리하는 방식으로, 다음과 같은 특징이 있습니다.
- 개발자별로 원격 저장소의 자료를 자신의 로컬 저장소로 복사하여 작업한 후 변경된 내용을 로컬 저장소에서 우선 반영(버전 관리)한 다음 이를 원격 저장소에 반영합니다.
- 로컬 저장소에서 버전 관리가 가능하므로 원격 저장소에 문제가 생겨도 로컬 저장소의 자료를 이용하여 작업할 수 있습니다.
- 종류에는 Git, GNU arch, DCVS, Bazaar, Mercurial, TeamWare, Bitkeeper, Plastic SCM 등이 있습니다.
Subversion(서브버전, SVN)
Subversion은 CVS를 개선한 것으로, 아파치 소프트웨어 재단에서 2000년에 발표하였습니다.
- 클라이언트/서버 구조로, 서버(저장소, Repository)에는 최신 버전의 파일들과 변경 내역이 관리됩니다.
- 서버의 자료를 클라이언트로 복사해와 작업한 후 변경 내용을 서버에 반영(Commit)합니다.
- 모든 개발 작업은 trunk 디렉터리에서 수행되며, 추가 작업은 branches 디렉터리 안에 별도의 디렉터리를 만들어 작업을 완료한 후 trunk 디렉터리와 병합(merge)합니다.
- 커밋(Commit)할 때마다 리비전(Revision)이 1씩 증가합니다.
- 클라이언트는 대부분의 운영체제에서 사용되지만, 서버는 주로 유닉스를 사용합니다.
- 소스가 오픈되어 있어 무료로 사용할 수 있습니다.
- CVS의 단점이었던 파일이나 디렉터리의 이름 변경, 이동 등이 가능합니다.
- 다음은 Subversion의 주요 명령어입니다.
※ CVS(Concurrent Version System)
CVS는 공동 개발을 편리하게 작업 할 수 있도록 각종 소스의 버전 관리를 도와주는 시스템입니다.
※ trunk
trunk는 '몸통', '줄기'라는 의미로, 개발 과정에서 가장 중심이 되는 디렉터리입니다.
trunk 디렉터리 안에 소스 파일과 추가 작업을 위한 서브 디렉터리인 branches 디렉터리가 있습니다.
※ branches
branch는 '가지', '부문'이라는 의미로, 메인 개발 과정과는 별도로 새로운 기능의 테스트와 같이 추가적인 작업을 수행하기 위한 디렉터리입니다.
branches 디렉터리 하위에 작업별로 디렉터리를 만들어 그 안에서 개발을 진행합니다.
이후 별도의 디렉터리에서 진행된 개발 결과를 trunk와 병합할 수 있습니다.
※ 리비전(Revision)
리비전은 커밋의 버전으로, 처음 저장소를 만들면 리비전은 0이 됩니다.
이후 커밋이 수행될 때마다 리비전이 1씩 증가합니다.
Git(깃)
Git은 리누스 토발즈(Linus Torvalds)가 2005년 리눅스 커널 개발에 사용할 관리 도구로 개발한 이후 주니오 하마노(Junio Hamano)에 의해 유지 보수되고 있습니다.
- Git은 분산 버전 관리 시스템으로 2개의 저장소, 즉 지역(로컬) 저장소와 원격 저장소가 존재합니다.
- 지역 저장소는 개발자들이 실제 개발을 진행하는 장소로, 버전 관리가 수행됩니다.
- 원격 저장소는 여러 사람들이 협업을 위해 버전을 공동 관리하는 곳으로, 자신의 버전 관리 내역을 반영하거나 다른 개발자의 변경 내용을 가져올 때 사용합니다.
- 버전 관리가 지역 저장소에서 진행되므로 버전 관리가 신속하게 처리되고, 원격 저장소나 네트워크에 문제가 있어도 작업이 가능합니다.
- 브랜치를 이용하면 기본 버전 관리 틀에 영향을 주지 않으면서 다양한 형태의 기능 테스팅이 가능합니다.
- 파일의 변화를 스냅샷(Snapshot)으로 저장하는데, 스냅샷은 이전 스냅샷의 포인터를 가지므로 버전의 흐름을 파악할 수 있습니다.
- 다음은 Git의 주요 명령어입니다.
※ 원격 저장소
원격 저장소는 주로 웹 서버를 빌려 사용하는데, Git 사용자들이 가장 많이 사용하는 웹 호스팅 서비스는 깃 허브(Github.com)입니다.
깃 허브는 오픈소스 프로젝트에 대해서는 무료로 제공하지만 소스를 비공개로 하는 프로젝트에 대해서는 비용을 받습니다.
※ 브랜치(Branch)
Git에서는 저장소가 처음 만들어지면 마스터(master) 브랜치가 생성되고 이 브랜치에서 기본적인 버전 관리가 진행됩니다.
새로운 기능을 추가하는 작업을 수행하며, 작업이 정상적으로 마무리되면 작업 내역을 마스터 브랜치에 병합합니다.
이렇게 마스터 브랜치와 별도로 생성하는 브랜치를 토픽(Topic)브랜치 또는 피처(Feature) 브랜치라고 합니다.
각각의 브랜치는 다른 브랜치에 영향을 주지 않으므로 독립적인 여러 작업을 동시에 진행할 수 있습니다.
※ 스냅샷(Snapshot)
스냅샷은 영문자와 숫자가 혼합된 40자리 문자열로 표시됩니다.
※ 포인터(Pointer)
포인터는 접근하고자 하는 데이터가 기억되어 있는 위치에 대한 정보를 의미합니다.
※ 스테이징(Staging) 영역
작업 내역을 바로 commit해 지역 저장소에 저장하지 않고 스테이징 영역에 저장했다가 commit을 하는 이유는 스테이징 영역에서 작업 내용을 한 번 더 확인하여 선별적으로 지역 저장소에 반영하기 위함입니다.
이렇게 하면 스테이징 영역을 사용하지 않을 때보다 시간은 더 소요되지만 좀 더 안정된 버전 관리 작업이 가능합니다.
'정보처리산업기사' 카테고리의 다른 글
정보처리산업기사 - 정보 시스템 기반 기술 용어 - SW / 보안 관련 신기술 (0) | 2024.07.28 |
---|---|
정보처리산업기사 - 테스트 및 배포 - 빌드 자동화 도구 (0) | 2024.07.27 |
정보처리산업기사 - 테스트 및 배포 - 소프트웨어 버전 등록 (0) | 2024.07.24 |
정보처리산업기사 - 테스트 및 배포 - UI 테스트 기법의 종류 (0) | 2024.07.24 |
정보처리산업기사 - 테스트 및 배포 - UI 설계 도구 (2) | 2024.07.24 |