패치 생성

외부 종속성을 수동으로 수정하여 다음을 수행할 수 있습니다:

  • 종속성이 Omnibus 포함 패키지와 함께 작동하도록 보장합니다.
  • 상류 유지자가 수정하지 않은 문제를 수정합니다.

부트스트랩 패치 파일

Omnibus에는 빌드 프로세스의 일부로 자동으로 패치를 배달하고 적용하기 위한 특정한 DSL 및 규칙이 있습니다.

패치 파일을 적용하려면 변경 사항을 포함한 .patch 파일을 다음과 같은 특정 디렉토리 구조에 저장하고 patch DSL 메서드를 사용하세요:

config/patches/<software-name>

예를 들어, gitlab-rails의 실행 중에 적용된 패치의 경우, .patch 파일은 다음과 같은 디렉토리에 저장하세요:

config/patches/gitlab-rails

패치 생성

패치 파일을 생성하려면 다음을 사용할 수 있습니다:

  • 변경된 파일과 원본 파일을 비교하기 위해 diff 명령을 사용하기
  • 하나 이상의 커밋을 기반으로 패치를 출력하기 위해 Git을 사용하기

diff 사용하여 패치 생성하기

diff 명령을 사용하여 패치 파일을 생성하려면 다음을 수행하세요:

  1. 변경 중인 파일을 복제하고 새 파일에 새 이름을 지정하세요.
  2. 원본 파일을 변경하세요.
diff -Naur <original_file> <new_file> > <patch_filename>.patch

Git을 사용하여 패치 생성하기

두 개의 Git 커밋 사이의 패치 파일을 생성하기 위해 git diff 명령을 사용하세요. 두 커밋 ID를 알아야 합니다.

git diff <commitid1> <commitid2> > <patch_filename>.patch

또한 하나의 Git 커밋과 기본 HEAD를 기반으로 패치 파일을 생성할 수 있습니다.

git diff <commitid1> > <patch_filename>.patch

패치 사용하기

하나 이상의 파일을 패치하려면 다음을 수행하세요:

  1. 다운로드하거나 번들 설치하거나 유사한 방법을 사용하여 원본 파일을 가져옵니다.
  2. 각 원본 파일에 다음 줄을 추가하세요:

    patch source: '<patch_filename>.patch', target: "#{<install_directory>}/embedded/<target_file>.txt"