요즘은 Git을 더 많이 쓴다네요🙃
SVN의 정의
SubVersion의 줄임말로
형상/소스관리툴
이다.
작동원리
여러명이서 작업하는 프로젝트의 경우 버전관리나 소스통합 중 문제가 발생할 수 있기 때문에,
저장소를 만들에 소스를 저장해서 사용한다.
하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있다.
형상관리란?
프로젝트를 수행하면서 생기는 산출물 및 소스코드 등 결과물을 형상이라고 하는데,
이러한 형상에 대한 변경을 체계적으로 관리하는 것을 뜻한다.
형상관리의 장점
형상관리 툴 사용시, 소스를 버전별로 관리할 수 있어서
개발할 때 실수로 소스를 삭제하거나 수정해도 이전으로 쉽게 돌아갈 수 있다.
또한, 누가 코드를 수정했는지 알 수 있기 때문에 코드를 병합하거나 수정된 소스를 수정하기 편하다.
SNV의 특징
은 다음과 같다.
Repository
프로젝트 파일 및 변경 정보가 저장되는 장소로, 모든 프로젝트의 프로그램 소스는 여기에 저장된다.
한 프로젝트 마다 하나의 저장소가 필요하며, 여러 사람 접근이 가능하다.
소스코드뿐만 아니라 소스 변경 사항도 저장된다.
Trunk
프로젝트의 가장 중심이 되는 디렉토리로, commit시 개발 소스가 모이는 곳이다.
모든 작업은 Trunk 디렉토리에서 이루어진다.
Branch
Trunk내의 작은 프로젝트를 뜻하는 개념이다.
Trunk에서 분리/복사한 소스로 버전별 배포판을 생성하거나, Trunk와 별도의 운영환경을 위한
안정화된 소스 관리 목적으로 사용된다.
Tag
버전 별로 소스코드를 따로 관리하는 공간이다.
Revision
클라이언트가 Repository에 Commit할때마다 번호가 하나씩 증가한다.
Head
Repository에 저장된 최신 version을 의미한다.
Base
클라이언트의 명령으로 인해 Repository로 부터 내려받은 revision을 의미한다.
만약 Head와 Base가 다르다면 commit이 거부되고 update를 먼저 수행해야 commit이 된다.
Import
빈 repository에 맨 처음 파일을 채우는 것
Export
버전 관리 파일을 뺀 순수 파일만 빼내는 것
Checkout
저장소에서 소스를 받아오는 명령어로, 소스뿐만 아니라 버전관리 파일도 받아옴
Update
로컬 저장소에 있는 파일들을 저장소의 최신 버전으로 받아오는 것
Commit
로컬 저장소의 변경 된 내용을 서버로 전송/Checkout한 파일의 수정사항 갱신
Revert
로컬 저장소의 내용을 이전으로 돌림
Add
버전관리 대상으로 파일 등록
Diff
예전 소스 파일과 지금의 소스 파일의 차이점을 비교
Blame
각 행에 대해 어떤 행을 누가 수정했는지 작업한 내용을 확인한다
lock
파일에 락을 걸어 락을 건 사용자만 수정이 가능하게한다.
SVN은 중앙 집중식 코드 관리 방식
으로,
대부분의 기능을 완성해둔 상태에서 중앙 저장소에 Commit하는 방식으로 사용한다.
개발자가 자신만의 Version History를 가질 수 없어 Commit한 내용에 문제가 있을 경우
다른 개발자에게 영향을 미치게 된다.
Git은 분산 소스코드 관리 방식
으로, 매 Commit마다 접근해서 push하는 방식이 아닌,
Local Repository에 Commit하며 쌓아두고 한번에 push하는 방식으로 사용한다.
파일 서버에 접근하는 빈도가 줄어들기 때문에 오류나 충돌 발생이 줄어들고,
Commit한 내용에 실수가 있어도 다른 개발자에게 바로 영향을 미치지 않는다.