본문 바로가기
실무

Git만 알던 개발자가 만난 SVN: 공통점 및 기본 사용법

by 녹녹1 2025. 3. 23.

그동안 소스코드 버전관리를 할 때 Git만 사용을 해왔는데, 이번 프로젝트에서 처음으로 SVN을 사용해보게 되었습니다. 이번 기회에 Git과 SVN의 기본 개념과 차이점을 간략하게 비교한 후, Git과 SVN 각각의 사용법과 SVN 사용 시 유의해야 할 점들을 정리해보려고 합니다.


1. 버전 관리 시스템 개요

Git

  • 분산 버전 관리 시스템:
    각 개발자가 로컬에 전체 이력을 보관하여 독립적인 작업이 가능하며, 네트워크 없이도 대부분의 작업을 진행할 수 있습니다.
  • 강력한 브랜치 관리:
    경량 브랜치 생성 및 병합이 자유로워 실험적 기능 개발이나 병렬 작업에 유리합니다.
  • 빠른 속도와 유연성:
    대규모 프로젝트 및 복잡한 협업 환경에서 뛰어난 성능을 자랑합니다.

SVN (Subversion)

  • 중앙집중형 버전 관리 시스템:
    모든 변경 사항이 중앙 서버에서 관리되므로, 최신 상태를 항상 중앙에서 확인할 수 있습니다.
  • 단순하고 안정적인 구조:
    대형 프로젝트나 바이너리 파일 관리 등 안정성이 요구되는 환경에 적합합니다.
  • 네트워크 의존성:
    중앙 서버와의 연결이 필수이며, 네트워크 문제가 발생하면 작업에 영향을 줄 수 있습니다.

2. Git과 SVN의 공통점 및 차이점

공통점

  • 버전 이력 관리:
    소스 코드 변경 내역을 기록하고 이전 상태로 복원할 수 있는 기능을 제공합니다.
  • 협업 기능:
    여러 개발자가 동시에 작업하면서 변경사항을 쉽게 병합할 수 있습니다.

차이점

중앙집중형 vs. 분산형

  • SVN:
    중앙 서버를 기준으로 모든 작업이 이루어지며, 최신 변경사항이 서버에 반영됩니다.
  • Git:
    각 개발자가 로컬에 전체 이력을 보유하고 있다가 필요할 때 원격 저장소와 동기화합니다.

브랜치 관리

  • Git:
    경량 브랜치로 자유롭게 기능을 분리하고 병합할 수 있어 실험적 개발에 적합합니다.
  • SVN:
    브랜치와 태그는 디렉터리 구조로 관리되며, Git에 비해 다소 무겁게 느껴질 수 있습니다.

SVN과 git의 차이


3. Git 기본 사용법

  1. 주요 명령어:
    • git clone [저장소 URL]: 원격 저장소 복제
    • git add [파일] 및 git commit -m "메시지": 변경사항 스테이징 및 커밋
    • git push와 git pull: 원격 저장소와의 동기화
    • git branch, git checkout, git merge: 브랜치 생성, 전환, 병합

4. SVN 기본 사용법 및 유의사항

SVN 기본 사용법

  1. 설치 및 초기 설정:
    • SVN 클라이언트를 설치한 후 중앙 서버의 리포지토리 주소를 확인합니다.
  2. 주요 명령어:
    • svn checkout [리포지토리 URL]: 중앙 리포지토리에서 작업 복사본 생성
    • svn update: 최신 변경사항을 로컬에 반영
    • svn commit -m "메시지": 로컬 변경사항을 중앙 서버에 반영
    • svn add [파일] / svn delete [파일] / svn status: 파일 추가, 삭제, 상태 확인
  3. 브랜치와 태그 관리:
    • SVN은 브랜치와 태그를 별도의 디렉터리로 관리합니다. 예를 들어, /branches, /tags, /trunk 디렉터리를 이용해 구조적으로 관리합니다.

SVN 사용 시 유의사항

  • 네트워크 의존성:
    SVN은 중앙 서버와의 연결이 필수이므로, 서버 장애나 네트워크 문제 시 작업에 지장이 있을 수 있습니다.
  • 충돌 관리:
    여러 사용자가 동시에 작업할 때 충돌이 발생할 수 있으므로, 커밋 전 svn update를 통해 최신 상태를 반영하는 습관이 필요합니다.
  • 백업과 이력 관리:
    SVN은 모든 변경 이력을 중앙에 저장하므로, 리포지토리 크기가 커질 수 있습니다. 주기적인 백업과 필요 시 이력 축소(앞서 설명한 dump/filter 작업)를 고려해야 합니다.
  • 워크플로우의 단순함:
    SVN은 구조가 단순해 초보자도 쉽게 사용할 수 있지만, 브랜치 관리나 복잡한 병합 작업에서는 Git만큼 유연하지 않을 수 있습니다.

 

SVN의 경우 Git과 달리 로컬에 전체 버전의 이력이 저장되지 않고 중앙 서버에서만 데이터를 가져와 작업해야 하기 때문에, 불편함을 느낄 수도 있을 것 같습니다. 

 

앞으로 실제 프로젝트에서 SVN을 사용하면서 이러한 특성을 잘 이해하고 적응해 나가야겠다는 생각이 듭니다.

 

(익숙함에 속아 소중함을 잃지 말자 .. Git아 ~~ 보고싶다 ~~ )

댓글