2009. 5. 7. 15:52
>> 간단 시나리오.
u-boot를 git를 이용해서 받았다.
U-BOOT-1_1_6 의 TAG 를 Base로 작업을 했다 치자.
내가 가진 보드에서 무지하게 동작잘하는데, 같은 보드를 가진 client가 uboot를 달라한다.
이럴땐 어떻게 전달할까?
case 1. make clean을 해서 소스만 남긴뒤, 압축해서 메일로 보낸다.
-> 요거 소스 용량얼마 안되고, Base 코드도 서로 모르고 하면 이게 최고다. 소스 용량이 얼마 안된다면 말이다. ㅡ,.ㅡ
case 2. Base 코드랑 compare해서 수정된 파일만 남기고 모조리 지운다. 그리고 폴더채로 압축해서 메일로 보낸다.(Beyond Compare같은 툴을 쓰면 겁나 편하다.)
-> 불과 4,5년전에 엄청나게 하던 짓이다.800M넘는 수만개의 파일을 비교해서 다른놈만 뽑아서 보내느라 죽는줄 알았다. 즉 무식하면 손 발이 고생한다는게 요런 짓이다.
case 3. diff 명령을 이용해 patch script 파일을 만들어 요놈만 보내자. client는 patch 명령을 이용해 틀린부분만 업데이트가 가능할 것이다.
-> 이걸 이제야 알게 되었다니 기가 막힐 노릇이다. 모르는게 약이라고는 하지만 무식하면 손 발이 고생한다는 걸 절대 잊어선 안되겠다.
1. Patch 파일 만들기.
u-boot Base코드와 u-boot-work 작업코드를 준비한다. 요기까지는 case 2랑 비슷하다.
2. Base 코드에 Patch 적용하기
diff.patch파일을 적당한 위치에 카피한다. u-boot-base폴더가 있는 곳에 카피를 하자.
cf) 마음껏 퍼가셔도 됩니다.
출처 및 댓글 남겨주시면 감사하고, 것도 여의치 않으면...
그동안, 그리고 앞으로 내가 저지를 행동들이 있기에 ^____________^
u-boot를 git를 이용해서 받았다.
U-BOOT-1_1_6 의 TAG 를 Base로 작업을 했다 치자.
내가 가진 보드에서 무지하게 동작잘하는데, 같은 보드를 가진 client가 uboot를 달라한다.
이럴땐 어떻게 전달할까?
case 1. make clean을 해서 소스만 남긴뒤, 압축해서 메일로 보낸다.
-> 요거 소스 용량얼마 안되고, Base 코드도 서로 모르고 하면 이게 최고다. 소스 용량이 얼마 안된다면 말이다. ㅡ,.ㅡ
case 2. Base 코드랑 compare해서 수정된 파일만 남기고 모조리 지운다. 그리고 폴더채로 압축해서 메일로 보낸다.(Beyond Compare같은 툴을 쓰면 겁나 편하다.)
-> 불과 4,5년전에 엄청나게 하던 짓이다.800M넘는 수만개의 파일을 비교해서 다른놈만 뽑아서 보내느라 죽는줄 알았다. 즉 무식하면 손 발이 고생한다는게 요런 짓이다.
case 3. diff 명령을 이용해 patch script 파일을 만들어 요놈만 보내자. client는 patch 명령을 이용해 틀린부분만 업데이트가 가능할 것이다.
-> 이걸 이제야 알게 되었다니 기가 막힐 노릇이다. 모르는게 약이라고는 하지만 무식하면 손 발이 고생한다는 걸 절대 잊어선 안되겠다.
1. Patch 파일 만들기.
u-boot Base코드와 u-boot-work 작업코드를 준비한다. 요기까지는 case 2랑 비슷하다.
>> diff -uprN -X dontdiff u-boot u-boot-work > diff.patch
를 실행하면 두 폴더의 차이가 patch 파일이 생성된다. u : output num lines of unified context 란다. 사실 뭔지 잘모르겠다.
p : 비교하는 파일에 대한 정보가 diff.patch파일에 기록된다. 요놈이 없으면 patch명령이 동작하지 않는다.
r : sub folder까지 비교한다.
N : 추가된 파일에 대한 정보를 diff.patch파일에 기록한다.
-X [dontdiff] : dontdiff에 대한 파일은 diff.patch파일생성에서 제외시킨다.
cf) dontdiff 파일 내용
p : 비교하는 파일에 대한 정보가 diff.patch파일에 기록된다. 요놈이 없으면 patch명령이 동작하지 않는다.
r : sub folder까지 비교한다.
N : 추가된 파일에 대한 정보를 diff.patch파일에 기록한다.
-X [dontdiff] : dontdiff에 대한 파일은 diff.patch파일생성에서 제외시킨다.
cf) dontdiff 파일 내용
*~
*.png
*.a
*.o
*.so
*.ko
*.gz
*.orig
*.rej
*.ver
*.bin
*_MODULES
.*
*.aux
*.dvi
*.eps
*.log
*.pdf
*.css
*.gif
*.jpeg
*.html
*.ps
*.sgml
*.tex
...
*.png
*.a
*.o
*.so
*.ko
*.gz
*.orig
*.rej
*.ver
*.bin
*_MODULES
.*
*.aux
*.dvi
*.eps
*.log
*.css
*.gif
*.jpeg
*.html
*.ps
*.sgml
*.tex
...
2. Base 코드에 Patch 적용하기
diff.patch파일을 적당한 위치에 카피한다. u-boot-base폴더가 있는 곳에 카피를 하자.
>> cd u-boot-base
>> patch -p1 < ../diff.patch
이러면 Patch 끝.>> patch -p1 < ../diff.patch
-p[N] : Strip [N] leading components from file names.
diff에 기록된 파일path에 대하여 /를 찾아서 [N]까지를 뺀 파일에 적용한다.
즉 diff.patch에 u-boot/test.c 에 대한 파일은 -p1일 경우 test.c를 찾아서 적용, -p0일 경우엔 u-boot/test.c를 찾아서 적용하게 된다.
diff에 기록된 파일path에 대하여 /를 찾아서 [N]까지를 뺀 파일에 적용한다.
즉 diff.patch에 u-boot/test.c 에 대한 파일은 -p1일 경우 test.c를 찾아서 적용, -p0일 경우엔 u-boot/test.c를 찾아서 적용하게 된다.
cf) 마음껏 퍼가셔도 됩니다.
출처 및 댓글 남겨주시면 감사하고, 것도 여의치 않으면...
그동안, 그리고 앞으로 내가 저지를 행동들이 있기에 ^____________^
'이것 저것.. > ProgramGuide' 카테고리의 다른 글
GIT 간단사용기 2 (0) | 2009.05.08 |
---|---|
GIT 간단 사용기 1 (2) | 2009.05.07 |
Linux svn client - Nautilussvn (0) | 2009.05.05 |
Eclipse기반 크로스플랫폼 개발 환경 (0) | 2009.04.10 |
Trac으로 Project를 관리해 보자 (0) | 2009.02.05 |