728x90
SVN(Subversion)
- 중앙 집중 관리식 형상 관리 소스 관리툴
- 각각의 개발자들이 본인의 코드 변경사항을 하나의 중앙 저장소(Center Repository)에 Commit하는 방식으로 운영한다.
- 로컬 PC에서 커밋 시 중앙 저장소에 바로 반영되고 중앙 저장소에 있는 애용들을 다른 로컬 PC에 업데이트 시킬 수 있다.
- 이해가 직관적이지만 중앙 저장소에 문제가 발생할 경우 서비스 자체가 중단되는 현상이 발생할 수 있다.
- Git은 중앙 저장소를 통째로 복사한 별도의 branch repository를 각 개발자들이 가지고 변경사항을 반영시키며, 최종적으로 이 변경사항을 중앙 저장소에 반영하는 Pull Request를 요청하면서 운영된다.
장점
- 원자적인 커밋을 지원하므로 다른 사용자의 커밋과 얽히지 않고 롤백도 가능하다.
- 파일과 디렉토리의 삭제, 이동 이름 변경, 복사 같은 기능들을 지원한다.
- 소스 파일 이외에 이진 파일도 효율적으로 저장 가능하다.
- 디렉터리도 버전 관리를 할 수 있다.
- 저장소의 크기에 상관없이 일정한 시간 안에 가지치기나 태그를 할 수 있다.
- 처리 속도가 상대적으로 빠르다.
단점
- 소스 코드는 merge가 가능하지만 이진파일은 어느 한쪽을 버릴 수 밖에 없다.
- 개별 개발자만의 개발 이력을 가질 수 없다.
- 잦은 커밋이 발생하면 리비전 번호가 크게 증가할 수 있다.
- 충돌이 일어날 확률이 높다.
SVN Terms
Repository 저장소
- SVN에서 저장소는 보통 Remote Repository(원격 저장소)를 의미한다.
- 즉, 서버에 올라가 있는 저장소로 URL이 있는 모든 사용자가 접근 가능하다.
Revision 리비전
- 저장소에 올라가 있는 파일들의 버전이라고 생각하면 된다. 이 리비전을 통해 롤백을 하거나 이전의 소스코드를 확인할 수 있다.
- 이 리비전 숫자는 Commit 행위를 할 때마다 올라가게 되므로 커밋 시 어떤 변경사항들이 발생했는지 Commit message를 잘 작성해야 한다.
Trunk 트렁크
- 해당 저장소의 중심이 된다.
Branch 브랜치
- 트렁크에서 기능을 추가, 수정을 하기 위해 가지로 뻗어나와 있는 기둥에 영향을 안 주는 소스 코드이다.
Tag 태그
- 태그는 여러 브랜치들이 모여서 만들어진 트렁크에 대해 어느 특정 지점을 기록하기 위한 꼬리표이다.
- 주로 사용 서비스에서는 Release 단위에 따라 태그를 붙이는 편이다.
Checkout 체크아웃
- 체크아웃은 초기에 원격 저장소에서 작업을 하기 위해 소스코드를 내 PC로 내려받는 것을 의미한다.
- == Git의 clone
Import 임포트
- 임포트는 초기에 원격 저장소에 버전 관리할 소스 코드를 넣는 것을 의미한다.
Export 익스포트
- 익스포트는 임포트와 반대로 원격 저장소에서 소스 코드를 가져오는 것을 의미한다. 체크 아웃과 다른 점은 .svn 숨김 폴더는 제외한다는 것이다. 즉, 버전 관리 파일을 제외한 순수 소스 코드만 가져오는 것이다.
Commit 커밋
- 커밋은 원격 저장소에 변경된 사항들을 저장하는 것을 의미한다.
- 내 PC에서 아무리 열심히 해도 커밋을 안한다면 아무 소용이 없다.
- 커밋을 하게 되면 저자(Author)와 커밋 메시지, 일자와 일시가 찍히고 리비전이 갱신된다.
Update 업데이트
- 업데이트는 원격 저장소에서 다른 사람에 의해 변경된 소스 코드를 내 PC에 반영하는 작업이다.
- 업데이트는 수시로 해주는게 좋다. 작업을 시작하기 전에, 커밋을 하기 전에는 필수로 해준다.
Revert 리버트, 롤백
- 리버트는 내 PC에서 수정했던 작업 내역을 되돌리는 작업이다. 파일 단위로 할 수도 있고, 폴더 단위로 할 수도 있다.
Merge 머지
- 머지는 내 브랜치와 다른 사람이 작업해둔 브랜치를 합치는 작업이다. 업데이트 진행시에는 자동으로 진행되는 작업이다.
Conflict 컨플릭트, 충돌
- 일단 충돌이 발생하는 이유는 동일한 파일을 서로 다른 프로그래머가 개발할 경우 자주 발생한다. 충돌이 발생하면 하나하나 비교해가면서 병합을 해야한다.
- 사람이 하는 것이기에 휴먼 에러가 발생할 수 있고, 그렇게 되면 개발됐던 소스 코드들을 날려 버릴 수 있다.
- 미연에 방지하기 위해서는 원격 저장소와 동일한 파일 상태에서 업데이트를 무조건 해주는 것이 좋다.
Lock 락
- 락 명령어를 파일에 걸어두면 락을 건 사용자만 해당 파일을 수정할 수 있다.
- 사용한 후에는 반드시 unlock을 해주는 것을 잊지 말자
Diff 디프
- 현재 소스 코드 대비 특정 리비전의 소스 코드와 차이점을 볼 수 있다.
- 특정 리비전 2개의 차이점을 볼 수도 있다.
Add 추가
- 원격 저장소에 커밋하기 위해 VCS 목록에 추가하는 것을 의미한다.
Ignore 이그노어
- Add와는 반대로 커밋 목록에서 제외하는 것을 의미한다.
728x90
'Dev' 카테고리의 다른 글
젠킨스(Jenkins) (0) | 2024.08.09 |
---|---|
오토스케일링(AutoScaling) (0) | 2024.08.08 |
데이터베이스 샤딩 (0) | 2024.08.07 |
배치 파일과 도스 명령어 (0) | 2024.08.05 |
RedMine (0) | 2024.07.23 |