Git, 분산 버전 관리 시스템 (트라비스 스위스굿, 2010) 독후감
Git은 리누스 토르발스가 리눅스 커널 개발에 이용하려고 개발한 분산 버전 관리 시스템이다. 잘 만든 서비스 하나가 새로운 버전 관리 시스템도 공부하게 하는구나. github 아니었음 Git 책을 읽었을까?
이제까지 버전 관리 시스템으로는 svn, perforce, alienbrain 을 써봤다. 써본 건 다 중앙 집중식 버전 관리 시스템(centralized version control)으로 분산 버전 관리 시스템은 Git이 처음이다. 그래서 그런지 commit, push로 나뉘어 있는 명령어가 아주 낯설었다.
저장소(repository)가 여러 개인 게 가장 큰 특징. 원격 저장소와 하는 연산(push, pull, …)만 네트워크 속도에 영향을 받는다. 로컬 저장소를 대상으로 하는 작업은 네트워크가 연결 안 되어 있어도 가능. 단순 viewer가 아닌 저장소 복사여서 히스토리 같은 건 로컬에서 바로 빠르게 가능하다.
최하위 계층에서 Git은 저장소에 저장한 파일을 내용 단위로 추적한다. 이런 점에서 파일을 추적하는 여타 버전 관리 시스템과는 다르다. -p9
이건 좀 의외였다. 변경 내용 단위로 추적한다고 생각했었는데, 보통 파일 단위로 추적하는구나. 그냥 여타 버전 관리 시스템이라고만 언급해서 자세히 어떤 시스템이 이렇게 하는지는 모르겠다. 기술적으로 어려움이 있었던 걸까? 중앙 집중식 버전 관리 시스템이라 저장 용량에 크게 신경을 안 써서 그럴 수도 있겠다. 여하튼 변경 내용 단위로 추적해서 브랜치간 머지가 상당히 편해진다. 왜냐면 변경 내용 단위로 히스토리를 다 가지고 있기 때문에.
게임 업계에서도 사용할 수 있을까? 글쎄. 프로그래머 외 다른 직군은 현재 중앙 집중식 버전 관리 시스템을 배우는 것도 힘들어하고 있어 쉽지 않아 보인다. 당분간은 사용할 일이 없어 보이고 github 서비스를 이용할 때, 유용하게 사용하겠지.
Git을 윈도우즈에서 사용하기가 되게 불편하다. 맥에서는 XCode에 물려있어서 정말 편하게 사용할 수 있다. Git을 배우니 간만에 윈도우즈가 비주류처럼 느껴졌다. MS는 자꾸 새로 만들려고 삽질하지 말고(잘 만들면 얘기를 안 한다.) Git 같은 버전 관리 시스템을 정식으로 Visual Studio에서 지원 좀 해줬음 좋겠다. XCode를 보고 배우시오.