문제

소스 트리에 패치를 적용하는 데 어려움이 있는데 평소가 아닙니다. -p 스트리핑 문제. patch 패치 할 파일을 찾을 수 있습니다.

구체적으로, 내 질문은 .rej 파일 patch 몇 번의 덩어리에 실패하면 생성됩니다. 대부분의 토론 patch/diff 나는 이것을 포함하지 않는 것을 보았다.

도움이 되었습니까?

해결책

간단한 예 :

$ echo -e "line 1\nline 2\nline 3" > a
$ sed -e 's/2/b/' <a >b
$ sed -e 's/2/c/' <a >c
$ diff a b > ab.diff
$ patch c < ab.diff
$ cat c.rej
***************
*** 2
- line 2
--- 2 -----
+ line b

보시다시피 : 이전 파일에는 2 행과 새 파일이 포함되어 있습니다. ~해야 한다 줄 b를 포함합니다. 그러나 실제로 라인 C를 포함합니다 (거부 파일에는 표시되지 않음).

실제로, 이러한 문제를 해결하는 가장 쉬운 방법은 .diff/.patch 파일에서 diff 단편을 가져 와서 패치 할 파일의 적절한 위치에 삽입 한 다음 손으로 코드를 비교하여 어떤 줄을 파악하는 것입니다. 실제로 갈등을 일으킨다.

또는 - 또는 대안 적으로 : 원본 파일을 가져 와서 패치하고 파일에서 3 방향 병합을 실행합니다.

다른 팁

뒤흔들다 패치가 성공하지 못할 때 .rej 파일을 적용하기위한 훌륭한 도구입니다.

패치 파일을 다루는 전문가는 아니지만 포함 된 정보에 대한 이해를 바탕으로 읽는 방법에 대한 명확성을 추가하고 싶습니다.

당신의 .rej 파일은 다음을 알려줍니다.

  • 원본과 .rej 파일의 차이;
  • 문제 코드가 원본 파일에서 시작되는 경우 해당 파일에서 얼마나 많은 줄이 발생하는지;
  • 그리고 새 파일에서 코드가 시작되는 곳과 해당 파일에서 얼마나 많은 줄이 발생하는지.

이 메시지가 주어지면 .rej 파일의 시작 부분에 언급되어 있습니다.

diff a/www/js/app.js b/www/js/app.js (rejected hunks) @@ -4,12 +4,24 @@

내 문제 파일에 대해 (www/js/app), 원본의 차이 ( a/www/js/app.js 첫 번째 줄에서) 및 .rej 파일 ( b/www/js/) 원본의 4 행에서 시작하여 12 줄 (쉼표 이전의 부품 @@ -4,12, +4,24 @@ 2 행에서), 새 버전의 파일 4 행에서 시작하여 24 줄 (쉼표 이후의 부품 @@ -4,12, +4,24 @@.

자세한 내용은 패치 파일에 대한 우수한 개요 (위의 정보가 포함되어 있고 추가 된 줄 및/또는 파일 버전간에 대한 세부 정보)를 참조하십시오. http://blog.humphd.org/vocamus-906/.

물론 수정 또는 설명을 환영합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top