SVN

이보아·2024년 4월 17일
0

SVN 이란?

저장소를 만들어 그곳에 소스를 저장하여, 소스 중복이나 여러문제를 해결하는 형상관리/소스 관리 툴이다.


SVN 용어

Repository

프로젝트 파일 및 변경 정보가 저장되는 장소 프로그램 소스들은 이 저장소 안에 저장된다.
한프로젝트 마다 하나의 저장소가 필요하며, 네트워크를 통해서 여러 사람이 접근 할 수 있고,
소스뿐만이 아니라 소스의 변경 사항도 모두 저장된다.

Trunk

프로젝트에서 가장 중심이 되는 디렉토리로, 개발 소스를 Commit했을 때 개발 소스가 모이는 장소이다.

Branch

trunk에서 뻗어져 나온 나뭇가지를 의미하며, 프로젝트 내의 작은 프로젝트 개념이다.

trunk 디렉토리에 모든 프로젝트를 같은 시기에 개발하기에는 무리가 있기때문에
프로젝트별로 작은 분류로 나누어 따로 개발을 해야할 경우 branch에서 개발을하고
최종으로 branch에 작업한 프로젝트를 trunk에 머지한다.

Revision

수정할때 클라이언트가 Repository에 새로운 파일, 수정등을 commit할때마다 번호가 하나씩 증가한다.

Repository에 저장된 최신 revision을 의미한다.


SVN 명령어

Import

맨 처음 프로젝트 시작할때 빈 Repository에 맨 처음 파일들을 저장소에 등록하는 명령어이다.

svn import  

Checkout

저장소에서 소스를 받아오는 명령어이다. 소스뿐만 아니라 버전관리를 위한 파일도 함께 받아온다.

svn checkout(co) [저장소 주소] [체크아웃 할 폴더 경로] 

Add

새로운 파일 추가 변경 후 반드시 commit을 해줘야 repository에 반영이된다.

svn add

Commit

로컬 저장소의 체크아웃 한 소스의 변경된 내용을 저장소에 저장하여 갱신하는 명령어이다.

svn commit(ci)

Update

체크아웃 해서 받은 소스를 서버 저장소의 최신 소스 버전으로 업데이트 하는 명령어이다.

svn upate(up) --set-depth infinity // 서버 저장소에 있는 모든 소스를 업데이트함   
svn upate(up)  --set-depth immediate // 서버 저장소에 있는 한 댑스만 업데이트함 

⚠️ set을 붙이게되면 서버 저장소의 소스가 새로 받아지며, set없이 -depth부터 입력하면 기존에 서버에서 받은 소스는 제외하고 업데이트된 파일만 받게된다.

Revert

로컬 저장소의 소스 코드 내용을 이전 상태로 돌리는 명령어이다.

svn revet
svn revert -R . // 전체를 이전 상태로 돌리는 명령어

Delete

삭제하는 명렁어이다.

svn delete [삭제할 파일명]

Status

작업중인 파일의 상태를 체크할 수 있는 명령어이다.

svn status

Log

저장소에 어떠한 것들이 변경 되었는지 revison을 통해 확인 할 수 있는 명렁어이다.

svn log -r [revision번호] // revision번호를 이용하여 특정 영역 히스트리 가져옴
svn log -r BASE:HEAD // revision번호를 모르는 상태에서 현재 작업하고 있는 저장소의 log를 받고 싶을때 유용함

Diff

예전 소스 파일과 지금의 소스 파일의 차이점을 비교해 보는 명령어이다.

svn diff
svn diff(di) -r [리비전1]:[리비전2] // 특정리비전들을 비교할 수 있다. 
svn diff(di) -r [리비전1]:[작업중인 디렉토리 파일] // 특정리비전과 작업중인 파일을 비교할 수 있다.

Merge

svn merge [적용할 리비전 번호들]

⚠️ 작업한 리비전번호가 모두 있어야 충돌이 발생하지 않는다.


GIT과 SVN 차이점

SVN은 대표적인 중앙 집중식 VCS이다.
중앙 집중식 VCS는 서버에 최종본 하나가 존재하며, 사용자들은 이중 수정을 원하는 파일만 로컬에 받아 수정한 후에 서버에 올린다.

  • 장점 : 관리자가 작업자가 하는일을 알기 쉽다.
  • 단점: 중앙 서버가 다운되면 업무가 마비된다는 단점이 존재한다. 개발자 자신만의 verision history도 갖을 수 없다.

GIT은 대표적인 분산 VCS이다.
파일을 저장하는 서버가 존재하지만 수정을 위해 프로젝트 전체를 로컬에서 다운 받은 후에 수정할 수 있다.

  • 장점 : 중앙 서버가 다운되더라도 개별 사용자들의 작업이 가능하다. 서버가 날라가도 다운받은 내용이 남아있어 안정적이다. 개발자 자신만의 verision history도 갖을 수 있다.
  • 단점 : 직관적이지 못하다. 공유 과정이 비교적 복잡하다.


GIT과 SVN 사용하며 느낀점..🤔

회사에서 SVN을 사용하면서 좋았던 점은 사용하기 편하다는 것이었다. 그러나 갑자기 충돌이 나거나 잠금이 걸리는 경우가 많아서 몇 시간 동안 애먹은 경험이 있었다. GIT은 가끔 스터디 하거나 미니 프로젝트를 할 때 사용해 봤는데 SVN보다는 어렵지만 에러 시 복구가 용이해서 좋았다. 앞으로 진행하는 부트캠프에서 GIT으로 팀원들과 협업할떄 많이 사용할거 같아서 그동안 많이 익숙해져야겠다!



참고사이트🙇‍♀️

SVN(Subversion) - 개념 및 명령어
Git과 SVN 특징 및 명령어 비교
SVN Log 명령어
[git] git이란? (형상관리, 정의, 장단점, 설치)
[AWS]GIT과 SVN의 차이점

profile
매일매일 틀깨기

0개의 댓글