패치를 만드는 좋은 방법인가요?

패치를 만드는 좋은 방법인가요?

특정 브랜치에서 패치를 생성하고 이를 공식 버전과 비교하고 싶습니다 gcc. 그러면 안정 버전에서 타르볼의 압축을 풀 때 패치를 적용하고 해당 특정 브랜치에서와 동일한 콘텐츠를 얻을 수 있습니다.

패치를 생성해야 하는 것은 이번이 처음이므로 이 작업을 수행하는 것이 처음이며, 매우 중요한 소프트웨어에 대해 이야기하고 있으므로 주요 관심사는 올바른 옵션을 얻고 구문 분석하는 것입니다.

diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch

이것이 충분하고 최선의 접근 방식입니까?

답변1

예, 이는 패치를 생성하는 좋은 방법입니다.

간단히 말해서:

  1. 단일 파일에 대한 패치를 생성하려면 명령은 다음과 같습니다.

    diff -Naru file_original file_updated > file.patch

    어디

    • -N: 존재하지 않는 파일을 빈 파일로 처리
    • -a: 모든 파일을 텍스트로 처리
    • -r: 발견된 하위 디렉터리를 재귀적으로 비교합니다.
    • -u: 통합 컨텍스트 NUM(기본 3)줄 출력
  2. 전체 디렉터리에 대한 패치를 만듭니다.

    diff -crB dir_original dir_updated > dfile.patch

    어디

    • -c: 복사된 컨텍스트의 NUM(기본 3)줄을 출력합니다.
    • -r: 모든 하위 디렉터리를 재귀적으로 비교합니다.
    • -B: 줄이 모두 비어 있는 변경 사항을 무시합니다.

결국 이 패치를 적용하면 작동하게 됩니다.

patch -p1 --dry-run < dfile.patch

스위치는 p파일이 올바르게 식별될 수 있도록 패치에 경로 접두사를 제거하도록 지시합니다. 이는 대부분의 경우에 해당됩니다 1.

--dry-run화면에 인쇄된 결과가 만족스러우면 삭제하세요.

답변2

최신 git 체크인을 일부 안정적인 버전과 비교하려면 git diff the-stable-version저장소로 이동하세요(이를 설명하는 태그, 정확한 버전 번호 또는 일부 변형을 찾아야 함). git프로젝트의 전체 기록을 유지합니다(종종 일부만 가져오는 방법도 있습니다). 다른 개발 브랜치에 있는지는 중요하지 않습니다 the-stable-version(예: 개발이 분기되었고 안정 브랜치에 최종 수정 사항이 있음).

관련 정보