형상관리툴(Version Control Revision Control)

- 소프트웨어 버전 관리 툴
- 형상관리는 소스의 변화를 끊임없이 관리하는 것을 말한다.
- 소스를 버전 별로 관리할 수 있어 개발 시 실수로 소스를 삭제하거나 수정 전으로 돌아가야 하는 경우 유용하게 사용되는 툴이다.
- 팀 프로젝트에서 사용 시 누가 어떻게 수정했는지 알 수 있기 때문에 코드 병합이나 수정된 소스를 추적하는 데에도 사용한다.

  • Git 분산 버전 관리 시스템

  • SVN 중앙 집중식 버전 관리 시스템



워크플로우

Git

  • 각 개발자의 로컬 저장소에 전체 코드 이력이 복제되며 개발자들은 로컬 저장소에서 작업한 후 다른 사용자와 변경 내역을 교환하며 통합한다.
  • 로컬에 저장을 할 수 있기 때문에 SVN보다 비교적 충돌 가능성이 높다.

SVN

  • 중앙 서버에서 저장소를 관리하고 개발자들이 서버와 통신하여 코드 변경 내역을 저장하고 업데이트한다.

브랜치

Git

  • 기존의 커밋 히스토리를 참조하는 방식 사용하기 때문에 브랜치를 생성해도 새로운 파일이 추가되지 않고 저장소의 용량이 증가하지 않는다.
  • 브랜치를 빠르고 효율적으로 관리할 수 있는 도구를 많이 제공한다. 브랜치를 만들고 삭제하는 것이 매우 간단하며 브랜치 간의 병합고 쉽고 빠르다. 또한 Git에서는 브랜치를 이용한 병렬 개발이 매우 쉽게 가능하므로 여러 개발자가 동시에 작업을 수행할 때도 효율적으로 협업할 수 있다.

SVN

  • 전체 파일을 복사해 새로운 디렉토리를 생성하는 방식을 사용하기 때문에 브랜치를 생성할 때마다 새로운 파일이 추가되며 이로 인해 저장소의 용량이 증가하게 된다.

저장소 크기와 성능, 보안 및 접근 제어

Git

  • 로컬 저장소에서 작업이 가능하기 때문에 서버에 접근하는 횟수가 적어지고, 작업 내용을 로컬 저장소에 저장하기 때문에 네크워크 사용도 비교적 적다.
    일반적으로 SVN보다 높은 성능을 보이고 있으며 저장소 크기도 더 작게 유지된다.
  • 기본적으로 소스 코드의 변경 이력을 기록하는 것에만 초점을 두고 있으며 저장소에 대한 접근 제어 기능이 제한적이다. 따라서 보안이나 엄격한 접근 제어가 필요한 경우에는 SVN이 Git보다 적합할 수 있다.

SVN

  • 파일의 변화를 추적하는 방식으로 파일을 저장하기 때문에 저장소의 크기가 커질 수 있다.
  • 경로 기반의 접근 제어를 제공하며 특정 경로의 사용 권한을 지정할 수 있기 때문에 특정 사용자 또는 그룹이 특정 결로에 액세스하는 것을 제한할 수 있어 보안성을 강화할 수 있다.


관련 용어

  • Repository : 저장소를 의미하며 저장소는 히스토리, 태그, 소스의 가지치기 혹은 branch에 따라 버전을 저장한다. 저장소를 통해 작업자가 변경한 모든 히스토리를 확인할 수 있다.
  • Working Tree : 저장소의 어느 한 시점을 바라보는 작업자의 현재 시점
  • Staging Area : 저장소에 커밋하기 전에 커밋을 준비하는 위치
  • Commit : 현재 변경된 작업 상태 점검을 마치면 확정하고 저장소에 저장하는 작업
  • Head : 현재 작업 중인 Branch를 가리킨다.
  • Branch : 가지 또는 분기점을 의미하며 작업을 할 때 현재 상태를 복사하여 Branch에서 작업을 한 후 완전하다 싶을 때 Merge하여 작업을 한다.
  • Merge : 다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업을 의미한다.


출처
https://goddaehee.tistory.com/91
https://needjarvis.tistory.com/803

0개의 댓글

Powered by GraphCDN, the GraphQL CDN