여러 다른 이름에 패치 적용

여러 다른 이름에 패치 적용

파일 이름은 다르지만 구조는 동일한 패치를 적용할 수 있습니까? 특정 이름을 가진 파일에 대한 패치가 있는데, 어떤 불가피한 이유로 파일이 변경되어 여러 파일로 복사되는 경우가 있는데, 무엇보다도 모든 파일에 패치를 적용해야 하는 상황입니다. 먼저 많은 파일의 이름을 원래 이름으로 바꾸는 것은 허용되지 않습니다.

예는 다음과 같습니다. (이것은 단지 예일 뿐이며 실제 상황은 조금 다릅니다.)

서버 컴퓨터

  • 원본 파일main.cpp
  • main_cli.cpp, main_tmp.cpp및 일부 에 복사 및 복사main_*.cpp

로컬 컴퓨터

  • 원본 파일main.cpp
  • 수정되었습니다
  • 패치 생성( 사용 diff -u)
  • 패치 파일 받기main.patch

main.patch그래서 로컬 PC에서 main_*.cpp서버 PC의 모든 파일 에 적용 해야 합니다 .

감사해요.

답변1

패치가 특정 파일에 적용되도록 지정할 수 있습니다.

patch -i main.patch main_cli.cpp

그런 다음 모든 파일을 반복하는 것은 충분히 간단합니다.

for f in main_*.cpp; do patch -i main.patch "$f"; done

예:

$ diff -u bar foo > patch1
$ cp bar bar2
$ patch < patch1
patching file bar
$ patch -i patch1 bar2
patching file bar2
$ diff -s foo bar2
Files foo and bar2 are identical

patch -i patch1 bar2패치 파일에서 패치 방법을 지정하더라도 주의하시기 바랍니다 .bar2bar

관련 정보