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

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

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(예: 개발이 분기되어 안정 브랜치에 최종 수정 사항이 적용됨).

관련 정보