SVN사용법과 git차이점
형상관리 도구의 종류
- Client/Server 타입 : Subversion(SVN), CVS, Perforce, ClearCase, TFS
- 분산저장소 타입 : Git, Mercurial, Bitkeeper, SVK, Darcs
- Folder 공유 타입 : RCS, SCCS
SVN vs GIT
비교 | SVN | Git |
---|---|---|
시스템 | Centeralized Version Control System; CVCS; 중앙집중 버전관리 | Distributed Version Control System; DVCS; 분산 버전관리가능 |
정의 | 프로젝트의 모든 파일 및 히스토리는 중앙 서버에 저장됩니다. 개발자는 중앙 서버에서 파일을 받아와서 작업하고, 변경 사항을 중앙 서버에 커밋 | 각 개발자는 전체 저장소의 복사본을 로컬에 가지고 있습니다. 이로 인해 중앙 서버의 의존성이 줄어들고 오프라인 작업이 가능 |
각 개발자만의 version history | 불가능 | 가능 |
한계 | commit한 내용에 실수가 있을 시에 서버에(다른 개발자에게) 바로 영향을 미치게 되고 만약 중앙서버에 문제가 생기면 협업 불가능 | 다양한 기능이 있기 때문에 SVN보다 진입장벽이 높음 |
SVN 사용사례
- 작은 팀이 협업하는 경우
- 중앙 집중식 통제 및 보안이 필요한 경우
- 레거시 시스템과의 통합이 필요한 경우|
Git 사용사례
- 대규모 프로젝트 또는 분산된 팀이 협업하는 경우
- 빠른 브랜치 및 머지가 필요한 경우
- 유연한 작업 및 실험을 위한 필요성이 있는 경우
둘 중 어느 것이 무조건 더 좋다는 건 없는 것 같다. 팀에 맞게 사용하면 된다.
SVN GUI 사용법
- 회색 화살표 ▶ : local에서만 수정하고, 서버에서는 수정되지 않은 파일
Commit
하면 된다. - 파란 화살표 ◀ : local에서는 수정되지 않고, 서버에서만 수정된 파일
Update
하면 된다. - 빨간 화살표 ◀-▶ : local에서도 수정되었고, 서버에서도 수정된 파일 충돌 부분을 확인하면서 수정한다.
용어
- Commit : 서버로 나의 로컬 소스 코드를 올린다.
- git와 다른 점 : git같은 경우, 팀원들이 각각의 branch를 따로 만들어 로컬 소스를 서버에서 관리할 수 있었지만 SVN은 main브랜치 하나만 있다.
- Update : 서버 소스코드를 나의 로컬로 다운받는다.
- Override and Commit… : 서버를 무시하고 로컬에 있는 파일을 서버에 덮어 쓴다.
- Override and Update… : 로컬을 무시하고 서버에 있는 파일을 내 로컬로 덮어 쓴다.