본문 바로가기

Development/etc

Svn vs Git

Svn 이란

- Subversion의 약자로 소스코드 형상관리 도구이다. 간단히 말하자면 소스코드를 올리면서 로그를 남기로 상황에 따라 롤백이 가능하다.


Git이란

- Svn과 달리 Git은 로컬저장소에 관리를 한 후 어느정도 작업이 완료 되면 중앙저장소에 저장을 한다. 조금 더 자세히 설명하자면 내가 해야될 작업을 브런치로 작업을 나누고 커밋 롤백 작업을 통해 완성이 되면 중앙저장소에 Push를 하여 최종 저장을 하고 중앙저장소에서 가져올땐 Pull을 하여 가져오면 된다.


오픈소스가 Git으로 전환하는 이유..

- 오픈소스의 경우 소수의 인원이 작업을 하여 버전별로 릴리즈를 한다. 릴리즈를 한 상황에서 SVN의 경우 함부로 다음작업중인 내용의 코드를 커밋하기가 어렵다 그 이유는 기능구현, 테스트가 완료가 되지 않아서 릴리즈하기 어렵기 때문이다. 따라서 git을 사용하면 로컬저장소를 통해 관리를 할 수 있고 원하는 시점에 중앙저장소에 Push를 하여 다음 버전 출시를 안전하게 할 수 있다.


그럼 Git쓰면 좋을까?

- 여기엔 신중한 접근이 필요하다. 왜냐하면 오픈소스의 경우 상황이 소수의 인원이 작업을 하고 그 소수를 쓰는 사람은 다수이다. 이런 상황에서는 좋지만 소규모 프로젝트나 회사의 경우 상황이 달라진다. 그 이유는 협업을 하기 떄문이다. 협업을 하게 되면 잦은 Push, Pull이 필요하게 될 것이며 이런 경우에는 SVN으로도 대체가 가능하다. 그리고 또 한가지 이유는 통합에서 문제이다. 작업을 잘나누어서 작업을 헀다면 상관없지만 만약 같은 코드를 수정하게 되는 경우 통합에 문제가 생길수 있다. 그래서 이럴 땐 잦은 커밋과 업데이트로 통합을 하는것이 좋다. 브런치로 작업을 나누어서 작업을하다가 합치는 작업을 할떄 큰 문제가 생길수도 있다라는 것이다.


결론

- 결론을 말하자면 아직까지는 상황에 따라 취향에 따라 ?? 선택하는 것이 좋은 것 같다. 위에서 말했지만 오픈소스를 제외하고는 다른 상황에는 Svn이든 Git든 비슷한 동작을 취한다. 그리고 SVN도 프로그램에 따라서 충분히 Git처럼 사용할 수 있다고 한다.  나의 경우에는 SourceTree라는 맥용 어플리케이션을 쓰고 있고 무료 어플리케이션치고 아주 잘되어있다. 그리고 Git은 파일을 변경할때 그냥 마음대로 폴더에서 삭제, 이동을 해도 되는데 SVN의 경우에는 이런 경우에 잘 꼬여버려서 귀찮은 적이 많았고 불편했다.(Git은 상위에서 한폴더에서 관리하지만 SVN은 각 폴더별로 관리를 하기 떄문에....) 특히 리펙토링 작업을 할때 많이 번거로웠다. 그래서 Git을 쓰고 있고 자기가 편한걸 쓰면 되지 않을까? 라는 결론을 내렸다.

'Development > etc' 카테고리의 다른 글

Qt Creator에서 갑자기 실행이 되지 않을때.....  (0) 2013.10.23
Web 구조  (0) 2013.10.01
hibernate VS ibatis  (0) 2013.09.22
영속성이란..  (0) 2013.09.18
컴파일러와 인터프리터  (0) 2013.09.13