순서
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와 반대로 커밋 목록에서 제외하는
'개발 공부' 카테고리의 다른 글
[@RequestParam vs @RequestBody vs @ModelAttribute] feat. 검증 (0) | 2023.08.21 |
---|---|
[@RequestMapping] feat. HTTP 메소드 (0) | 2023.08.17 |
[기본 타입, 래퍼 클래스] feat. 박싱, 언박싱 (0) | 2023.06.20 |
[call by value, call by reference] feat. stack 영역, heap 영역 (0) | 2023.06.20 |
[HTTP, 웹소켓] feat. AJAX (0) | 2023.06.13 |