오픈소스 이야기

2022.10.03 15:36

diff & patch

조회 수 219 추천 수 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 1648
19 유닉스 철학 - 함께 동작할 수 있는 프로그램을 만들 것 3 Kevin 2018.04.13 756
18 해커문화의 탄생 1 Kevin 2018.04.13 478
17 BSD 유닉스 6화 – 자유로의 투쟁 2 Kevin 2018.04.13 483
16 BSD 유닉스 5화 – TCP/IP 개발 1 Kevin 2018.04.13 473
15 BSD 유닉스 4화 – CSRG(Computer Systems Research Group) 결성 1 Kevin 2018.04.13 335
14 BSD 유닉스 3화 – BSD 유닉스 시작 1 Kevin 2018.04.13 433
13 BSD 유닉스 2화 – vi 에디터의 탄생 1 Kevin 2018.04.13 952
12 BSD 유닉스 1화 – UC 버클리로 간 유닉스 코드 1 Kevin 2018.04.13 515
11 라이온스 교수의 유닉스 해설서 1 Kevin 2018.04.13 434
10 리차드 스톨만과 자유소프트웨어 이야기 1 Kevin 2018.04.13 528
9 GNU Project - ‘GNU’s Not Unix 1 Kevin 2018.04.13 430
8 자유 소프트웨어 재단을 아시나요? 1 Kevin 2018.04.13 397
7 리눅스 생존 가이드 (리눅스 데스크탑 적응기) 2 file 행복한펭귄 2017.01.25 7209
6 리누스 토발즈 강연 The mind behind linux 행복한펭귄 2017.01.19 5397
5 왜 굳이 리눅스를 써야하나? 행복한펭귄 2016.08.31 5619
4 꾸준히, 자유롭게, 즐겁게 : 한국 오픈 소스 개발자들 이야기 2 행복한펭귄 2016.08.24 5416
3 리누스 토르발즈 기조연설 (리눅스 25년을 말하다) 2 행복한펭귄 2016.05.13 6920
2 깃허브, 오픈소스 소식 알리는 팟캐스트 ‘온에어’ 행복한펭귄 2016.03.23 5724
1 2015년 주목받은 신인 오픈소스 SW 11선 행복한펭귄 2016.03.23 5815
Board Pagination Prev 1 ... 2 3 4 Next
/ 4
CLOSE