SVN
SVN(Subversion, 아파치 서브버전)
- 버전 관리 시스템(VCS) 중 하나
- 중앙 집중식 버전 관리 시스템(CVCS)의 대표적인 사례
SVN의 주요 특징과 개념
- 중앙 집중식: SVN 저장소는 중앙 서버에 위치하며, 사용자들은 이 중앙 저장소에서 최신의 코드를 가져오거나 (checkout) 변경 사항을 저장소에 반영(commit)합니다.
- Atomic Commits: SVN은 원자적 커밋을 지원합니다. 이는 여러 파일에 대한 변경 사항을 한 번의 커밋으로 그룹화하여 모든 변경이 함께 적용되거나 아예 적용되지 않는 것을 의미합니다.
- Branching & Merging: SVN은 브랜치 생성과 병합을 지원합니다. 이를 통해 동시에 여러 기능이나 버전의 개발이 가능하며, 나중에 필요한 경우 병합할 수 있습니다.
- Binary 파일 지원: SVN은 바이너리 파일에 대한 버전 관리도 지원합니다. 따라서 이미지나 문서와 같은 바이너리 데이터도 SVN을 통해 관리할 수 있습니다.
- 파일 기반: SVN의 기본적인 동작 방식은 파일 및 디렉토리의 변경을 추적합니다. 파일의 이름, 위치, 내용 등이 변경될 경우, 이러한 변경 사항을 저장소에 반영할 수 있습니다.
- WebDAV 프로토콜: SVN은 WebDAV 프로토콜을 사용하여 HTTP와 HTTPS 위에서 동작할 수 있습니다. 이를 통해 기존의 웹 서버와 통합하여 사용하기가 쉬워집니다.
- 클라이언트-서버 모델: SVN은 클라이언트-서버 아키텍처를 따릅니다. 사용자는 클라이언트 툴 (예:
svn명령어, TortoiseSVN 등)을 사용하여 중앙 서버에 있는 저장소와 상호작용합니다.
SVN과 Git 비교
- 시스템 구조:
- SVN: 중앙 집중식 버전 관리 시스템(Centralized Version Control System, CVCS). 모든 버전의 히스토리는 중앙 저장소에 저장되어 있습니다.
- Git: 분산 버전 관리 시스템(Distributed Version Control System, DVCS). 각 개발자의 로컬 저장소에 전체 히스토리가 복제되어 있습니다.
- 네트워크 연결:
- SVN: 대부분의 작업(로그 조회, 최신 버전과 비교 등)을 위해 중앙 저장소에 연결되어 있어야 합니다.
- Git: 대부분의 작업은 로컬 저장소에서 수행할 수 있으며 네트워크 연결은 주로 변경 사항을 푸시하거나 다른 저장소로부터 페치할 때만 필요합니다.
- 데이터 저장 방식:
- SVN: 리비전별로 파일의 변경을 저장합니다.
- Git: 객체 기반으로 데이터를 저장하며, 파일의 스냅샷을 저장합니다.
- 브랜치 및 병합:
- SVN: 브랜치는 디렉토리로 표현되며 병합은 비교적 복잡한 작업으로 여겨집니다.
- Git: 브랜치는 매우 경량이며, 브랜치 간의 이동 및 병합이 빠르고 쉽습니다.
- 속도:
- SVN: 대부분의 작업을 원격 저장소와의 통신을 통해 수행하기 때문에 Git에 비해 느릴 수 있습니다.
- Git: 대부분의 작업이 로컬에서 수행되므로 매우 빠른 작업 속도를 제공합니다.
- 학습곡선:
- SVN: 명령어와 개념이 비교적 단순하므로 초기 학습곡선이 낮습니다.
- Git: 다양한 기능과 개념을 포함하고 있어 초기 학습곡선이 높을 수 있으나, 한번 익히면 매우 효율적으로 사용할 수 있습니다.
- 보안:
- SVN: ACLs(Access Control Lists)과 같은 접근 제어 기능을 제공합니다.
- Git: 커밋 각각에 대한 SHA-1 체크섬을 사용하여 데이터 무결성을 유지합니다.
관련 소프트웨어
-
TortoiseSVN
-
서브버전을 마이크로소프트 윈도우에서 쉽게 쓸 수 있게 해주는 도구
-
탐색기에 통합된 프론트 엔드의 성격을 지니고 있어 팝업 메뉴/쉬운 명령법 등의 장점을 가지고 있다
-
-
CVS(Concurrent Versions System, 동시 버전 시스템)
- 프로젝트를 진행할 때 여러 개발자(지역적으로 떨어진)가 협력하여 작업할 수 있게 한다
- 한계점이 드러나 SVN으로 대체되고 있다
정리
- SVN은 버전 관리 시스템(VCS) 중 하나로 소스 코드의 변화를 추적하고 여러 버전을 관리하는 데 사용됩니다. SVN은 중앙 집중식 버전 관리 시스템(Centralized Version Control System, CVCS)으로 저장소가 중앙 서버에 위치하며, 사용자들은 이 중앙 저장소에서 최신의 코드를 가져오거나 (checkout) 변경 사항을 반영(commit)합니다.
참고
ChatGPT-4.0
보완/복습
- 2023.10.10 보완