[SVN] Subversion 개념 및 명령어 정리

2022. 1. 15. 15:52·SW 공학 & 프로그래밍 언어/형상관리
728x90
반응형

SVN의 대해서

  • CVS를 대체하기 위해 2000년부터 콜랩넷에서 개발
  • 클라이언트-서버 모델을 사용
  • 서버는 로컬 컴퓨터 내에 둘 수도 있고, 전산망에 연결된 별도의 컴퓨터에 두고 사용 가능
  • 통신규약 : http, https, svn, svn+ssh를 사용

 

SVN의 기능

  • 소프트웨어 개발시 개발시 소스의 수정과 변경사항을 관리가 용이
  • 작업 내역 커밋시 소스변경사항과 히스토리가 즉시 서버로 전송 및 저장
  • 수정 내영과 히스토리 파악이 매우 용이함

 

SVN의 워크플로우

SVN의 워크플로우는 다음과 같다.

  1. 최초 서버 소스를 Checkout하여 로컬에 저장소를 저장
  2. 소스를 수정
  3. Commit할 파일을 add
  4. Update를 통해서 저장소에 새로운 파일이 없는지 확인
  5. Update 과정에서 confilct가 일어나면 해결( 수정후, resolve 하면 됨)
  6. Commit을 해서 저장소에 파일을 등록

 

SVN의 용어

단순한 저장소의 SVN 프로젝트 시각화

  • repository(저장소) 
    • 프로젝트의 파일 변경과 히스토리 정보가 저장되는 장소
  • trunk
    • 메인 개발 소스
    • 메이저 릴리즈
  • branch
    • trunk에서 분기된 개발 소스
    • 즉, 메인 코드와 분리하여 별도의 가지로 프로젝트를 수행
    • 실험적이 기능 추가나 출시를 위한 안정화 버전 작업을 할 때
    • 분리된 branch는 개발 과정과 안정화 단계에 들어서면 메인 trunk에 Merge 함
  • tag
    • 특정 시점의 revision을 표시하고 개발이나 수정이 다시 필요한 시점에 태그를 활용
    • tag는 관례적으로 개발을 하지 않고 특정 시점을 열려두는 것
    • tag는 trunk의 각 revision을 나타냄
  • branch와 tag
    • branch와 tag는 trunk를 복사하는 개념이며, 완전 복사가 아닌 링크를 거는 방식이기에 적극적으로 활용하는 것이 좋음
  • Revision
    • 수정된 버전
    • Repository에 새로운 파일, 수정 등을 Commit할 때 마다 번호가 하나씩 증가
  • Head
    • Repository에 저장된 최신 revision을 의미
  • Base
    • 클라이언트가 Checkout, Update 등의 명령을 통해 Repository로 부터 내려받은 revision을 의미
    • 만약, Head와 Base의 revision이 다르면, Commit이 거부되고 Update를 먼저 수행해야 Commit이 가능해짐

 

SVN 명령어 정리

  • svn [명령어] [옵션]
  • .svn : 버전관리 관련 디렉토리
  • 예시
    • 서버 IP or Domain : svn-domain
    • SVN 서버 저장소 경로 : svn/example/trunk
    • SVN 로컬 저장소에 업로드할 디렉토리 : /home/exam

import : 맨 처음 프로젝트 시작할 때, 새로운 Repository를 저장소에 등록하는 명령어

# svn import [로털 디렉토리] svn://[IP or Domain]/[저장소 경로]
$ svn import /home/exam svn://svn-domain/svn/example/trunk

export : 버전 관리 파일들 뺀 소스코드만 받아오는 명령어 ( .svn 디렉터리 제외 )

$ svn export svn://svn-domain/svn/example/trunk

checkout[co] : 저장소에서 최신 버전 소스를 받아오는 명령어, ( .svn 포함 ) 

# svn checkout svn://[IP or Domain]/[저장소 경로]
$ svn checkout svn://svn-domain/svn/example/trunk

update : 로컬 저장소로 리비전을 받아오는 명령어

# 최신 revision을 받아옴
$ svn update
# revision 1로 받아옴
$ svn update -r 1

add : 버전 관리 대상으로 파일을 등록하는 명령어, add후 commit해야 저장소에 업로드 됨

$ svn add hello.java

commit[ci] : add한 대상들을 저장소로 업로드, revision 카운트 증가

# -m을 통해 메시지 추가 가능
$ svn commit -m "hello.java 추가"

status[stat, st] : 로컬 저장소에서 commit 되기 전 내용을 확인

# A : 추가
# C : 충돌
# D : 삭제
# M : 수정
# G : 병합

# 모든 상태를 확인
$ svn status

# 일부 파일만 확인
$ svn status hellow.java

revert : 로컬 저장소의 내용을 이전 상태로 되돌리는 명령어

# 로컬 저장소에서 add한 hello.java에 변경된 사항을 모두 취소함
$ svn revert hello.java

log : revision 로그 보기

# 모든 로그 확인
$ svn log

# revision 1의 변경사항 로그 확인
$ svn log -r 1

# revision 1004의 hello.java 파일의 변경사항 로그 확인
$ svn log -r 1004 hello.java

# revision 1~1004 범위 변경사항 로그 확인
svn log -r 1:1004

info : 로컬 저장소 또는 원격 저장소의 파일, 폴더 정보를 확인

# 로컬 저장소 표기
$ svn info
$ svn info /home/svn

# 원격 저장소 표기
$ svn info svn://svn-domain/svn/example/trunk

SVN 관련 소프트웨어

  • 윈도우 서버 - VisualSVN
  • 윈도우 클라리언트 - TortoiseSVN(윈도우용)
    서브버전을 윈도우에서 쉽게 사용할 수 있게 해주는 도구
    탐색기에 통합된 프론트엔드 성격을 지녀 팝업 메뉴/쉬운 명령법 등의 장점을 가짐
  • 리눅스 서버 - svnserve
  • 리눅스 클라리언트 - svn client(리눅스용)
    리눅스에 디폴트로 설치된 경우가 많음
  • Subclipse(개발통합환경)
    개발통합환경인 이클립스에서 서버버전을 사용할 수 있도록 지원하는 플러그 인
  • AnkhSVN
    VSCode와 통합을 제공

 


출처

아파치 서브버전 위키

아파치 SVN

SVN 개념

 

 

 

728x90
반응형
저작자표시 비영리 (새창열림)

'SW 공학 & 프로그래밍 언어 > 형상관리' 카테고리의 다른 글

[Git] Git 개념 및 명령어 정리  (0) 2022.01.16
'SW 공학 & 프로그래밍 언어/형상관리' 카테고리의 다른 글
  • [Git] Git 개념 및 명령어 정리
크크크크
크크크크
공뷰를 합시다.
    반응형
  • 크크크크
    Tom's Note
    크크크크
  • 전체
    오늘
    어제
    • 분류 전체보기 (131) N
      • IT 지식 (7) N
      • CS (66)
        • 알고리즘 & 자료구조 (19)
        • 운영체제 (41)
        • 네트워크 (1)
        • 데이터베이스 (5)
      • 보안 (6)
      • SW 공학 & 프로그래밍 언어 (5)
        • Java (28)
        • 디자인 패턴 (1)
        • 형상관리 (2)
        • 톰캣(WAS) (2)
        • SW 방법론 (3)
        • 스프링부트 (5)
      • 시스템 설계 (4)
        • Docker (2)
      • 자격증 (2)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      usermod
      chmod
      1급
      리눅스
      java
      암호설정
      which
      whereis
      문제해결
      단반향
      apropos
      DTO
      /etc/passwd
      passwd
      스프링부트
      REST API
      Chage
      ADsP
      man
      docker
      whatis
      DI
      2차
      자바
      비트연산
      su
      분석기법
      알고리즘
      불변
      cifs
    • 최근 댓글

    • 최근 글

    • 250x250
    • hELLO· Designed By정상우.v4.10.3
    크크크크
    [SVN] Subversion 개념 및 명령어 정리
    상단으로

    티스토리툴바