특정 브랜치에서 패치를 생성하고 이를 공식 버전과 비교하고 싶습니다 gcc
. 그러면 안정 버전에서 타르볼의 압축을 풀 때 패치를 적용하고 해당 특정 브랜치에서와 동일한 콘텐츠를 얻을 수 있습니다.
패치를 생성해야 하는 것은 이번이 처음이므로 이 작업을 수행하는 것이 처음이며, 매우 중요한 소프트웨어에 대해 이야기하고 있으므로 주요 관심사는 올바른 옵션을 얻고 구문 분석하는 것입니다.
diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch
이것이 충분하고 최선의 접근 방식입니까?
답변1
예, 이는 패치를 생성하는 좋은 방법입니다.
간단히 말해서:
단일 파일에 대한 패치를 생성하려면 명령은 다음과 같습니다.
diff -Naru file_original file_updated > file.patch
어디
-N
: 존재하지 않는 파일을 빈 파일로 처리-a
: 모든 파일을 텍스트로 처리-r
: 발견된 하위 디렉터리를 재귀적으로 비교합니다.-u
: 통합 컨텍스트 NUM(기본 3)줄 출력
전체 디렉터리에 대한 패치를 만듭니다.
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
(예: 개발이 분기되었고 안정 브랜치에 최종 수정 사항이 있음).