문제
소스 트리에 패치를 적용하는 데 어려움이 있는데 평소가 아닙니다. -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/.
물론 수정 또는 설명을 환영합니다.