본문 바로가기
개발 공부

[SVN vs Git] feat. 형상 관리 툴

by 도됐좋 2023. 8. 3.
순서
1. 형상 관리 툴
2. SVN
3. Git
4. SVN vs Git
5. SVN 용어 사전

 

형상 관리 툴

 '형상 관리'란

   : 소프트웨어를 개발 및 유지보수하는 과정에서 소스의 변화를 계속해서 기록하고 관리하는 것

 

'형상 관리 툴'이란

   : 소스를 버전 별로 기록하며 형상 관리를 도와주는 툴

    누가 무엇을 언제 어떻게 수정했는지 다 기록되기 때문에

    특히 팀 단위의 프로젝트를 진행할 때, 코드를 수정하고 병합하고 추적하는 데에 유용함

 

➤ 형상 관리 툴 종류

- 클라이언트/서버 타입 : SVN 등등

- 분산 저장소 타입 : Git 등등

(Folder 공유 타입도 존재)

 


 

 SVN

 특징

- 아파치 라이선스 보유, 오픈 소스

- 중앙 집중식 버전 관리 시스템

  : 소스의 저장소를 서버로 두고, 작업하는 PC를 클라이언트로 연결하여 관리

  : 각 개발자들이 코드 변경 사항을 하나의 중앙 저장소에 커밋하는 방식


 

Git

 특징

- 강력한 분산 기능과 확장성

- 로컬, 클라이언트, 리모트 간의 종속성을 깨는 구조

 


 

SVN vs Git

  SVN Git
난이도 쉬움 어려움
프로세스 중앙 집중식 분산 관리식
소스 충돌 위험 매우 높음 낮음
기능 '버전 관리'에 최적화된 간편한 기능 편의성을 위한 더 다양한 기능
저장소 백업 불편함 편리함
다수 작업 관리
작업 내용 복구
브랜치 생성

 

** 그래서 Git이 더 많이 사용되는 이유는?

- SVN은 저장소가 1개이기 때문에 데이터가 소실되면 복구 불가능하고 주기적인 저장소 백업 필요한데

- Git은 모든 작업이 로컬에서 이루어지고,

  네트워크 사용은 원격저장소로 저장할 때, 한 번 이루어지므로 처리 속도가 빠르고,

  웹 상에 저장소를 둘 수 있기 때문에 언제 어디서나 협업이 가능하고,

  원격 저장소의 내용이 모든 협업자들의 로컬 저장소에 저장되므로 복구가 용이하고

  등등 이런 장점이 있기 때문!

  (하지만 우리 회사는 SVN을 씀!)

 


 

SVN 용어 사전

Repository

- 서버에 올라가 있는 저장소로 URL이 있는 모든 사용자가 접근 가능

- SVN에서 말하는 저장소는 보통 Remote Repository를 의미

 

 Revision

- 저장소에 올라가 있는 파일들의 버전

- 리비전을 통해 롤백을 수행하거나, 이전 소스코드를 확인

- 리비전 수는 commit을 수행할 때 마다 올라감

 

Trunk & Branch

- Trunk : 저장소의 중심

- Branch : 트렁크에서 파생되어 나온 작업 공간

- 보통 Trunk 소스코드에서 기능별/작업별로 Branch를 만들어서 개발하고 나중에 트렁크에 합치는 식으로 진행

 

 Tag

- 여러 브랜치들이 모여서 만들어진 트렁크에 대해

  특정 지점을 기록하기 위한 꼬리표

 

Checkout

- 소스코드를 내 PC로 내려받는 것(Git의 clone과 동일)

 

Import

- 원격 저장소에 버전 관리할 소스 코드를 넣는 것

 

Export

- 원격 저장소에서 소스 코드를 가져오는 것

- 체크아웃과 다른 점은 .svn 숨김 폴더(버전 관리 파일)를 제외한 순수 소스 코드만 가져옴

 

Commit

- 변경 사항들을 원격 저장소에 저장하는 것

- 수행하는 사람, 커밋 메시지, 날짜 등이 기록되고 리버전이 갱신됨

 

Update

- 원격 저장소에서 다른 사람에 의해 변경된 코드를 내 PC에 반영하는 것

- 작업을 하기 전, 커밋을 하기 전 수시로 수행

 

 Revert

- 내 PC에서 수정했던 작업 내역을 되돌리는 것

 

Merge

- 내 브랜치와 다른 사람의 브랜치를 합치는 것

- update 시 자동 수행

 

Conflict

- 동일한 파일을 여러 사람이 수정한 경우 등 발생하는 충돌 문제

 

 Lock

- Conflict를 막기 위해 Lock 명령어를 걸면 Lock을 건 사용자만 파일 수정 가능 

- 사용 후 반드시 unlock 수행해야 함

 

Add

- 원격 저장소에 커밋하기 위해 *VCS 목록에 추가하는 것

*VCS : 버전 관리 시스템(Version Controll System)

 

 Ignore

- Add와 반대로 커밋 목록에서 제외하는