SVN은 SubVersion의 줄임말로 형상관리/소스 관리 툴로서 쉽게말해 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 툴이다.
여러명이서 작업하는 프로젝트의 경우 버전관리나 각자 만든 소스의 통합과 같은 문제를 해결하기 위해 저장소를 만들어 그곳에 소스를 저장해 소스 중복이나 여러 문제를 해결하기 위한 Software이다.
프로젝트 소스는 SVN 서버의 Trunk라는 곳에 위치 -> 자신의 Local에 Trunk의 소스를 다운 받아(update) 수정 및 추가 후 다시 업로드(commit)하는 방식으로 자신만의 소스를 다른 개발자들과 떨어져서 작업하려면 Branch(원 소스의 나뭇가지)를 만들어 작업 후 자기자신만 접근하여 개발하며 완성되면 Merge 기능을 사용하여 Trunk와 소스를 합치면 된다.
ex)A가 자신이 수정한 소스나 폴더를 Commit하면 B는 해당 소스를 Update받으면 최신의 소스를 받아올 수 있다
버전관리의 목적
작업 이력 관리
문제 파악
예전 버전의 파일 복원
수정한 부분 검증
협업 지원
버전관리 툴 용어
Repository: 프로젝트 파일 및 변경 정보가 저장되는 장소
Import: 빈 Repository에 맨 처음 파일들을 채우는 것
Export: 버전 관리 파일들을 뺀 순수 파일만 빼내는 것
Checkout: 저장소에서 최신 버전의 소스코드를 최초로 받아오는 것 / Repository에서 프로젝트 관련 파일들을 받아온다
Update: 로컬 저장소에 있는 파일들을 저장소의 최신 버전으로 받아 오기
Commit: 로컬 저장소의 변경된 내용을 서버로 전송 / Checkout한 파일의 수정사항을 갱신
Revert: 로컬 저장소의 내용을 이전 상태로 돌림
Add: 버전관리 대상으로 파일 등록
Trunk: 개발 소스를 commit 했을 때 개발 소스가 모이는 곳 / 프로젝트에서 가장 중심이 되는 디렉토리, 소스와 파일 포함
Branch: trunk에서 분리/복사한 소스로 버전별 배포판을 만들거나 trunk와 별도로 운영환경을 위한 안정화된 소스 관리 목적으로 사용
Tag: 특정 시점의 상태 보존 목적으로 사용 장기적으로 1.0, 1.1 등 버전 별로 소스 코드를 따로 저장