*.orig 및 *.rej 파일을 생성하지 않고 "패치" 실행

*.orig 및 *.rej 파일을 생성하지 않고 "패치" 실행

파일 을 patch생성하지 말라고 할 수 있나요 ? 나는 이것을 매우 짜증나게 만드는 패치를 발견했습니다..orig.rej

답변1

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이름이 길면 실수로 실행하여 필요한 파일이 삭제되는 일이 부분적으로 방지되기 때문에 그렇게 부릅니다 . 하지만 솔직히 말해서 나는 보통 를 입력하여 실행하는데 , 이는 내 개발 컴퓨터에서 이 스크립트를 찾는 데 cleanTabEnter충분합니다 .PATH

추가 모드가 적용 가능한지 확인합니다.내가 선택한 버전 관리 시스템병합 작업 중에 동일한 문제가 발생한 경우. 상황에 맞게 조정할 수도 있습니다.VCS/마이크로컨트롤러도구.

답변2

--no-backup-if-mismatch옵션은 ".orig" 파일을 방지합니다.

--merge파일 내 충돌을 일으키는 이 옵션을 시도해 볼 수도 있습니다 .

어떤 경우든 병합이 너무 힘들어지면 신속하게 좋은 상태로 되돌릴 수 있는 방법이 있어야 합니다.

답변3

패치가 백업을 생성하지 않도록 하려면 -b--backup-...옵션을 생략하면 됩니다.

.rej파일을 생성하지 않도록 지시하려면 -r -명령에 옵션을 추가하십시오.

답변4

제가 생각할 수 있는 가장 좋은 방법(러그 밑의 먼지를 쓸어내는 방법임은 인정)은 -r <tmpfile>다음과 같이 사용하는 것입니다.

# patch -r /tmp/deleteme.rej -i patchfile filetobepatched

v2.5.8부터 -r -이 파일이 실제로 생성됩니다 -.

관련 정보