오늘:
1,935
어제:
1,907
전체:
3,217,607

오픈소스 이야기

2022.10.03 15:36

diff & patch

조회 수 373 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

오픈소스에 대한 이해를 만화로 쉽게 할 수 있도록 작성한 컨텐츠를 원작자 님의 허락을 얻고 공유하고 있습니다.

공유를 허락해주신 원작자님에게 감사 드립니다.

원작자 : https://joone.net/

 

“diff와 patch는 무슨 툴인가?” 

잠깐 사용 방법을 소개하면,

hello_v1과 hello_v2 디렉토리에는 같은 hello.c라는 파일이 있지만, hello_v2에는 변경한 코드가 있습니다.

~/foss-comics-code/47.git/diff$ cat hello_v1/hello.c 

/* gcc hello.c -o hello */
#include <stdio.h>

int main() {
    printf("Hello World");
    return 0;
}

~/foss-comics-code/47.git/diff$ cat hello_v2/hello.c 


/* gcc hello.c -o hello */
#include <stdio.h>

int main() {
    printf("Hello World\n");
    return 0;
}

두 hello.c파일을 비교할 때, diff라는 툴을 사용합니다.

~/foss-comics-code/47.git/diff$ diff -u hello_v1 hello_v2
diff -u hello_v1/hello.c hello_v2/hello.c
--- hello_v1/hello.c 2022-09-05 18:37:24.894542803 -0700
+++ hello_v2/hello.c 2022-09-05 18:38:58.740332080 -0700
@@ -4,7 +4,7 @@
   
 int main() {
-    printf("Hello World");
+    printf("Hello World\n");
     return 0;
 }

위와 같이 두 파일을 차이를 쉽게 볼 수 있습니다. 자, 이제 이를 파일로 만들어서 hello.c를 만든 사람에 전달해봅시다.

~/foss-comics-code/47.git/diff$ diff -u hello_v1 hello_v2 > diff.patch
~/foss-comics-code/47.git/diff$ cat diff.patch 
diff -u hello_v1/hello.c hello_v2/hello.c
--- hello_v1/hello.c 2022-09-05 17:25:53.992894733 -0700
+++ hello_v2/hello.c 2022-09-05 17:27:51.091147715 -0700
@@ -4,7 +4,7 @@

 int main() {
-    printf("Hello World");
+    printf("Hello World\n");
     return 0;
 }

diff.patch라는 파일이 만들어졌습니다. 이제 이를 hello_v1/hello.c에 적용해봅니다.

~/foss-comics-code/47.git/diff$ patch -d hello_v1/ -p1 < diff.patch 

이렇게 하면 hello_v1/hello.c와 hello_v2/hello.c이 같아야 합니다. 확인해보겠습니다.

~/foss-comics-code/47.git/diff$ diff -u hello_v1 hello_v2
~/foss-comics-code/47.git/diff$ 

diff 명령어 결과가 없는 것으로 보아 두 파일이 같다는 것을 알 수 있습니다.

 

참고로, diff 명령어는 1970년대 초기에 벨랩에서 Unix 운영체제를 개발할 당시에 만들어진 툴입니다.

 

직접 diff와 patch 명령어를 사용해보세요!

https://github.com/joone/foss-comics-code/tree/main/47.git/diff

참고: diff와 patch 프로그램을 사용하는 방법 (https://kldp.org/node/28938)

 

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 오픈소스 이야기 게시판 이용안내 3 file Kevin 2018.04.13 1778
82 지속 가능한 오픈소스 프로젝트를 위한 가장 큰 기여는 후원 1 file Kevin 2024.09.26 280
81 2024년 오픈소스 현황 보고서 1 file Kevin 2024.08.28 1086
80 리눅스 배포판 점유율(출처:랜스위퍼) 4 file Kevin 2024.08.21 1668
79 리눅스는 인기가 있을까? 9 file Kevin 2023.12.25 2237
78 오픈소스 세계의 짠한 현실 5 file Kevin 2023.12.19 1492
77 Python 프로그래밍 언어 2 1 Kevin 2023.04.25 1343
76 Python 프로그래밍 언어 1 1 Kevin 2023.04.17 1652
75 LLVM 프로젝트 (2/2) 2 Kevin 2023.01.20 877
74 LLVM 프로젝트 (1/2) Kevin 2023.01.20 1152
73 X-윈도우와 Wayland 4 Kevin 2022.11.03 4157
72 GIT Kevin 2022.10.03 747
71 quilt 사용하기 Kevin 2022.10.03 538
» diff & patch Kevin 2022.10.03 373
69 gpl-violations.org 1 Kevin 2022.09.02 523
68 KHTML 1 Kevin 2022.08.03 571
67 파이어폭스 1 Kevin 2022.06.30 741
66 넷스케이프 브라우저 2 Kevin 2022.05.16 726
65 모자익 브라우저의 탄생 Kevin 2021.10.12 692
64 월드와이드웹(WWW)의 시작 4 1 Kevin 2021.05.16 543
63 월드와이드웹(WWW)의 시작 3 1 Kevin 2021.04.12 739
Board Pagination Prev 1 2 3 4 ... 5 Next
/ 5
CLOSE