repo 를 사용하여 프로젝트 관리하기 (repo 특정 부분만 다운받기)
출처 : http://egloos.zum.com/embedded21/v/1861857
특정 부분만 다운받기
Android 소스 코드는 여러 git을 하나의 repo로 가져온다.
repo init -u https://android.googlesource.com/a/platform/manifest
> vi .git/config
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = ssh://localhost:12345/android/vendor/com/apps/AlarmClock.git
push = HEAD:refs/for/repository_master <== 추가
출처 : http://pinocc.tistory.com/137
새로운 브랜치를 만들 경우에는 다음과 같이 한다.
repo start hoplayer --all
리모트 브랜치(remotes/aosp/lollipop-5.1.1_r6)의 를 checkout 할때는 이렇게 한다.
repo forall -c 'git checkout -b lollipop-5.1.1_r6 remotes/aosp/lollipop-5.1.1_r6'
그리고 그 리모트 브랜치와 diff 를 보고 싶으면
repo forall -c 'git checkout master' (master 브랜치에서 작업이라면) 이렇게 master로 바꾼다음
repo forall -c 'echo $REPO_PROJECT; git diff lollipop-5.1.1_r6' > git_diff.txt
이렇게 해주면 현재 master 와 diff 뜬것을 저장할 수 있다.
아까 만든 lollipop-5.1.1_r6 브랜치를 삭제할라면
repo forall -c 'git branch -d lollipop-5.1.1_r6'
이렇게 지운다.
안드로이드는 수많은 git 프로젝트를 묶어서 하나의 프로젝트로 관리하고 있다. 이를 위해서 구글에서 python 기반의 새로운 관리 툴을 하나 선보였는데, 이것이 repo 이다.
repo 를 받고 설치하는 법등은 인터넷을 잘 찾아보면 내용이 있으니, 여기서 다루지는 않겠다. 여기서는 간단하게 여러개의 프로젝트를 하나의 repo 로 관리하는 법을 알아보려고 한다.
참고로 python 을 모르기 때문에 repo 가 어떻게 동작하는지를 분석하지는 않는다. 다만 단순하게 사용하는 입장에서 기술할 것이다.
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>
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 에서 관리가 가능해진다.
'git' 카테고리의 다른 글
git ^M 문자 제거 및 diff ^M 문자 표시 제거 (0) | 2018.04.18 |
---|---|
git 종합 ------------------------------ 여기에 몽땅 정리. (0) | 2013.04.17 |
git과 .gitignore (0) | 2012.02.01 |