Jump to content

patch (Unix)

This is a fully translated article. Click here for more information.
From DawoumWiki, the free Mathematics self-learning

patch
Original author(s)Larry Wall
Developer(s)Paul Eggert, Wayne Davison, David MacKenzie, Andreas Grünbacher
Initial releaseMay 24, 1985; 39 years ago (1985-05-24)
Operating systemUnix and Unix-like, MSX-DOS, Microsoft Windows
PlatformCross-platform
TypeCommand

컴퓨터 도구 패치패치 파일이라는 별도의 파일에 포함된 지침에 따라 텍스트 파일을 업데이트하는 유닉스 프로그램입니다. 패치 파일 (줄여서 패치라고도 함)은 차이점 목록으로 구성된 텍스트 파일이고 원본 및 업데이트된 파일을 인수로 사용하여 관련 diff 프로그램을 실행하여 생성됩니다. 패치를 사용하여 파일을 업데이트하는 것을 종종 패치를 적용하는 것 또는 단순히 파일 패치하는 것이라고 참조됩니다.

History

원래 패치 프로그램은 Larry Wall (Perl 프로그래밍 언어를 만들었었던 사람)에 의해 작성했었고 1985년 5월 mod.sources[1] (나중에 comp.sources.unix가 됨)에 게시되었습니다. 프로그램의 변형 (그러나 유일한 것은 아님)는 GNU 프로젝트의 일부이고[2] FSF에서 유지 관리됩니다.[3][4][5]

Usage context

다른 프로그래머를 위해 프로그래머에 의해 개발된, 패치는 소스 코드를 최신 버전으로 업데이트하기 위해 자주 사용되었습니다. 이것 때문에, 많은 사람들이 패치를 소스 코드와 연관시키려고 하지면, 패치는 실제로 임의의 텍스트에 적용될 수 있습니다. 패치된 파일은 임의의 불필요한 텍스트를 축적하지 않으며, 이것은 일부 사람들이 단어의 영어 의미를 기반으로 인식하는 것입니다; 패치는 텍스트를 추가하는 것처럼 텍스트를 제거할 수 있습니다.

여기에 설명된 패치는 개념적으로 유사할 수 있지만 프로그램을 구성하는 바이너리 파일을 새 릴리스로 업데이트하기 위해 배포되는 바이너리 패치와 혼동되어서는 안 됩니다.

Patches in software development

패치에 대한 입력으로 사용되는 diff 파일은 읽을 수 있는 텍스트 파일이며, 이것은 그것들이 사용하기 전에 사람에 의해 쉽게 검토되거나 수정될 수 있음을 의미합니다.

"diff" 프로그램 외에도, diff는 역시 Subversion, CVS, RCS, MercurialGit외 같은 다른 프로그램에 의해 생성될 수 있습니다.

패치는 CVS를 포함한 많은 소스 제어 시스템의 중요한 구성 요소입니다.

Advanced diffs

더 발전된 diff가 사용될 때, 패치는 그들의 수정이 패치를 방해하지 않은 한 그동안 수정되어 온 파일들에 적용될 수 있습니다. 이것은 "context diffs"와 "unified diffs" ("unidiff"라고도 함)를 사용함으로써 이루어지며, 각 변경 사항은 변경된 부분 바로 앞과 뒤의 텍스트인 컨텍스트로 둘러싸여 있습니다. 패치는 그런-다음 diff에서 줄 번호를 시작점으로 사용하여 파일에서 이전 변경에 의해 표시되면 이 컨텍스트를 패치되려는 영역을 찾기 위해 사용할 수 있습니다. 이 속성 때문에, 컨텍스트 및 통합 diff는 많은 소프트웨어 프로젝트에 제출에 대해 패치의 선호되는 형식입니다.

위의 기능은 diff와 patch를 특히 오픈-소스 소프트웨어에 대한 수정 사항을 교환하는 데 인기를 만듭니다. 외부인은 공개적으로 사용 가능한 최신 소스 코드를 다운로드하고, 그것에 대한 수정을 만들고, 개발 팀에게 diff 형식으로 그것을 보낼 수 있습니다. diff를 사용하여, 개발 팀은 패치를 적용하기 전에 효과적으로 검토하고 외부 개발자가 접근할 수 있었던 것보다 새로운 코드 기반에 그것을 적용할 수 있습니다.

Usage examples

패치를 생성하기 위해, 쉘에서 다음 명령을 실행할 수 있습니다:

$ diff -u oldFile newFile > mods.diff  # -u tells diff to output unified diff format

패치를 적용하기 위해, 쉘에서 다음 명령을 실행할 수 있습니다:

$ patch < mods.diff

이것은 mods.diff에 설명된 지정된 파일에 변경 사항을 적용하도록 패치에 지시합니다. 하위디렉토리에 있는 파일에 대한 패치는 추가 -pnumber 옵션을 요구하며, 여기서 number는 소스 트리의 기본 디렉토리가 diff에 포함되어 있으면 1이고, 그렇지 않으면 0입니다.

패치는 '-R' 옵션과 함께, 실행-취소되거나, 되돌려질 수 있습니다:

$ patch -R < mods.diff

파일이 diff가 생성된 버전과 동일하지 않은 경우에서, 패치가 완전히 적용되지 않을 것입니다. 예를 들어, 텍스트 행이 시작 부분에 삽입되면, 패치에서 참조되는 행 번호가 올바르지 않을 것입니다. 패치는 패치될 텍스트를 재배치하기 위해 근처 줄을 살펴봄으로써 이것으로부터 복구할 수 있습니다. 컨텍스트의 줄 (컨텍스트 및 통합 diff에 대해)이 변경될 때도 복구될 것입니다; 이것은 fuzz로 설명됩니다.

Ports of patch

원래 유닉스와 유닉스-계열 시스템에 대해 작성된, 패치는 윈도우와 다른 여러 플랫폼에도 이식되었습니다. 패치의 윈도우 포트는 GnuWin32UnxUtils에서 제공합니다.

patch 명령은 역시 MSX-DOS 버전 2에 대해 ASCIIMSX-DOS2 도구의 일부이기도 합니다.[6]

See also

References

  1. ^ Larry Wall (May 24, 1985). "patch version 1.3". Google.com at mod.sources.
  2. ^ "Patch - Free Software Directory". Free Software Directory. Free Software Foundation. 2010-05-01. Retrieved 2016-05-25.
  3. ^ http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/ Archived 2017-06-07 at the Wayback Machine OpenBSD patch source
  4. ^ https://sourceforge.net/projects/schilytools/files/ A version of patch exists in the Schily tools collection
  5. ^ A version of patch is maintained by IBM, Oracle and the Open Software Foundation
  6. ^ MSX-DOS2 Tools User's Manual by ASCII Corporation

External links