답변:
patch
이외의 옵션을 제공하지 않으면 -pN
패치가 제대로 적용되지 않을 때만 해당 파일이 생성됩니다.
따라서 불량 패치 생성 (또는 수락)을 중지하는 옵션이 있습니다. :)
현실 세계로 돌아가서 이것은 기능입니다. 때 patch(1)
원본 파일에 패치 세그먼트를 적용하는 데 실패, 그것은 임시 원본 파일로 튼튼하게 복사 해 저장 *.orig
에 거부 된 세그먼트를 덤프 *.rej
및 패치 세그먼트를 적용하려고 계속합니다. *.rej
비트 및 조각을 패치 된 파일에 복사 하여 파일을 열고 패치 프로세스를 수동으로 완료 할 수 있습니다 . *.orig
패치 프로세스가 실수로 뭔가를 난파 할 때 파일이 유용 할 수 있습니다, 당신은 그것을 해결하기 위해 원래 버전을 참조 할 필요가있다.
나는 항상 *.rej
및 *.orig
파일의 텍스트로 나쁜 패치를 수정하지는 않지만 필요할 때 사용할 수있는 것이 좋습니다.
잘못된 패치를 수정하면 프로젝트 루트에서 다음 스크립트를 실행하여 신속하게 정리합니다.
#!/bin/bash
find . '(' \
-name \*-baseline -o \
-name \*-merge -o \
-name \*-original -o \
-name \*.orig -o \
-name \*.rej \
')' -delete
cleanup-after-bad-patch
긴 이름은 여전히 필요한 파일을 제거 할 수 있기 때문에 실수로 실수로 실행되지 않도록하기 때문에 호출 합니다. 솔직히 말해서, 나는 보통 개발 시스템 clean
TabEnter에서이 스크립트를 찾기에 충분한을 입력하여 실행합니다 PATH
.
추가 확인 패턴 은 병합 작업 중에 동일한 문제가 발생했을 때 선택한 버전 제어 시스템에서 출력 한 파일에 대한 것 입니다. VCS / SCM 도구 에 맞게 조정할 수 있습니다 .
패치가 백업을 생성하지 않도록하려면 -b
및 --backup-...
옵션을 생략하십시오 .
.rej
파일 을 작성하지 않도록 지시하려면 명령 에 -r -
옵션을 추가하십시오 .
GNU patch 2.6
맥 에서 작동 확인 아마도 아마도-r /dev/null
패치 -p1 -B / dev / null -r-<file.patch
-B
플래그는 명령에서 보듯이 *.orig
출력을로 보내지 않습니다 /dev/null
. 일반 사용자가와 같은 파일에 쓸 수없는 경우가 있습니다 /dev/nullfoo.cpp
. 루트로이 작업을 수행하면 /dev
트리 에서 정크가 발생합니다 . 둘째, 파일을 -r -
억제하지 않습니다 *.rej
. bogus -B
플래그 로 인한 오류로 인해 현재 디렉토리에서 호출 된 파일을 만드는 파일 없이 실제로 수행 할 작업이 표시되지 않기 때문에 그렇게하는 것처럼 보입니다 . -B
-
man patch
: "-r 기본 .rej 파일 대신 거부 파일에 거부를 넣습니다. 거부 파일이-이면 거부를 무시합니다."