git branch와 quilt 를 함께 사용하는 방법

이 방식은 커널 개발자들이 자주 사용하는 워크플로로, Git의 버전 관리와 quilt의 패치 관리 장점을 함께 활용할 수 있다.


1. Git 브랜치 준비

git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
git checkout -b my-feature
  • 새로운 기능이나 수정 작업을 위한 브랜치를 만든다.
  • my-feature 브랜치에서 패치 작업을 진행한다.

2. quilt 초기화

quilt init
  • .pc/ 디렉터리와 patches/ 디렉터리가 생성된다.
  • series 파일이 패치 순서를 관리한다.

3. Git과 quilt 연동 설정

export QUILT_PATCHES=patches
export QUILT_SERIES=series
  • 환경 변수를 설정해 quilt이 패치 파일을 저장할 위치를 명시한다.
  • .bashrc나 .zshrc에 추가해두면 매번 설정할 필요가 없다.

4. 새 패치 생성 및 수정

quilt new fix-driver-logging.patch
quilt add drivers/net/ethernet/intel/e1000/e1000_main.c
vi drivers/net/ethernet/intel/e1000/e1000_main.c
quilt refresh
  • 수정할 파일을 추가하고, 변경 후 refresh로 패치를 저장한다.
  • patches/fix-driver-logging.patch 파일이 생성된다.

5. Git에 패치 파일 커밋

git add patches/series patches/fix-driver-logging.patch
git commit -m "Add patch: fix-driver-logging"
  • quilt이 만든 패치 파일을 Git에 커밋한다.
  • 이렇게 하면 Git은 패치 파일 자체를 추적하고, quilt은 실제 코드 변경을 관리한다.

6. 패치 적용/해제 테스트

quilt pop -a
quilt push -a
  • 패치가 정상적으로 적용되고 되돌릴 수 있는지 확인한다.
  • 문제가 생기면 quilt edit으로 수정 후 다시 refresh 한다.

7. Git과 quilt 병행 관리

  • 새로운 패치를 추가할 때마다 quilt new → add → refresh → git commit 순서로 반복한다.
  • Git은 패치 파일의 버전을 관리하고, quilt은 패치의 적용 순서와 내용을 관리한다.

8. 최종 패치 세트 생성

quilt pop -a
quilt push -a
quilt series
  • 모든 패치가 적용된 상태를 확인한 뒤,
    patches/ 디렉터리의 패치 세트를 그대로 배포하거나 메일로 제출할 수 있다.

9. 메일용 패치 생성 (선택)

quilt mail -m "Fix driver logging issue"
  • 커널 메일링 리스트에 보낼 수 있는 형식의 패치를 생성한다.
  • 또는 git format-patch를 사용해 Git 커밋 기반으로 메일을 만들 수도 있다.

답글 남기기