레이블이 git인 게시물을 표시합니다. 모든 게시물 표시
레이블이 git인 게시물을 표시합니다. 모든 게시물 표시

2015년 10월 12일 월요일

안드로이드 repo 특정 날짜로 돌려서 빌드하기

급하게 아래 안드로이드 project를 build 해야 할 일이 생겼다.

https://github.com/voodik/android/tree/cm-12.1_5422

오래전에 받아 놓은 소스를 repo sync 후 빌드 하니 역시나 컴파일 에러가 난다.

git log를 보면 계속 작업을 진행하였지만 release한 버전에 tag가 없다. 그래서 원하는 버전으로 돌리기가 어렵다.

아래 포럼에 보면 마지막 7월 7일이 마지막 버전이다.
http://forum.odroid.com/viewtopic.php?f=94&t=9316

googling 하여 보니 git rev-list를 통해 특정 날짜로 돌릴 수 있다. 그래서 아래와 같이 모든 프로젝트를 7월 7일로 돌렸다.

우선 manifest를 7월 7일로 돌린다.
$ cd .repo/manifsets/
$ git rev-list -n 1 --before="2015-07-07 24:00:00" default | xargs -i git reset --hard {}

돌린 default.xml을 복사하여 둔다/
$ cp default.xml ../default_0707.xml

다시 마지막으로 원복시킨다.
$ git reset --hard origin/cm-12.1_5422

그리고 7월 7일 내용을 하나의 commit으로 올린다.
$ mv ../default_0707.xml default.xml
$ git add default.xml
$ git commit
$ repo sync

위와 같이 하지 않으면 repo sync시 다시 최신 소스로 돌아가 버린다.

마지막으로 모든 프로젝트도 동일하게 7월 7일로 reset 한다.

$ repo forall -c 'git rev-list -n 1 --before="2015-07-07 24:00:00" cm-12.1_5422 | xargs -i git reset --hard {}'

빌드를 진행한다.

2015년 5월 19일 화요일

GIT: unpack failed: error Missing tree

git push 할 경우 아래와 같은 나오면서 안되는 경우가 있었습니다.

error: unpack failed: error Missing tree 8fe84b8d352eedc3acd46a17de0531d38d5de4c2
fatal: Unpack error, check server log
To ssh://codewalker@xxxxxx.or.kr:29418/android_external_wpa_supplicant_8
 ! [remote rejected] HEAD -> refs/for/4412_4.4.4_master (n/a (unpacker error))

딱히 googling하여도 답을 못 찾겠더군요.

https://www.google.co.kr/webhp?sourceid=chrome-instant&ion=1&espv=2&es_th=1&ie=UTF-8#q=%22Error:+unpack+failed:+error+Missing+tree%22&newwindow=1&start=10

수정한 파일이 특이하게 아래 포맷으로 되어 있었습니다.
$ file android.config
android.config: ISO-8859 text

일반적으로 ASCII text인데 말이죠.
wifi_display.c:               C source, ASCII text
wifi_display.h:               ASCII text

그래서 파일을 지우고 다시 만들어 ASCII text로 만들고 수정하고 push 하니 문제가 없더군요.

$ file android.config
android.config: ASCII text

결론: unpack failed가 나면 file의 속성을 확인하고 ASCII text로 만들어 보자.