📌 형상관리 툴(Version Control System)
소스코드의 변화를 추적하고 기록하기 위해서 사용하는 툴
📌 CVS(Concurrent Versions System)
2세대 VCS로 오랜 기간 사용되었다.(수정사항을 파일별로 추적하는 1세대 VCS인 RCS의 프론트엔드이다.)
중앙에 위치한 Repository에 파일을 저장하고, 모든 사용자가 접근 가능하도록 설계되어있다.
최종 버전의 소스만 관리한다. -> 혼자 개발할 경우에 적합하다.
- 장점
시스템이 안정적이다.
하나의 파일에 동시작업 가능한 최초의 VCS
파일 전체를 저장하는 것이 아니라 변경사항만을 저장함으로 용량을 적게 차지한다.
- 단점
파일 이동이나 이름 변경은 관리가 되지 않아서 파일을 지우고 다시 만들어야 한다.
버전 분기가 힘들다.
commit 실패 시 롤백 불가능
상대적으로 느린 속도
📌 SVN(Apache Subversion)
CVS를 대체하기 위한 시스템으로 개발되었다.
중앙 관리만 지원한다.
- 장점
원자적 commit으로 다른 사용자의 commit과 엉키지 않으며 commit 실패 시 롤백 지원 (원자적 commit : 파일 단위가 아닌 change set이 commit 단위)
효율적인 버전 분기, 언제든지 원하는 버전으로 복구 가능
이진파일도 효율적으로 저장 가능
- 단점
저장소 관리 명령어가 충분하지 않다.
CVS에 비해 상대적으로 불안정
Local Repository가 없기 때문에 자신만의 version history 관리 불가능(<-> git)
commit에 실수가 있을 시 다른 개발자에게 바로 영향을 준다. (SVN에서 commit을 하면 중앙저장소에 바로 합쳐진다.)
📌 Git
3세대 툴. 오늘날 가장 널리 사용되는 VCS
서버 저장소와 개발자 저장소가 독립적이다.
개인 개발자보다는 팀 개발을 위한 분산 환경 코딩에 최적화되어있다.
- 장점
빠른 속도
로컬에 레포지토리 복사 가능
오프라인에서도 이용 가능
commit실수를 해도 서버에 바로 영향 없음, 커밋 수정 가능.
사용자 기록 탐색 가능
- 단점
SVN보다 많은 기능을 지원하는 만큼 높은 진입장벽
한눈에 diff를 보기 어렵다.
참고
'기타' 카테고리의 다른 글
node.js 개발툴 | nodemon으로 서버 변경사항 바로 적용하기 (0) | 2022.09.27 |
---|---|
GitHub 꾸미기 | waka-box : 프로필에 코딩시간 표시하기 (0) | 2022.09.25 |
MySQL | 테이블 데이터 삭제하기(외래키 제약 무시) (0) | 2022.08.14 |
Httpie | HTTP요청 보내기 (0) | 2022.07.18 |
zsh: command not found: conda 오류(Mac) (0) | 2022.07.15 |