IT/고찰

Git과 SVN 고찰

Terriermon 2024. 6. 19. 16:26

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