[형상관리] SVN이란?
2021. 7. 29. 21:43ㆍ형상관리
버전관리와 형상관리
여러 사람들과 프로젝트 진행시 각자 업무를 나눠서 맡은 부분을 개발하게 됩니다.
각자가 개발한 소스 코드의 변경 사항을 버전 별로 관리하는 것을 버전관리라고 하며,
소스 코드뿐만 아니라 프로젝트의 진행상황, 빌드, 릴리즈, 퍼블리싱까지 통합적으로 관리하는 것을 형상관리라고 합니다.
SVN이란?(SubVersion)
svn은 SubVersion의 줄임말로, 중앙 집중 관리식 형상 관리 Tool입니다.
svn client로는 Tortoise SVN, Collabnet 및 Visual SVN이 있습니다.
svn의 주요 기능
- 여러 사람들이 프로젝트를 공유할 경우, 각자의 수정 사항을 팀 전체가 동기화하는 과정을 자동화
- 프로젝트 진행 중 문제 발생시 과거의 특정 시점으로 rollback
- 여러 branch로 프로젝트에 영향을 최소화하고 격리하여 새로운 소프트웨어 개발
- 소스 코드를 누가 언제 어떻게 무엇을 변경했는지 추적
svn의 장점
- 소스파일이 아닌 이진파일(binary file, non-text file)도 저장 가능
- 파일과 디렉토리의 이동, 수정, 삭제, 복사 지원
- 디렉토리도 버전 관리 가능
svn의 단점
- 소스코드는 merge로 합치는 것이 가능하지만, 이진 파일은 어느 한쪽을 버릴 수 밖에 없다.
- 잦은 커밋으로 인해 revision 번호가 크게 증가할 수 있다.(revision은 commit의 고유 식별자입니다.)
- 커밋시 바로 중앙 저장소에 merge되서 다른 작업자들과 충돌이 일어날 확률이 높다
svn 용어
- CheckOut: 저장소에서 최신 버전의 소스코드를 최초로 받아오는 것
- Update: 로컬 저장소에 있는 파일들을 저장소의 최신 버전으로 받아오기
- Commit: 로컬 저장소의 변경된 내용을 서버로 전송
- Merge: 내가 작업한 부분과 다른 사람이 작업한 부분을 병합
- Repository: 프로젝트 파일 및 변경 정보가 저장되는 장소(네트워크로 여러 사람이 접근 가능)
- Revision: 수정후 commit 하면 숫자가 1씩 증가(commit 고유 식별자)
- Import: 빈 Repository에 맨 처음 파일을 채우는 것
- Export: 버전 관리 파일들을 뺀 순수 파일만 빼내는 것
- Revert: 로컬 저장소의 내용을 이전 상태로 돌림
- Add: 버전 관리 대상으로 파일 등록
- Shelve: 로컬 작업 내용을 잠시 백업
- Trunk: 개발 소스를 commit 했을 때 개발 소스가 모이는 곳(항상 안전한 버전의 소스가 보관되어야 함)
- Branch: Trunk에서 분리/복사한 소스로 버전별 배포판을 만들거나 Trunk와 별도로 운영환경을 위한 안정화된 소스 관리 목적으로 사용
- Tag: 버전 별로 소스코드를 따로 관리하는 공간(특정 시점의 소스를 snapshot으로 보관)
Git vs SVN
Git | svn |
분산 관리식 | 중앙 집중 관리식 |
로컬 PC에서 commit하면 로컬 저장소가 반영되고 push해야 원격 저장소에 반영됨 | 로컬 PC에서 commit하면 바로 중앙 저장소에 반영됨 |
로컬 저장소에서 fetch로 충돌이 없도록 merge하고 최종 push함 | 바로 중앙 저장소에 반영되서, 두 사람이 하나의 파일을 동시에 수정하고 커밋하면 충돌이 일어날 확률이 높다 |
모든 작업이 로컬에서 이뤄지고 네트워크 사용은 원격 저장소로 저장할 때 한번 이루어지므로 처리속도가 빠르며 웹상에 저장소를 둘 수 있고 언제 어디서나 협업할 수 있다. | 중앙저장소에 에러가 나면 모든 작업이 마비된다. |
SVN 서버 설치
- VisualSVN server
- SVN 서버
- 상업적으로 사용 가능한 무료 오픈 소스
- 최대 15명의 사용자 허용
- https://www.visualsvn.com/server/
- TortoiseSVN
- SVN 서버와 통신하는데 사용되는 SVN Client
- Apache 제품 'Subversion'을 기반으로 함
- 오픈 소스이며 무료
- svn 프로토콜 지원
- https://tortoisesvn.net/downloads.html
SVN에서 GIT으로 프로젝트 마이그레이션하는 방법
- Git Repository 열기
-
$ git init
-
- SVN 저장소의 URL 복사
-
$ git svn clone SVN저장소URL
-
- Git 원격 레포지토리 만들기
-
$ git remote add origin <remote URL>
-
- 원격 서버에 푸시
-
$ git push origin master
-
SVN Eclipse에서 사용하기
- 'Subclipse' 플러그인 사용
Ref.
https://honeyteacs.tistory.com/49
https://truecode-95.tistory.com/18
https://www.javatpoint.com/svn
https://ko.wikipedia.org/wiki/서브버전
https://dzzienki.tistory.com/46
https://hellowoori.tistory.com/57
https://velog.io/@gillog/SVNSubversion-기본
https://goddaehee.tistory.com/158