2008-10-08 2 views

답변

18

변경된 코드 파일 간의 차이점 목록이있는 파일입니다. 일반적으로 두 파일에 diff -u을 수행하여 생성 된 형식입니다. 대부분의 버전 제어 시스템은 패치를 쉽게 만들 수 있지만 일반적으로 동일한 형식입니다.

이렇게하면 패치 명령을 사용하여 다른 사람의 소스 코드 복사본에 쉽게 코드 변경을 적용 할 수 있습니다. 예를 들어

:

의 나는 다음과 같은 코드가 있다고 가정 해 봅시다 :

<?php 
    $foo = 0; 
?> 

을 나는이로 변경 :

<?php 
    $bar = 0; 
?> 

패치 파일은 다음과 같습니다

Index: test.php 
=================================================================== 
--- test.php (revision 40) 
+++ test.php (working copy) 
@@ -3,7 +3,7 @@ 
     <?php 
-   $foo = 0; 
+   $bar= 0; 
     ?> 
+1

오래 전이 게시물을 게시 한 적이 있지만 방금 첫 페이지 상단에 나타났습니다. 멋진 답변입니다. 덕분에 지식 은행이 조금 더 늘어났습니다. –

+0

유용하다고 생각해 주셔서 감사합니다 :) –

1

A patch는 메인테이너의 소스 트리를 자신의 것으로 바꾸는 데 필요한 모든 정보를 담고있는 파일이다. 보통 diff 또는 svn diff 또는 git format-patch과 같은 도구로 만듭니다.

전통적으로 오픈 소스 프로젝트는 일반 schlub의 패치를 패치 형태로 제출하므로 다른 사람들이 저장소에 액세스 할 필요가 없습니다.

+0

이것은 다양한 버전 제어 시스템에 대한 다양한 명령을 아는 데 매우 유용합니다. –

1

패치는 uspally .patch 파일의 형태로 두 세트의 코드 파일 간의 차이를 전송하기위한 일반적인 플랫 파일 형식입니다. 따라서 오픈 소스 프로젝트에서 작업하면서 파일에 대한 코드를 변경하고 체크 인 할 프로젝트 소유자에게 제출하려는 경우 (보통 체크 인 권한이 없기 때문에), 패치를 통해 그렇게 할 수 있습니다 .

WinMerge에는 TortoiseSVN과 같은 다른 많은 도구와 마찬가지로이 기능이 내장되어 있습니다.

0

저는 항상 그 용어가 당신의 구멍이 많은 청바지를 입히기 위해 사용 된 무릎 패치 엄마처럼 버그 수정을 의미한다고 생각했습니다.

1

패치 파일은 기존 소스와 수정 한 소스의 차이를 나타냅니다. 이것은 많은 프로젝트에서 기능을 추가하거나 버그를 수정하는 주요 수단입니다.

diff 명령을 사용하여 패치를 만듭니다 (예 :).

그러면이 패치를 개발 메일 링리스트에 제출하고 잘받은 경우 커미터가 패치를 적용하여 (자동으로 변경 사항 적용) 코드를 커밋합니다.

패치는 patch 명령을 사용하여 적용됩니다.

1

일반적으로 기능에 대한 집합 변경 집합이 포함 된 통합 된 diff 파일을 제출해야합니다. 당신은 read more about patches on Wikipedia 일 수 있습니다. 몇몇 버전 제어 시스템 (svn, git 등)은 변경 집합을 기반으로 패치 파일을 생성합니다.

1
1. n. A temporary addition to a piece of code, usually as a quick-and-dirty 

기존 버그 또는 오작동에 대한 해결책. 패치가 작동 할 수도 있고 작동하지 않을 수도 있으며 결국에는 영구적으로 프로그램에 통합 될 수도 있고 그렇지 않을 수도 있습니다. diff 또는 mod와 다른 점은 패치가 프로그램 나머지 보다 더 원시적 인 방법으로 생성된다는 점입니다. 고전적인 예는 전면 스위치 을 사용하여 수정 된 지침이며 원래 HLL로 작성된 프로그램의 이진 실행 파일로 직접 변경되었습니다. 한 줄 수정 내용 비교.

은 만들고 패치를 제출 커버 오픈 소스 프로젝트에 코드를 제출하기에 전문 용어 파일 here

+0

질문자가 언급 한 용도가 아닌 것 같습니다. – Blorgbeard

6

리처드 존스의 전체 정의, 레드햇 개발자,이 a nice little primer를 참조하십시오.

4

패치는 대개 뭔가를 변경하는 방법에 대한 정보가 들어있는 파일입니다 (주로 버그를 수정하기 위해 자주 개선되었지만 개선 될 수도 있음). 다른 종류의 패치가 있습니다.

소스 코드 패치에는 하나 또는 여러 개의 소스 코드 파일을 수정해야하는 정보가 들어 있습니다. diff 명령을 사용하여 쉽게 생성 할 수 있으며 패치 명령을 사용하여 적용 할 수 있습니다 (Linux/UNIX 시스템에서는이 명령이 표준입니다).

그러나 바이너리 패치도 있습니다. 이진 패치에는 바이너리 내의 특정 바이트를 어떻게 변경해야하는지에 대한 정보가 들어 있습니다. 물론 이진 패치는 OpenSource 세계에서는보기 드문 일이지만, 컴퓨터 초기에는 출하 된 바이너리를 수정하기 위해 (일반적으로 버그를 해결하기 위해) 많은 것을 보았습니다.

패치를 제출하면 로컬로 내용을 수정 했으므로 다른 사람에게 파일을 보내면이 패치를 로컬 복사본이나 웹의 공개 복사본에 적용 할 수 있으므로 다른 사용자가 이러한 수정 프로그램을 이용할 수 있습니다.

패치는 특정 플랫폼에서 거의 컴파일되는 소스 코드가있는 경우 자주 사용되지만 일부 컴파일은 실제로 컴파일 할 때 약간의 변경이 필요합니다. 물론 소스를 가져 와서 수정하고 다운로드 된 수정 코드를 제공 할 수 있습니다. 그러나 원본 소스가 다시 변경되면 어떻게됩니까? (예 : 버그가 고정되거나 작은 기능이 추가됨)? 그런 다음 소스를 다시 다운로드하고 변경 사항을 다시 적용하고 새로운 수정 된 버전을 제공해야했습니다. 수정 된 소스를 최신 상태로 유지하는 것은 많은 작업입니다. 수정하는 대신 원본과 수정 된 사본 사이에 diff을 작성하여 서버에 저장하십시오. 이제 사용자가 소스에서 응용 프로그램을 다운로드하고 컴파일하려면 원본 소스의 가장 최신 버전 &을 먼저 다운로드 한 다음 변경 사항을 적용하지 않고도 패치를 적용하여 컴파일하고 최신 버전을 유지할 수 있습니다 패치. 패치가 수정되는 장소 중 하나에서 원본 소스가 정확히 변경된 경우에만 문제가 발생합니다. 이 경우 시스템은 패치 적용을 거부하고 새로운 패치를 작성해야합니다.

1

패치는 시스템 바이너리를 업데이트하는 작업에도 사용됩니다. Microsoft는 항상 패치를 보내지 만 소스 코드는 아닙니다. 향상된 바이너리를 설치하는 .msp 파일입니다. 모든 컴퓨터 과학 용어와 마찬가지로 패치도 오버로드됩니다.