본문 바로가기
IT 기술/개발환경_유틸 관련 팁

repo 를 사용하여 프로젝트 관리하기

by 땅뚱 2012. 12. 3.

안드로이드는 수많은 git 프로젝트를 묶어서 하나의 프로젝트로 관리하고 있다. 이를 위해서 구글에서 python 기반의 새로운 관리 툴을 하나 선보였는데, 이것이 repo 이다.

repo 를 받고 설치하는 법등은 인터넷을 잘 찾아보면 내용이 있으니, 여기서 다루지는 않겠다. 여기서는 간단하게 여러개의 프로젝트를 하나의 repo 로 관리하는 법을 알아보려고 한다.

참고로 python 을 모르기 때문에 repo 가 어떻게 동작하는지를 분석하지는 않는다. 다만 단순하게 사용하는 입장에서 기술할 것이다.

더 상세한 manifest format 을 보려면 다음을 참고한다. repo Manifest Format

 

repo Manifest Format

repo Manifest Format A repo manifest describes the structure of a repo client; that is the directories that are visible and where they should be obtained from with git. The basic structure of a manifest is a bare Git repository holding a single default.xml

gerrit.googlesource.com

 

1. git 프로젝트 등록

git 프로젝트를 등록하는 방법도 인터넷을 검색하면 설명이 잘 된 사이트를 찾을 수 있을 것이다. 간단하게 절차를 기록해보면 다음과 같다.

# mkdir <my_project>

# cd <my_project>

# git init

< add files into my_project >

# git add .

# git commit -a --allow-empty -m "Initial Code Commit"

이 상태로 생성된 git proejct 를 --bare 형태로 복사하고 공개 git 이라는 것을 알려준다.

# cd ..

# git clone --bare <my_project> <my_project>.git

# touch <my_project>.git/git-daemon-export-ok

다음의 명령은 git 을 http 프로토콜을 사용해서 clone 이 가능하도록 제공해주는 것이다.

# cd <my_project>.git

# git --bare update-server-info

# mv hooks/post-update.sample hooks/post-update

# chmod 755 hooks/post-update

==> git clone http://yourserver.com/~you/proj.git 으로 가능함

(물론 이때 웹서버가 사용자별 웹페이지에 접근 할 수 있도록 설정되어 있어야 한다. 그렇지 않다면, 기본 웹서버 위치에 git 프로젝트를 cloning 시켜야 한다)

아래 사이트를 참고하도록 한다.

참고 : 

http://khmirage.tistory.com/309

http://wiki.kldp.org/Translations/html/Git-User-Manual/

 

2. manifest git 만들기

우선 repo 프로젝트를 만들기 위해서 manifest.xml 이라는 파일을 만들어야 한다. repo 는 manifest.xml 파일을 갖는 git 프로젝트가 있는지를 확인하기 때문이다. 우선 default.xml 파일을 가지는 manifest 라는 프로젝트를 만들도록 한다.

# mkdir manifest

# cd manifest

# git init

# touch default.xml

# git add .

# git commit -a --allow-empty -m "Initial Code Commit"

default.xml 파일 내용은 다음과 같은 형식으로 구성한다. 추가하고 싶은 프로젝트를 <project> 태그 사이에 아래와 같은 형식으로 추가한다.

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote  name="origin"  : 원격 저장소 이름
           fetch=".."
           review="git://yourserver.com/" /> : 저장소 주소 --> repo upload 에 의해서 review 시스템에 upload 할 gerrit 의 호스트네임 입니다.

  <default revision="master"  : 브랜치명
           remote="origin" />
  <project path="your/path" name="your/path" />

  : path : 로컬에 저장될 path, name: git 저장소 이름
  <project path="your/path2" name="your/path2" />
...

...

</manifest>

여기서는 기본적인 내용만 기록한 것이고, 좀더 고급 사용을 원한다면 manifest format 페이지를 참고한다.

 

3. repo 를 사용하기 전에 git daemon 을 설정해준다. 간단하게 git daemon 명령을 실행해도 되고, 데몬 실행 스크립트에 추가하여 자동으로 실행하게 하도록 해도 된다.

# git daemon --verbose --export-all --base-path=/your/base_path --enable=receive-pack &

--export-all : 이 옵션이 없는 경우 git-daemon-export-ok 파일이 있는 git 프로젝트에 한해서 git 프로토콜을 지원해준다.

--enable=receive-pack : 이 옵션이 없는 경우, 외부에서 push 가 불가능하다.

 

4. repo init

위와 같이 manifest git 프로젝트가 만들어지면, repo 를 사용해서 초기화 할 수 있다.

# repo init -u git://yourserver.com/your_manifest_path/manifest

# repo sync

이제 부터 repo 를 사용하 프로젝트 관리가 가능해졌다. 필요한 프로젝트를 manifest 에 추가하면 repo 에서 관리가 가능해진다.