저장소를 만들어 그곳에 소스를 저장하여, 소스 중복이나 여러문제를 해결하는 형상관리/소스 관리 툴이다.
프로젝트 파일 및 변경 정보가 저장되는 장소 프로그램 소스들은 이 저장소 안에 저장된다.
한프로젝트 마다 하나의 저장소가 필요하며, 네트워크를 통해서 여러 사람이 접근 할 수 있고,
소스뿐만이 아니라 소스의 변경 사항도 모두 저장된다.
프로젝트에서 가장 중심이 되는 디렉토리로, 개발 소스를 Commit했을 때 개발 소스가 모이는 장소이다.
trunk에서 뻗어져 나온 나뭇가지를 의미하며, 프로젝트 내의 작은 프로젝트 개념이다.
trunk 디렉토리에 모든 프로젝트를 같은 시기에 개발하기에는 무리가 있기때문에
프로젝트별로 작은 분류로 나누어 따로 개발을 해야할 경우 branch에서 개발을하고
최종으로 branch에 작업한 프로젝트를 trunk에 머지한다.
수정할때 클라이언트가 Repository에 새로운 파일, 수정등을 commit할때마다 번호가 하나씩 증가한다.
Repository에 저장된 최신 revision을 의미한다.
맨 처음 프로젝트 시작할때 빈 Repository에 맨 처음 파일들을 저장소에 등록하는 명령어이다.
svn import
저장소에서 소스를 받아오는 명령어이다. 소스뿐만 아니라 버전관리를 위한 파일도 함께 받아온다.
svn checkout(co) [저장소 주소] [체크아웃 할 폴더 경로]
새로운 파일 추가 변경 후 반드시 commit을 해줘야 repository에 반영이된다.
svn add
로컬 저장소의 체크아웃 한 소스의 변경된 내용을 저장소에 저장하여 갱신하는 명령어이다.
svn commit(ci)
체크아웃 해서 받은 소스를 서버 저장소의 최신 소스 버전으로 업데이트 하는 명령어이다.
svn upate(up) --set-depth infinity // 서버 저장소에 있는 모든 소스를 업데이트함
svn upate(up) --set-depth immediate // 서버 저장소에 있는 한 댑스만 업데이트함
⚠️ set을 붙이게되면 서버 저장소의 소스가 새로 받아지며, set없이 -depth부터 입력하면 기존에 서버에서 받은 소스는 제외하고 업데이트된 파일만 받게된다.
로컬 저장소의 소스 코드 내용을 이전 상태로 돌리는 명령어이다.
svn revet
svn revert -R . // 전체를 이전 상태로 돌리는 명령어
삭제하는 명렁어이다.
svn delete [삭제할 파일명]
작업중인 파일의 상태를 체크할 수 있는 명령어이다.
svn status
저장소에 어떠한 것들이 변경 되었는지 revison을 통해 확인 할 수 있는 명렁어이다.
svn log -r [revision번호] // revision번호를 이용하여 특정 영역 히스트리 가져옴
svn log -r BASE:HEAD // revision번호를 모르는 상태에서 현재 작업하고 있는 저장소의 log를 받고 싶을때 유용함
예전 소스 파일과 지금의 소스 파일의 차이점을 비교해 보는 명령어이다.
svn diff
svn diff(di) -r [리비전1]:[리비전2] // 특정리비전들을 비교할 수 있다.
svn diff(di) -r [리비전1]:[작업중인 디렉토리 파일] // 특정리비전과 작업중인 파일을 비교할 수 있다.
svn merge [적용할 리비전 번호들]
⚠️ 작업한 리비전번호가 모두 있어야 충돌이 발생하지 않는다.
SVN은 대표적인 중앙 집중식 VCS이다.
중앙 집중식 VCS는 서버에 최종본 하나가 존재하며, 사용자들은 이중 수정을 원하는 파일만 로컬에 받아 수정한 후에 서버에 올린다.
GIT은 대표적인 분산 VCS이다.
파일을 저장하는 서버가 존재하지만 수정을 위해 프로젝트 전체를 로컬에서 다운 받은 후에 수정할 수 있다.
회사에서 SVN을 사용하면서 좋았던 점은 사용하기 편하다는 것이었다. 그러나 갑자기 충돌이 나거나 잠금이 걸리는 경우가 많아서 몇 시간 동안 애먹은 경험이 있었다. GIT은 가끔 스터디 하거나 미니 프로젝트를 할 때 사용해 봤는데 SVN보다는 어렵지만 에러 시 복구가 용이해서 좋았다. 앞으로 진행하는 부트캠프에서 GIT으로 팀원들과 협업할떄 많이 사용할거 같아서 그동안 많이 익숙해져야겠다!
SVN(Subversion) - 개념 및 명령어
Git과 SVN 특징 및 명령어 비교
SVN Log 명령어
[git] git이란? (형상관리, 정의, 장단점, 설치)
[AWS]GIT과 SVN의 차이점