Patch에 관한 질문입니다

patch에 관한 질문입니다.

맥과 우분투에서 블렌더 2.5x의 소스코드를 받아서 scons로 컴파일해서 쓰고 있습니다.
그냥 매뉴얼에 나와있는 것을 보고 따라하는 수준정도 입니다.

쓰다보니 외부 개발자들이 만든 괜찮은 패치를 적용시키다가 에러가 나오는 부분이 있어서 질문드리는건데,.
제가 프로그래머가 아니라서 무지에서 오는 바보스런 질문일지도 모르겠네요.^^;

서로 다른 개발자가 만든 b.patch와 c.patch라는 두개의 패치 파일을 적용하려고 합니다.

b와 c라는 패치파일은 따로 따로 --dry-run 옵션으로 테스트 했을때는 성공적으로 패치가 되는 상태입니다.
그런데 각각의 패치파일이 몇몇 동일한 파일을 바꾸는 코드가 들어있는 상태여서
둘중 하나를 먼저 패치하면 다른 패치파일은 부분부분 실패했다고 나옵니다.

프로그래밍에 까막눈이지만… 제가 하려는 패치파일 보니
원본문장을 수정할때 문장을 바꾸는 것이 아니라
몇번째 줄 사이에 새로운 코드를 끼워넣는 형식인 것 같아 보입니다.

예를 들면 이런건데요,
원본에 b라는 패치를 적용하고 다시 수정된 원본에 c라는 패치를 할때
c의 내용이 원본의 @@ -412,6 +412,70 @@ 이라는 부분을 수정하라는 것인데
b패치에 의해 새로운 코드가 추가되 몇줄이 밀려있는 상태라서 c라는 패치가 안되는 것 같습니다.

[b:1hjhs88a]제 예상으로는 b라는 패치를 먼저실행한 상태에서 c라는 패치파일에 있는
-,+다음에 나오는 줄번호(이게 맞나요?)만 바꾸면 될 것 같은데요,
이해를 못하는 부분이 있어서 질문을 드려봅니다.
@@ -"줄번호" 쉼표 "숫자" +"줄번호" 쉼표 "숫자" @@ 같은 형식에서
쉼표뒤에 나오는 "숫자"의 의미를 잘 모르겠습니다.
이 부분을 어떻게 고치는 건가요?
단순히 줄번호만 고치면 되는건지도 모르겠네요.[/b:1hjhs88a]

나름 혼자서 지지고 볶고 해보려고 이리 저리 검색해봤지만…
무슨 단어로 검색해야 하는지도 잘 모르는 어리버리한 상태이긴 합니다.^^;

제가 이해하는 내용정도만 설명드린거라 제대로 질문이 제대로 된건지 잘 모르겠네요.
혹시 제가 질문한 내용이 설명된 초보자를 위한 홈페이지나 책이 있으면 추천 부탁드릴께요.

[code:2ao7veso]
@@ -74,8 +74,13 @@
<!–@end–>

<tr>

  • <th scope="row"><div>{$var->title}</div></th>
  • <th scope="row">
  •   &lt;div&gt;{$var-&gt;title}&lt;/div&gt;
    
  •   &lt;br /&gt;
    
  •   &lt;div&gt;({$name})&lt;/div&gt;
    
  • </th>
    <td>
  •    &lt;p style=&quot;clear&#58;both;&quot;&gt;{$var-&gt;description}&lt;/p&gt;
    
    <!–@if($var->type == "text")–>
    <input type="text" name="{$name}" value="{htmlspecialchars($var->value)}" class="inputTypeText w400"/>

[/code:2ao7veso]

[code:2ao7veso]
@@ -74,8 +74,13 @@
[/code:2ao7veso]
원본문서의 74째줄부터 8줄을 패치하면 74째줄부터 13줄이 된다.

[code:2ao7veso]
<!–@end–>

<tr>
[/code:2ao7veso]
착오가 생기지 않게 패치가 시작되는 줄 바로앞의 세줄을 기억해 둔다.

[code:2ao7veso]

  • <th scope="row"><div>{$var->title}</div></th>
  • <th scope="row">
  •   &lt;div&gt;{$var-&gt;title}&lt;/div&gt;
    
  •   &lt;br /&gt;
    
  •   &lt;div&gt;({$name})&lt;/div&gt;
    
  • </th>
    [/code:2ao7veso]
  • 가 붙은 원본 코드를
  • 가 붙은 코드로 바꾼다

[code:2ao7veso]
<td>
[/code:2ao7veso]
중간에 원본과 패치후의 내용이 같은 곳.

[code:2ao7veso]

  •    &lt;p style=&quot;clear&#58;both;&quot;&gt;{$var-&gt;description}&lt;/p&gt;
    

[/code:2ao7veso]
원본에는 없는 코드를 넣는다.

[code:2ao7veso]
<!–@if($var->type == "text")–>
<input type="text" name="{$name}" value="{htmlspecialchars($var->value)}" class="inputTypeText w400"/>

[/code:2ao7veso]
착오를 없애기위해 패치가 끝나는 줄 바로 뒤 세줄을 기억해 둔다.

결과
원본은 8줄이지만,

[code:2ao7veso]
<!–@end–>

<tr>
<th scope="row"><div>{$var->title}</div></th>
<td>
<!–@if($var->type == "text")–>
<input type="text" name="{$name}" value="{htmlspecialchars($var->value)}" class="inputTypeText w400"/>

[/code:2ao7veso]

패치후에는 13줄이 된다.

[code:2ao7veso]
<!–@end–>

<tr>
<th scope="row">
<div>{$var->title}</div>
<br />
<div>({$name})</div>
</th>
<td>
<p style="clear:both;">{$var->description}</p>
<!–@if($var->type == "text")–>
<input type="text" name="{$name}" value="{htmlspecialchars($var->value)}" class="inputTypeText w400"/>

[/code:2ao7veso]

검색은 "diff" 로 하시면 될 겁니다.

쉼표 뒤에 있는 숫자가 원본 코딩 줄수, 수정후 전체 줄수였군요.
너무 알기 쉽게 설명해주셨네요.
고맙습니다.^^

전체적으로 설명해주신 내용중에 추가될 내용전에 이전 코드 세줄을 적어주는건
미리 규칙된 내용같아 보이는데 제 생각이 맞는건가요?

[quote:1qltsle2]
전체적으로 설명해주신 내용중에 추가될 내용전에 이전 코드 세줄을 적어주는건
미리 규칙된 내용같아 보이는데 제 생각이 맞는건가요?
[/quote:1qltsle2]

네. 앞/뒤 세줄로 정해져 있습니다.

floor님, 너무 감사합니다.^^