si 프로젝트는 늘 새로 접하는 기술을 만나게 된다.
이번엔 SVN을 사용하게 되어 왜 아직 여기는 SVN에 머물러있는지, Git을 쓰면 안되는 것인지 공부해보려고 한다.
최신 기술이 정답은 아니지만, 더 나은 기술이 있음에도 써온 관례로 인해서 예전 기술을 고집하지 않았으면 좋겠다.
Git이란?
- 현재 제일 많이 사용되는 형상관리(버전관리) 도구
- 소스코드를 여러 개발 PC와 저장소에 분산해서 저장
SVN이란?
- 아파치 서브버전
- 중앙 저장소 방식, Trunk라는 중심이 되는 저장소가 존재
Git vs SVN
차이점
Git: 개발자별로 저장소를 가짐
- 각 저장소가 각각의 주체가 되기 때문에 버전 관리를 개발자가 할 수 있음
- 중앙 저장소에 영향을 주지 않기 때문에 로컬 환경에서 작업이 자유로움
SVN: Trank라는 중앙저장소가 모든 버전을 관리
- 작업을 하기 위해서 반드시 중앙저장소와 온라인으로 연결이 되어 있어야 함
- 개발자의 PC에 있는 코드는 중앙저장소의 카피본으로, Commit시 중앙저장소와 반드시 Sync를 맞춰야 함
Branch
- SVN은 Branch를 저장소 내의 경로로 관리되어 별도의 디렉토리처럼 보임
- Git보다 Branch의 생성/병합이 복잡함
챗 지피티의 힘을 빌려 예시를 작성해보았다
예시 상황
1. 사용자 1이 main 브랜치에 커밋
main 상태
- Git
Commmit A
- SVN
r1: Commit A
2. 사용자 2가 feature-branch 생성 및 커밋
> 메인브랜치는 변경사항이 없음
feature-branch 상태
- Git
Commit B
- SVN
r2: Commit B
3. 사용자 1이 main 브랜치에 추가 커밋
main 상태
- Git
Commit A Commit C
- SVN
r1: Commit A r3: Commit C
4. 사용자 2가 feature-branch에 추가 커밋
feature-branch 상태
- Git
Commit B Commit D
- SVN
r2: Commit B r4: Commit D
5. 사용자 2가 main 브랜치에 기능 병합
main 상태
- Git
Commit A Commit C Commit B Commit D
- SVN
r1: Commit A r3: Commit C r5: Merged feature-branch into trunk
> Git은 Branch의 기록이 남지만, SVN은 중앙(trunk)에서 관리되어 최신 커밋만 반영됨
작업 방식
Git
- 작업단위로 로컬에서 자유롭게 커밋하고, 준비가 되면 푸시
- 프로젝트를 복제하여 로컬에서 완전히 독립적인 환경에서 작업이 가능
SVN
- 모든 커밋이 중앙 저장소에 바로 반영
- 모든 변경 사항이 중앙 집중형으로 작업
결론
- SVN은 항상 중앙저장소와 Sync가 되어야하기 때문에 상태 변경에 대해 느리고 예민하다.
- 그러나 SVN을 쓰는 이유는 낮은 러닝커브(commit, update만 알면 사용 가능), 그리고 분산 환경에서 같이 작업할 일이 많지 않은 운영 조직에서는 Git을 사용해야하는 이유가 크게 없다.
- 그러나 조금이라도 같이 개발이 진행될 것 같으면 Git이 개발자에게 더 많은 자유도와 백업환경을 만들어 주는것은 명백해보인다.
출처
Git vs SVN: https://elky84.github.io/2020/07/19/git_vs_svn/
SVN이란?: https://handhand.tistory.com/248
SVN을 쓰는 이유: https://elky84.github.io/2020/07/19/git_vs_svn/
'IT > 고찰' 카테고리의 다른 글
Log에 대한 고찰 (0) | 2023.08.25 |
---|---|
Comment에 대한 고찰 (0) | 2023.08.15 |
Commit Message에 대한 고찰 (0) | 2023.08.02 |