명령어/Linux

[RHEL] gendiff 소스 트리에서 패치 파일 생성

jykim23 2026. 7. 16. 17:43
반응형

부제: 고친 파일 옆에 .orig만 남기면 패치가 나온다

cp config.txt config.txt.orig   # 원본을 .orig로 복사
vi config.txt                   # 마음껏 수정
gendiff . .orig > fix.patch     # 확장자로 짝을 찾아 diff
$ gendiff gd .orig
diff -up gd/foo/config.txt.orig gd/foo/config.txt
--- gd/foo/config.txt.orig    2026-07-15 02:30:11 +0000
+++ gd/foo/config.txt    2026-07-15 02:30:11 +0000
@@ -1,2 +1,3 @@
 line one
-line two
+line two CHANGED
+line three

gendiff는 디렉토리를 훑어 지정한 확장자(예 .orig)로 끝나는 파일마다 원본과 수정본을 diff로 비교해 하나의 패치로 묶어준다. rpm spec에서 소스에 패치를 적용할 때, 수정본을 만들고 그 패치를 뽑는 정석 도구다. 파일마다 일일이 diff -u를 돌릴 필요가 없다.

이렇게도 쓴다

수정 전에 원본을 백업하는 관성 표기다.

cp config.txt{,.orig}

 

트리 전체를 통째로 백업한 뒤 고치고 패치를 뽑는다.

cp -a src src.orig   # (-a는 -rp 포함: 재귀+속성 보존)

 

만든 패치를 spec의 SOURCES에 바로 저장한다.

gendiff hello-2.12 .orig > ~/rpmbuild/SOURCES/hello-fix.patch

 

패치가 몇 개 파일을 건드리는지 센다.

gendiff . .orig | grep -c '^diff'

 

빈 패치(변경 없음)인지 확인하고 걸러낸다.

gendiff . .orig | tee fix.patch | head -1
반응형