Git vs. SVN
SVN Subversion
- Client/Server 타입 형상 관리 툴
- 보통 대부분의 기능을 완성해놓고 소스를 중앙 저장소에 commit
- commit 자체가 중앙 저장소에 해당 기능을 공개한다는 의미
- 자신만의 version history를 가질 수 없다.
- commit한 내용이 다른 개발자에게 바로 영향
- 서버와의 통신 없이는 작업을 수행할 수 없다
- 브랜치를 생성할 때 전체 소스 코드의 복사본을 생성
- 병합 작업 시 중앙 서버의 도움이 필요
Git
- 분산 저장소 타입 형상 관리 툴
- 자신만의 version history를 가질 수 있다
- 필요에 따라 push로 작업 내용 공유
- 로컬이기 때문에 SVN에 비해 빠르다
- 네트워크 연결이 필요한 경우에만 서버와 통신
- 로컬 저장소에서 브랜치를 생성
- 병합 작업 시 로컬에서 처리
SVN 용어
- repository
- 프로젝트의 모든 파일 및 디렉토리의 이력을 저장
- checkout
- 저장소에서 프로젝트의 최신 버전을 로컬로 가져오는 작업
- commit
- 로컬 작업 디렉토리에서 변경된 파일들을 중앙 저장소에 반영하는 작업
- 다른 개발자들이 즉시 변경 사항 확인 가능
- update
- 저장소에서 최신 변경 사항을 가져와 로컬 작업 디렉토리를 업데이트하는 작업
- trunk
- branch
- trunk에서 분기된 개발 소스
- 독립적인 작업 영역
- tag
- 특정 시점의 프로젝트 버전을 식별하기 위한 이름표
- 관례적으로 개발을 하지 않고 특정 시점 식별
- revision
SVN 명령어
svnadmin create /path/to/repository
svn checkout URL
svn add file1 file2
svn commit -m "Commit message"
svn update
svn status
svn log
svn copy source_URL destination_URL
svn merge source_URL[@source_revision] destination_URL
svn copy source_URL destination_URL
svn resolve --accept=working file1