etc

[SVN] SVN(Subversion) 이란?

오늘도개발 2025. 3. 23. 08:52

 

1. SVN 이란?

  - 버전 관리 시스템(VCS, Version Control System) 의 한 종류

 

  - Apache Software Foundation에서 관리하는 오픈소스 프로젝트

 

  - 소스 코드나 문서 파일처럼 시간에 따라 변경되는 데이터의 버전을 체계적으로 관리 가능

 

  - 중앙집중형 버전 관리 시스템(Centralized Version Control System, CVCS)

 

  - 중앙 저장소(Repository)에서 관리되며, 개발자들은 이 저장소로부터 파일을 내려받고, 변경사항을 반영하며 관리

 

 

2. SVN VS Git

 

SVN 구조 vs Git 구조

 

  SVN Git
구조 중앙집중형(CVCS) 분산형(DVCS)
저장소 중앙 서버에 저장 각 개발자의 로컬에도 전체 저장소 복사
속도 서버 의존도가 높아 상대적으로 느림 로컬 작업이 많아 속도가 빠름
협업 방식 항상 중앙 저장소와 통신 로컬에서 작업 후 푸시(Push)
브랜치 브랜치 생성 비용이 크고 병합이 번거로움 브랜치가 가볍고 병합이 쉬움
사용 용도 정형화된 협업, 변경 제어가 중요한 조직 빠른 개발, 분산 협업 환경에 유리

 

 

3. 관련 용어 

 

용어  
Repository (저장소) 소스 코드와 이력 정보가 저장되는 중앙 공간
Working Copy (작업 사본) 로컬에 체크아웃(Checkout)한 복사본 (개발자는 이 로컬 복사본에서 작업 후 커밋)
Checkout 저장소로부터 파일을 내려받아 로컬에서 작업 사본( Working Copy )을 만드는 과정
Update 중앙 저장소의 변경사항을 작업 사본에 반영하는 과정Git의 pull과 유사)
Commit 작업 사본의 변경 내용을 중앙 저장소에 반영하는 작업(Git의 push 와 다르게 바로 중앙 저장소에 저장)
Revert 변경 사항을 이전 상태로 되돌림 (커밋 전/후 모두 가능하나 상황에 따라 다르게 작동)
Diff 두 버전 간의 변경사항을 비교하는 기능
Log 저장소에서 발생한 커밋 이력 (날짜, 작성자, 메시지 등)
Branch 독립적인 개발을 위한 분기선 (SVN에서는 브랜치가 디렉토리 복사 방식으로 관리되어 Git에 비해 무겁고 병합이 번거로움)
Tag 특정 시점의 소스 상태를 "이름"으로 보존하는 방식 (릴리즈 버전 관리 등에 사용)
Merge 브랜치나 작업 사본의 변경사항을 다른 곳으로 병합하는 작업 (Git보다 복잡함)
Conflict 여러 사용자가 같은 파일의 같은 부분을 수정했을 때 충돌 발생. (수동으로 해결)

 

  - 예시 코드

# 저장소에서 파일 내려받기
svn checkout http://www.example.com/project/main

# 작업 내용 서버에 업데이트
svn commit -m "수정한 내용 설명"

# 중앙 저장소의 변경사항을 로컬로 업데이트
svn update

# 작업한 파일 변경 사항 확인
svn status
svn diff

# 변경 내용을 이전으로 되돌리기
svn revert filename

 

 

4. commit 메시지 작성 요령 예시 (컨벤션)

 

 - svn 을 커밋할 때, 메시지를 일정한 양식을 사용하여 유지보수 편의성을 증가시킬 수 있음

 

  ex>  svn commit -m "[type] : 수정한 내용"

 

- type 예시

 

  • feat: 새로운 기능 추가
  • fix: 버그 수정
  • docs: 문서 수정 (예: README.md 수정)
  • style: 코드의 스타일이나 포맷 변경 (기능 변경 없음)
  • refactor: 코드 리팩토링 (기능 변경 없음)
  • test: 테스트 코드 추가 또는 수정
  • chore: 빌드 프로세스 또는 기타 설정 변경

 

 

'etc' 카테고리의 다른 글

[SVN] TortoiseSVN 설치 및 사용법  (0) 2025.03.23
[SVN] SVN 사용 전략  (0) 2025.03.23
[알고리즘] MST  (0) 2024.10.21
[JavaScript] JSONView 브라우저에서 Json 표기 변환  (0) 2024.01.24
Git 사용법  (0) 2023.04.26