[PBL-FE] 0. 작업 환경 세팅 - 3. 버전관리의 이해와 적용

Gangsan O·2022년 5월 18일
0

PBL-FE

목록 보기
3/8

3. 버전관리의 이해와 적용


3.1. 버전관리 이해

3.1.1. 버전관리 정의와 필요성

  • 버전관리 시스템(VCS)
    • 파일 변화를 시간에 따라 기록, 특정 시점의 버전을 다시 가져올 수 있는 시스템
  • 소스 코드 관리, 백업, 복구에 용이
  • 협업 시 혹은 다른 장소에서 작업 시 소스 동기화 용이
  • 동일 소스에서 동시에 다른 프로젝트가 진행 될 시 소스 병합에 용이
  • 이력 변경 확인 용이

3.1.2. 버전관리종류 | 로컬 버전 관리 시스템(⊃ RCS)

  • RCS(Revision Control System)
    • Patch Set(파일이 변경되는 부분)을 관리
    • Patch Set은 특별한 형식의 파일로 저장됨
    • 일련의 Patch Set을 적용해 모든 파일을 특정 시점으로 되돌릴 수 있음

3.1.3. 버전관리종류 | 중앙집중 버전 관리 시스템(CVCS)

  • 특징
    • 파일을 관리하는 서버가 별도로 존재, 클라이언트가 중앙 서버에서 파일을 받아서 사용(Checkout)
  • 장점
    • 팀원의 진행 상황을 알 수 있고 한 곳에서 관리 가능
  • 단점
    • 중앙 서버에 문제 발생시 모두에게 영향
  • CVS, Subversion, Perforce 등이 이 시스템을 이용

3.1.4. 버전관리종류 | 분산 버전 관리 시스템(DVCS)

  • 클라이언트가 단순히 파일의 마지막 스냅샷을 받아오지 않고 서버에 있는 저장소를 히스토리와 함께 모두 복제해 가져옴
  • 서버에 문제가 생겨도 가져왔던 저장소 복제물로 계속 작업을 할 수 있음
  • Git, Mecurial, Bazaar, Darcs 등이 이 시스템을 이용

3.2. 버전관리 툴

3.2.1. Git (GitHub, GitLab)

  • 특징
    • DVCS
    • 디렉토리가 네트워크 상태나 중앙 서버와 독립적으로 동작
    • 저장소의 완전한 복사본을 로컬에 저장
    • 변경 이력 모델 : Snapshot
    • 브랜치 병합 : n-Way
    • 수 많은 병렬 브랜치를 전제로 설계되었고 구현언어(C, Bourne Shell, Perl) 특성상 Linux에서 성능이 가장 좋음
  • 장점
    • 처리 속도가 빠름
    • 일시적 작업에 대한 이력관리가 용이
    • 이미 Commit한 소스 파일도 수정 가능
  • 단점
    • 저장소를 모두 복사해오기 때문에 대용량 소스 코드 관리에 부적절

+) Git, GitHub, GitLab 차이점

  • gitHub
    • git을 사용하는 프로젝트를 지원하는 웹 호스팅 서비스
    • 무료 플렌 사용 시
      • 디스크 사용량 제한 없음
      • 프로젝트 최대 1GB
      • 개별 파일 최대 100MB
      • 비공개 프로젝트 호스팅 불가
  • gitLab
    • snipet section을 통해 전체 프로젝트를 공유하지 않고도 적은 양의 코드 공유 가능
    • 저장소 push와 pull이 github보다 느림
    • 무료 플렌 사용 시

3.2.2. Subversion(SVN)

  • 특징
    • CVCS
    • 파일 및 디렌토리 삭제, 이동, 이름 변경, 복사 지원
  • 장점
    • 소스파일 이외의 이진 파일도 효율적으로 저장 가능
    • 저장소의 크기 상관 없이 일정한 시간에 업데이트 가능해 처리 속도가 상대적으로 빠름
  • 단점
    • 안정성이 CVS보다 불안정, svn 디렉토리로 인해 가독성이 떨어짐

3.2.3. Mercurial

  • 특징
    • 쉽게 사용하는 것에 중점을 둔 UI
    • Windows에서 성능이 가장 좋음
    • 변경 이력 모델 : Patch
    • 브랜치 병합 : 2-Way
  • 장점
    • 패키지에 필요로한 대부분의 확장이 포함되어 추가 설정이 필요 없음

3.3. 현 프로젝트 적용

3.3.3. 사용할 툴 : GitHub

  • 선정 이유
    • 웹 기반 호스팅 서비스로 접근이 용이
    • 이슈 트래킹 및 위키와 같은 공동 작업 기능 제공

참고자료

버전관리란? - git
Git vs Mercurial - naver D2
버전 관리 시스템 추천 - gaerae
VCS-버전관리 시스템에는 어떤것들이 있을까? - redcow77
jira 사용법 유튜브

profile
감동 코딩

0개의 댓글