SVN은 GIT보다는 단순하다. SVN를 쓴다는 것은 보통 commit, update만 사용하는 경우가 많다. 이 경우에 어떤 단점이 있는지 알아보자.
어떤게 개발이 끝난거고 어떤게 개발 중인거야?
개발이 끝난 것과 개발 중인 것에 대한 차이는 운영 업무를 할 때 중요하다.
남자, 여자 2명의 개발자가 존재한다.
남자는 14일짜리 업무가 잡혔고 여자는 7일짜리 업무가 잡혔다.
남자는 퇴근시간이 다가오자 습관처럼 소스를 커밋한다.
다음 날 여자도 습관처럼 개발 시작에 앞서 현재 소스를 맞추기 위해 업데이트를 받고 시작한다.
그리고 7일이 지났을 때 여자는 운영계에 소스를 배포하게 되었다.
그런데 운영계가 에러가 나버렸다. 이유가 뭘까?
여자는 남자가 아직 개발 중이었던 소스를 내려받아서 그 위에 개발을 하고 배포했기 때문이다.
여자는 소스 원복 후 재배포를 위해 히스토리를 살펴봤다.
그런데 남자가 그 사이에 배포한 소스들이 어느 부분부터 어디까지 운영계에 배포된 소스인지 분간할 수가 없다. 롤백이 난해해졌다.
이러한 문제점은 운영이 아닌 프로젝트 개발 단계에선 소스들이 전부 개발 중인 상태이기 때문에 크리티컬한 문제는 아닐 수도 있다. 다만 운영에 있어선 굉장히 큰 문제로 다가온다.
해결법
그럼 SVN을 사용한다면 어떻게 사용해야할까? 개발자는 소스가 운영에 가기전까지 SVN에 배포하지 않아야 한다. 배포하지 않고 컴퓨터에 그대로 저장된 상태로 두어야 한다는 건 너무 비효율적이다.
GIT이라면?
GIT은 이 문제점을 어떻게 해결하고 있을까?
GIT은 개발자마다 브랜치를 만든다. 그리고 해당 브랜치에 개발된 부분을 커밋한다.
GIT에서 커밋한다는 것은 실제 원격 저장소에 올라가는 것이 아니기 때문에 얼마든지 커밋을 해도 충돌 나지 않는다.
커밋이 끝난 뒤에는 푸쉬를 하는데 그때 충돌 사항이 있는지 확인하고 배포하게 된다.
이 과정은 본인이 개발한 소스 이력을 더 쉽게 확인할 수 있고 소스 관리가 더 쉬워진다.
'🗂️ Etc' 카테고리의 다른 글
카카오 공유하기 - imageUrl과 serverCallbackArgs 사용법 (0) | 2022.06.19 |
---|---|
[Thymeleaf] Fragment vs thymeleaf-layout-dialect 차이 (0) | 2022.06.18 |
Rest Api는 쓰기 어렵다. 근데 Http Api도 어렵다. (0) | 2022.05.22 |
해시 알고리즘(Hash Algorithm)과 시간 복잡도(Time Complexity) (0) | 2022.05.14 |
Query String과 Path Variable (0) | 2021.03.31 |