· 업무

SVN에 대해 알아보자

보안 정책 때문에 Git을 쓸 수 없는 현장에서 SVN을 맡게 되어, 클라이언트-서버 모델과 trunk/branches/tags 저장소 구조부터 짚고 들어간 시리즈의 첫 글.

작성날짜: 25.02.23

SVN 이란?

보통 회사 내 보안 이슈로 Git 사용 불가한 상황?

  • 아파치 서브버전 (Subversion) > 프로젝트 버전 관리를 위해 사용하는 형상관리 툴
  • 또 다른 형상관리 툴인 CVS 의 한계점 극복위해 개발
  • SVN은 클라이언트 서버 모델 을 따르도록 구현

대략적인 예시 구조

graph TD
    subgraph SVN_Server["🏢 SVN 서버"]
        R[(Repository<br/>📚)]
        trunk["trunk<br/>📂"]
        branches["branches<br/>🌿"]
        tags["tags<br/>🏷️"]
        R --- trunk
        R --- branches
        R --- tags
    end

    subgraph Windows_Client["Windows 클라이언트<br/>💻"]
        W_WC[["Working Copy<br/>📄"]]
    end

    subgraph Linux_Client["Linux 클라이언트<br/>🐧"]
        L_WC[["Working Copy<br/>📄"]]
    end

    subgraph Mac_Client["Mac 클라이언트<br/>🍎"]
        M_WC[["Working Copy<br/>📄"]]
    end

    R --"checkout<br/>commit"--> W_WC
    R --"checkout<br/>commit"--> L_WC
    R --"checkout<br/>commit"--> M_WC

    style SVN_Server fill:#f5f5f5,stroke:#333,stroke-width:2px
    style Windows_Client fill:#e6f3ff,stroke:#333,stroke-width:2px
    style Linux_Client fill:#ffe6e6,stroke:#333,stroke-width:2px
    style Mac_Client fill:#e6ffe6,stroke:#333,stroke-width:2px

1. 서버 구조

  • Repository: 모든 프로젝트 데이터와 이력이 저장되는 중앙 저장소
  • trunk: 주요 개발 줄기로, 실제 제품에 반영될 코드가 저장됨
  • branches: 새로운 기능 개발이나 버그 수정을 위한 분기 코드 저장
  • tags: 릴리스 버전 등 특정 시점의 코드 스냅샷을 저장

2. 클라이언트 구조

Windows
TortoiseSVN이 가장 널리 사용됨
GUI 기반으로 직관적인 조작 가능
Windows 탐색기와 통합되어 사용 편리
Linux
커맨드 라인 기반 svn 클라이언트 사용
RapidSVN 등 GUI 도구도 사용 가능
서버 구축이 용이하며 주로 서버 용도로 사용
Mac
Versions, Cornerstone 등 GUI 클라이언트 사용
터미널에서 커맨드 라인 도구로도 사용 가능

🚨 SVN은 중앙집중식 버전관리 시스템 !!

image
  • 이 방식은 각각의 개발자들이 본인의 코드 변경 사항을 하나의 중앙 repositorycommit 하는 방식