반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

꿈꾸는 사람.

타이젠에서 소스 관리 방법인 GIT과 Gerrit의 개념. 본문

IT/Tizen

타이젠에서 소스 관리 방법인 GIT과 Gerrit의 개념.

현무랑 니니 2013. 7. 31. 18:25
반응형

이번 포스팅은 TIZEN 소스를 받기 전 배경 지식을 설명한다.

모바일 운영체제에서 개발환경이 오픈 시스템으로 전환되고 자체 생태계 구축에서 자체 소스의 관리가 중요하다.

이를 위한 SCM (Software or Source Configuration Management) 또는 VCS (Version Control System)에 대해서 간략히 소개한다.


1. SCM (소프트웨어 형상관리) or VCS ( 버전 관리 시스템)

SCM는 소스 코드와 시간에 따른 변화를 관리하는데 사용된 도구와 프로세스이다.

그리고 버전 관리는 파일들의 변화를 시간에 따라 기록하고 관리하는 것이다.

보통 SCM과 VCS를 같은 개념으로 보고 있으며 서로 혼용해서 사용하고 있다.


이 관리 시스템은 아래와 같은 기능이 있다.

- 저장소에 파일 관리.

- 저장소의 파일에 대한 변경 관리.

- 소스 변경의 충돌 검출과 병합 지원.

- 변경에 대한 추적.


소프트웨어의 개발은 점점 대규모 또는 큰 프로젝트로 이루어진다.

이런 경우 SCM/VCS의 관리 시스템이 필요한데 크게 중앙집중식 방식과 분산형 방식으로 분류한다.

중앙집중식의 대표적인 소프트웨어로는 IBM의 ClearCase, 마이크로소프트의 Team Foundation Server(TFS)와 Visual SourceSafe (VSS) 오픈 진영의 CVS, Subversion (SVN) 등이 있다.

분산형으로는 리눅스 커널 관리에 쓰인 상용 BitKeeper가 있었고 2005년부터 쓰인 GIT이 있다.


재미있는 사실은 중앙집중식의 상용 제품은 IT 기업에서 상용 소프트웨어의 개발에 사용되고 있는데 이는 기업 내에서 업무를 진행할 때는 당연히 온라인 상태일 것이고 보안을 위한 제한적 방법으로만 협업을 하게 통제를 받게 된다.


분산형의 무료 제품은 리눅스 커널에 쓰이고 있다.

특히 리눅스 커널의 개발은 전세계의 자유 개발자들의 도움으로 진행되므로 완변한 분산 환경과 비선형적인 개발 요구를 수용할 수 있다.

현재 모바일 개발 환경 중 구글의 안드로이드는 분산형을 사용하여 이런 개념을 완벽히 적용하고 있다.


2. GIT

자, 그럼 GIT 탄생의 배경을 알아보자.

위 설명처럼 리눅스 커널에 사용된 소프트웨어 형상 관리 도구는 BitKeeper였다.

이 도구는 상용 제품이었으나 무료로 제공되었으나 이후 지원이 중단되었다.

이로 인해 리누스 토발즈가 자체 도구로 만든 것이 GIT이다.


GIT은 빠른 속도, 단순 구조, 비선형적 개발과 완벽한 분산 환경을 지원하기 위한 목표를 가지고 개발 되었다.

GIT은 기존의 시스템이 파일의 변화를 시간순으로 관리하는 것과는 달리 파일의 존재 자체를 중요시 한다.

즉, 파일의 변경이 없을 때는 단순히 이전 상태의 파일에 대한 링크만 저장한다.

그리고 빠른 속도와 분산 환경을 위해 프로젝트의 모든 이력을 로컬에 저장한다.

때문에 오프라인에서도 작업이 가능하다.

하지만, GIT의 각 저장소는 한 명의 사용자가 소유하고 관리하는 방식이다.

GIT에는 보안을 위한 제어 기능이 없어, 저장소에 대한 접근은 단순히 호스트의  파일 접근 제어에 의해서만 이루어진다.

다중 관리자가 하나의 공유 저장소를 위해 협업을 할 때 저장소에 변경을 관리할 도구가 필요하다.


3. Gerrit

위의 2.에서 설명한 것처럼 GIT의 저장소에 대한 변경 관리를 위해 Gerrit이 사용 된다.

Gerrit은 git 버전 제어 시스템의 상위에 만들어진 웹 기반의 팀 코드 리뷰 도구이다.

안드로이드 개발을 위해 구글에 의해 개발되었다. 처음에는 파이썬으로 작성되었다 이후 자바로 쓰여졌다.


소프트웨어 개발자는 웹 브라우저를 통해 소스 코드의 변경을 검토할 수 있고 그 변경을 승인 또는 거부할 수 있다.

이를 위해 Gerrit은 코드의 변경이 적용되기 전에 리뷰할 수 있는 가벼운 프레임웍을 제공한다.

변경된 소스는 Gerrit에 업로드 되지만 실제 저장소에 반영된 것은 아니다.

지정된 검토자가 변경된 소스를 검토하고 승인하면 그 때 저장소에 변경 사항이 적용된다.


4. tizen에서 Gerrit

타이젠도 구글의 안드로이드와 같은 오픈 소스로 개발되고 있다.

타이젠도 소스의 관리에 GIT을 사용하고 있고 개발자들이 코드 개발에 기여할 수 있다.

이렇게 제공된 코드는 Gerrit을 이용하여 검토되고 적용 된다.


때문에 타이젠에서 소스를 받거나 수정된 소스를 제안 위해서는 타이젠 웹 사이트에 계정을 생성하고, 생성된 계정으로 타이젠 Gerrit 사이트에 개발자의 공개키를 등록하여야 한다.


다음 포스팅에서 타이젠의 Gerrit 사이트에 계정 생성. 공개키 등록과 소스를 받는 방법을 올릴 예정이다.

반응형
Comments