정보공간_1

[6기 전주 황규하] Tizen Contribute 하기 및 git의 이해 본문

IT 놀이터/Elite Member Tech & Talk

[6기 전주 황규하] Tizen Contribute 하기 및 git의 이해

알 수 없는 사용자 2014. 11. 5. 09:43

지금까지 타이젠 소스를 복제하고, 분석을 했다면 Contribute하는 방법을 알아보겠습니다. 저번 블로그에는 타이젠의 전체 소스를 clone(복제)했다면 이번에는 원하는 부분만 clone한 후, 설명을 진행하도록 하겠습니다. Git에 대한 설명은 프로 Git이라는 책을 많이 참조하였습니다.

 

https://review.tizen.org/gerrit/#/admin/projects/

다음 홈페이지에 로그인을 하면 프로젝트 리스트를 볼 수 있고 원하는 패키지를 검색해 볼 수 있습니다. 저는 u-boot를 검색해서 platform/kernel/u-boot부분만 clone해보도록 하겠습니다.



저는 ssh를 이용해서 clone하는 방법을 선택했습니다. 원하는 패키지를 검색 후, 프로젝트를 선택하면 위와 같은 창을 볼 수 있습니다. ssh탭을 선택하면 밑줄 친 부분 같이 clone을 할 수 있는 명령어까지 친절하게 설명해 줍니다.

명령어를 그대로 복사해서 콘솔 창에 붙여넣어주면 clone작업이 시작됩니다.



Git은 분산버전관리 시스템입니다. 프로젝트를 git으로 관리하기 위해서는 git 저장소를 만들어야하는데 기존 프로젝트를 clone하게 되면 다음과 같이 .git 이라는 하위 디렉토리(저장소에 필요한 뼈대파일)가 자동으로 생성됩니다.

Git의 워킹디렉토리는 크게 Tracked(관리대상) Untracked(관리대상이 아님)으로 나뉘고, Tracked파일은 또 Unmodified(수정하지않음), Modified(수정함), Staged(커밋하면 저장소에 기록되는) 단계로 나누어 집니다.

아무 작업도 하지 않은 상태에서 git status 명령을 입력해 보겠습니다. Git status 명령은 현재 워킹디렉토리에 파일의 상태 등을 보여 줍니다.



현재는 아무것도 commit 할 것이 없다고 보여집니다.

 저번 블로그를 게제하면서 s3c24XX시리즈의 serial 소스를 분석 했었는데 이 코드 중 _serial_setbrg함수 내부에 딜레이를 위한 for문이 있었습니다.



이때, i는 그냥 int i로 선언이 되어있기 때문에 컴파일러의 최적화 옵션에 의해 나중에 바이너리 파일에서는 i=0~99까지 연산이 되는 것이 아니라 i=99의 상태로 될 수 도 있기 때문에 volatile을 붙여야 한다고 생각했습니다.

그럼 이 부분을 volatile int i로 변경하고 저장한 뒤, git status 명령을 내려보겠습니다.



변경은 되었지만 staged상태가 안된 파일에 serial_s3c24x0.c파일이 되어있습니다. 이 파일을 staged상태(commit할 수 있는 상태)로 바꾸기 위해서는 git add 명령어를 사용하면 됩니다.

Git add 명령 후 git status를 살펴보면 다음과 같습니다.



파일이 staged상태에 있기 때문에 commit을 할 수 있는 상태가 되었습니다. Git commit 명령을 통해 commit을 해보도록 하겠습니다. Commit을 할 때에는 –m 옵션으로 바로 커밋메시지를 쓸 수 있습니다.



 

Git commit까지는 local영역에서 이루어 지지만 contribute를 하기 위해서는 git remote저장소에 push를 해야 합니다. Remote 저장소란 인터넷이나 네트워크 어딘가에 있는 저장소를 말합니다. Git remote 명령으로 현재 프로젝트에 등록되 리모트 저장소를 확인할 수 있습니다. 저장소를 clone하면 origin이라는 리모트 저장소가 자동으로 등록되기 때문에 origin이라는 이름을 볼 수 있습니다.



리모트 저장소에 push를 하기 위해서는 다음과 같은 명령어를 사용합니다.

$ git push origin HEAD:refs/for/<remote_branch_name>

<remote_branch_name>에는

Tizen 2.1branch의 경우에는 tizen_2.1

Tizen 2.2 branch의 경우에는 tizen_2.2

Tizen 3.0 branch의 경우에는 tizen

을 사용하면 됩니다.



Git push 명령을 통해서 push를 하려고 했으나 change-id commit message footer에 없다는 이유로 실패를 했습니다. 이 경우 계속적으로 사용하려면 따로 설정을 해주어야 한다고 하나 저는 임시적으로 git commit –amend 명령어를 사용하여 change-id: ~~를 복사한 뒤, commit message 마지막에 붙여 주고 다시 push를 하였습니다.



모든 작업이 끝나면 다음과 같이 https://review.tizen.org/gerrit/#/ 에서 push가 된 것을 확인할 수 있습니다. 다음 글에는 Gerrit에 대해서 좀 더 살펴보도록 하겠습니다. 이상 마치겠습니다.