2014-01-13 6 views
2

일부 자식 저장소에서 생성 된 패치를 적용하려고합니다. 패치 상황에 맞는 라인이자식 패치 적용시 컨텍스트 라인의 공간 차이를 무시하십시오.

else if (o is Item) 

처럼 보이는 내가 패치가

$ git apply -v --check --directory=myroot --ignore-space-change --ignore-whitespace ../patches/0003-some-name.patch 

는 그

error: while searching for: 

말한다 적용 할 때 내 코드에서이

else if (o is Item) 

처럼 보인다 dif가있는 컨텍스트 블록을 제공한다. 위에 언급 된 공백에만 사용하십시오. 공백으로 문제를 해결하면 문제가 사라집니다. 컨텍스트 라인 안의 공백을 무시할 수 있도록 지정하는 방법이 있습니까? 우리는 그냥 공백에 대해 얘기하고있는 한

+0

''git apply'가 어떻게 작동하는지 모르겠지만 공백을 무시하는 것이 당신의 예제에서는 작동하지 않을 것이라고 생각했을 것입니다. 공백을 무시할 때 어떤 종류의 "토큰 화"를 사용한다고 가정하면 첫 번째 줄에는 7 개의 "토큰"이 있고 두 번째 줄에는 5가 있습니다. 두 줄을 인식하는 데 사용하는 언어를 어떻게 든 구문 분석해야합니다 구문 적으로 동일하다. – icabod

+0

나는 자식에게는 불가능하다고 결론을 내렸다. 당신이 말했듯이, 예를 들어 "elseif"와 "else if"는 전혀 다른 의미를 가지며 병합 후에 기능을 깨뜨릴 수 있습니다. – Soteric

답변

0

: git apply has the --ignore-whitespace option : 필요한 경우

패치를 적용, 상황에 맞는 라인의 공백의 변화를 무시

이 당신을 도움이 될 것입니다. 누군가 같은 문제가있는 것처럼 읽습니다 :-)

문맥의 공백 문제가 아니라면 보통 git apply--reject 옵션과 함께 사용합니다. 문제가되는 헌크가 적용됩니다. 패치 된 파일과 평행 한 파일 .rej에 저장됩니다.

+0

고마워 --ignore-whitespace가 도움이되지 않습니다. --reject 옵션을 사용하면 모든 패치를 수동으로 해결해야합니다. 아마도 내 저장소 코드와 저장소 코드를 일반적인 스타일로 가져올 가치가 있지만 먼저 git에서 처리 할 수 ​​있는지 알아야합니다. – Soteric

+0

마지막으로 나는 git으로 불가능하다는 결론에 도달했다. 이 답변에서 언급 한 것처럼 --reject 옵션과 함께 "git apply"를 사용합니다. – Soteric