반응형

GIT 는 리눅스 커널의 개발자로 유명한 리누스 토발즈가 개발한 형상관리 툴입니다. 
최근 몇년간 리누스 토발즈는 리눅스 개발 업무보다는 GIT 개발에 더 많은 시간을  할애했다는 이야기도 있더군요. 

GIT 가 기존에 제가 사용했던 여타 형상관리 툴과 다른 점은 "분산형 형상관리" 라는 것입니다. 그래서 commit 과 별개로 push 라는 개념이 있더군요.
분산 형상관리라는 것은 각각의 개발자가 작업한 코드를 매번 중앙 메인 리포지토리에 반영하지 않고 자신의 로컬 리포지토리에 반영하는 commit 작업과, 이를 어떤 시점에 중앙의 메인 리포지토리에 반영하는 push 작업으로 나눠진 개념을 적용하고 있습니다. 보통 전에 많이 쓰던 Microsoft sourcesafe 나 SVN 에서는 commit 이라는 개념만 있었는데요. (이들 형상관리툴에서 말하는 commit 이라는 용어가 GIT 의 Push 와 동일한 기능이라고 봅니다)


(그림 출처 : http://http://osteele.com/)
GIT 를 잘 설명한 그림입니다. local repository 에는 commit 을, 이 데이터를 중앙의 remote repository 에 반영할 때는 push 를 사용함. 

분산 형상관리 개념을 도입함으로써 소스코드를 네트워크 환경이 좋지 않은 곳에서도 빠르게 리포지토리에 반영할 수 있다는 것과 로컬마다 별도의 형상관리를 할수 있다는 점이 장점입니다. 실제로, 리누스 토발즈의 인터뷰를 읽어보면 그는 집에서 전화모뎀으로 인터넷 연결을 하기 때문에 이런 개발환경에서 소스코드 형상관리를 위해 GIT 가 매우 유용하다고 밝히고 있더군요. ^^


github ( http://www.github.com ) 은 git 를 온라인에서 호스팅해서 서비스 해 주는 웹 사이트입니다. 상대적으로 저렴한 가격에 호스팅이 가능하고, 또 Google code 처럼 모두에게 오픈하는 퍼블릭 리포지토리의 경우 무료로 제공한다는 특징이 있습니다. 
이른바 social coding 을 추구하는 것인데요. 오픈되어 있는 공개 리포지토리에는 누구나 자유롭게 접근해서, 이 코드를 포크(folk) 해서 자신의 리포지토리로 가져올 수 있고, 다른사람이 작성중인 리포지토리에 자신이 수정한 코드를 추가할 수 있어서 자연스럽게 오픈소스 활동을 권장하는 정책을 사용하고 있습니다. 단순히 형상관리 툴을 온라인으로 서비스하는 것에 그치지 않고 이를 사용하여 오픈소스 활동을 장려한다... 는 회사의 철학이 느껴지는 부분입니다.


사용 설명도 매우 친절하게 잘 되어 있어서 처음 git 와 github 를 사용하는 사람도 꼼꼼하게 사이트에서 제공하고 있는 인스트럭션을 잘 읽어보면 쉽게 적응할 수 있습니다. 

Windows / Linux 모두 사용 가능한데 저는 Windows 환경에서 개발을 하므로 Visual Studio 용  Git 플러그인을 받아서 사용해 보았습니다. 




소스코드 변경사항들에 대해서는 Commit 을 하면 로컬 리포지토리 ( 이 경우 본인의 개발 PC 가 되겠습니다 ) 에 수정사항이 반영되고, 이를 원격의 서버 (  GITHub 사이트 ) 에 반영하려면 Push 를 하면 됩니다.

몇가지 주의할 점
-  기본적으로 GIThub 에서는 ssh 를 이용하여 연결을 하는데 putty.exe 는 지원을 안하므로 이를 사용하면 안됩니다. openssh 를 사용하기 바랍니다. 
- SSH 패스워드 설정을 할때 개인 PC 에서 사용할 것이고 보안이 어느정도 확보된 상태라면 굳이 복잡한 비밀번호를 쓸 필요 없이 그냥 엔터를 비밀번호로 하면 편합니다. Push 할때마다 매번 비밀번호를 복잡하게 입력해서 SSH 쉘을 연결하는 작업도 꽤 번거롭습니다. 
- 개인 리포지토리 사용을 위해서 GitHub 에 결제를 하면 그 다음부터는 매월 자동으로 카드 결제가 됩니다. 

 
해외의 경우 개발자들을 채용할 때 중요한 고려사항 중 하나가 그 사람의 오픈소스 커뮤니터 활동 경력을 평가한다죠. 국내의 경우 상대적으로 이런 문화가 빈약하다는 것이 아쉽긴 합니다만... 
GITHub 에서는 이곳에서 활동하는 개발자의 리포지토리 정보를 근거로 이력서도 자동으로 만들어 주는 등. 개발자의 포트폴리오 지원을 위한 활동에도 큰 배려를 하고 있습니다. 개발자의 속성을 잘 파악한 좋은 기능이라고 봅니다. 가격도 비싼 편이 아니므로, 개인 형상관리 서버를 구축해야 하는 사람이라면 github 도 좋은 고려사항이 될 것 같습니다. 

 

+ Recent posts