그동안 소스코드 버전관리를 할 때 Git만 사용을 해왔는데, 이번 프로젝트에서 처음으로 SVN을 사용해보게 되었습니다. 이번 기회에 Git과 SVN의 기본 개념과 차이점을 간략하게 비교한 후, Git과 SVN 각각의 사용법과 SVN 사용 시 유의해야 할 점들을 정리해보려고 합니다.
1. 버전 관리 시스템 개요
Git
- 분산 버전 관리 시스템:
각 개발자가 로컬에 전체 이력을 보관하여 독립적인 작업이 가능하며, 네트워크 없이도 대부분의 작업을 진행할 수 있습니다. - 강력한 브랜치 관리:
경량 브랜치 생성 및 병합이 자유로워 실험적 기능 개발이나 병렬 작업에 유리합니다. - 빠른 속도와 유연성:
대규모 프로젝트 및 복잡한 협업 환경에서 뛰어난 성능을 자랑합니다.
SVN (Subversion)
- 중앙집중형 버전 관리 시스템:
모든 변경 사항이 중앙 서버에서 관리되므로, 최신 상태를 항상 중앙에서 확인할 수 있습니다. - 단순하고 안정적인 구조:
대형 프로젝트나 바이너리 파일 관리 등 안정성이 요구되는 환경에 적합합니다. - 네트워크 의존성:
중앙 서버와의 연결이 필수이며, 네트워크 문제가 발생하면 작업에 영향을 줄 수 있습니다.
2. Git과 SVN의 공통점 및 차이점
공통점
- 버전 이력 관리:
소스 코드 변경 내역을 기록하고 이전 상태로 복원할 수 있는 기능을 제공합니다. - 협업 기능:
여러 개발자가 동시에 작업하면서 변경사항을 쉽게 병합할 수 있습니다.
차이점
중앙집중형 vs. 분산형
- SVN:
중앙 서버를 기준으로 모든 작업이 이루어지며, 최신 변경사항이 서버에 반영됩니다. - Git:
각 개발자가 로컬에 전체 이력을 보유하고 있다가 필요할 때 원격 저장소와 동기화합니다.
브랜치 관리
- Git:
경량 브랜치로 자유롭게 기능을 분리하고 병합할 수 있어 실험적 개발에 적합합니다. - SVN:
브랜치와 태그는 디렉터리 구조로 관리되며, Git에 비해 다소 무겁게 느껴질 수 있습니다.
3. Git 기본 사용법
- 주요 명령어:
- git clone [저장소 URL]: 원격 저장소 복제
- git add [파일] 및 git commit -m "메시지": 변경사항 스테이징 및 커밋
- git push와 git pull: 원격 저장소와의 동기화
- git branch, git checkout, git merge: 브랜치 생성, 전환, 병합
4. SVN 기본 사용법 및 유의사항
SVN 기본 사용법
- 설치 및 초기 설정:
- SVN 클라이언트를 설치한 후 중앙 서버의 리포지토리 주소를 확인합니다.
- 주요 명령어:
- svn checkout [리포지토리 URL]: 중앙 리포지토리에서 작업 복사본 생성
- svn update: 최신 변경사항을 로컬에 반영
- svn commit -m "메시지": 로컬 변경사항을 중앙 서버에 반영
- svn add [파일] / svn delete [파일] / svn status: 파일 추가, 삭제, 상태 확인
- 브랜치와 태그 관리:
- SVN은 브랜치와 태그를 별도의 디렉터리로 관리합니다. 예를 들어, /branches, /tags, /trunk 디렉터리를 이용해 구조적으로 관리합니다.
SVN 사용 시 유의사항
- 네트워크 의존성:
SVN은 중앙 서버와의 연결이 필수이므로, 서버 장애나 네트워크 문제 시 작업에 지장이 있을 수 있습니다. - 충돌 관리:
여러 사용자가 동시에 작업할 때 충돌이 발생할 수 있으므로, 커밋 전 svn update를 통해 최신 상태를 반영하는 습관이 필요합니다. - 백업과 이력 관리:
SVN은 모든 변경 이력을 중앙에 저장하므로, 리포지토리 크기가 커질 수 있습니다. 주기적인 백업과 필요 시 이력 축소(앞서 설명한 dump/filter 작업)를 고려해야 합니다. - 워크플로우의 단순함:
SVN은 구조가 단순해 초보자도 쉽게 사용할 수 있지만, 브랜치 관리나 복잡한 병합 작업에서는 Git만큼 유연하지 않을 수 있습니다.
SVN의 경우 Git과 달리 로컬에 전체 버전의 이력이 저장되지 않고 중앙 서버에서만 데이터를 가져와 작업해야 하기 때문에, 불편함을 느낄 수도 있을 것 같습니다.
앞으로 실제 프로젝트에서 SVN을 사용하면서 이러한 특성을 잘 이해하고 적응해 나가야겠다는 생각이 듭니다.
(익숙함에 속아 소중함을 잃지 말자 .. Git아 ~~ 보고싶다 ~~ )
'실무' 카테고리의 다른 글
[금융IT] 보험 IT 시스템 정리 링크 모음 (0) | 2024.04.13 |
---|---|
[금융IT] 계정계, 정보계, 대외계 정리 (0) | 2024.04.13 |
댓글