Computer Science/VCS

SVN, CLI 정리

songye 2024. 6. 14. 09:27

오늘은 형상관리 툴인 svn 명령어를 한 번 정리해보려고 합니다.

 

git과 어떠한 차이가 있는가도 비교해보며 글을 적어가려고 합니다.

 

1. Architecture

Git

분산형, 작업하는 로컬 환경에 복사본을 가지고와서 변경사항 및 이력까지도 로컬에 저장하는 형태

 

svn

중앙 집중형, 작업하는 로컬 환경에 체크 아웃을 통해 복사본을 가지고 옵니다. 하지만 변경사항 및 이력이 로컬이 아닌 중앙 서버에 저장이 됩니다.

 

이러한 특징은 속도와 변경내역 및 히스토리 들을 조회하는 것에 차이가 생깁니다.

svn은 하나의 이력을 확인하기 위해서는 인터넷을 경유해야 합니다.

 

또한 git은 Staging Area가 있어 새로운 파일을 추가하고 특정 파일들만을 커밋할 수 있도록 지정할 수 있습니다.

 

2.CLI 비교

git

CLI 기능
git branch new-feature 새로운 브랜치 형성
git checkout new-feature 브랜치 전환
git add files 파일을 Staging Area 추가
git commit -m "your comments" 스테이지 변경 사항을 로컬환경에 커밋
git push remoteName new-feature 원격 Repo에 새로운 브랜치에 변경사항 Push
git pull origin main main Branch를 최신 상태로 업데이트
git merge new-feature 새로운 브랜치 병합 

 

다음 일련의 과정과 같이

브랜치 형성 -> 스테이징 ->  커밋 -> 푸쉬 -> Pull -> 머지

버전 통합 프로세스가 이루어집니다.

 

svn

CLI 기능
svn copy https://svn.example.com/repo/trunk https://svn.example.com/repo/branches/new-feature -m "Create new feature branch" Trunk에서 새로운 브랜치 형성
svn checkout https://svn.example.com/repo/branches/new-feature 작업 디렉토리로 체크아웃
svn add file 새로운 파일 추가
svn commit -m "your comment" 중앙 서버에 커밋
svn merge https://svn.example.com/repo/branches/new-feature 브랜치병합
주의사항은 이전에 trunk로 체크아웃 해야한다
svn status svn 현재 status 확인
변동 파일
머지 충돌 확인
svn --resolve --accept working conflictfile 머지 충돌파일 해결 후 svn 서버에 알림
svn commit -m "merge Complete" 충동해결 후 커밋

 

3. 후기

git과 svn 크게 다르지 않지만 아키텍쳐 구조로 인해 많은 차이를 가지고 있음을 봅니다.

svn은 뭐랄까 먼저 커밋하면 개이득,, 이라는 구조의 느낌도 있습니다.

충돌을 피하고 싶다면 먼저 커밋해라! 

커밋이 단순한 장점들도 있고 명령어들이 크게 어려운 느낌도 없습니다.

git은 remote 관리부터 시작해서 조금더 복잡한 면이 있긴 합니다 

 

이러한 차이를 유의하여 VCS시스템에 대한 이해를 높인다면 생산성이 조금이나마 올라가지 않을까 생각합니다.