Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Заплатка компьютерного инструмента - это программа Unix, которая обновляет текстовые файлы в соответствии с инструкциями, содержащимися в отдельном файле, который называется файлом исправления . Файл патча (также для краткости называемый патчем ) представляет собой текстовый файл, который состоит из списка различий и создается путем запуска связанной программы сравнения с исходным и обновленным файлом в качестве аргументов. Обновление файлов с помощью патча часто называют применением патча или просто исправлением файлов.

История [ править ]

Первоначальная программа исправления была написана Ларри Уоллом (который впоследствии создал язык программирования Perl ) и размещен в mod.sources [1] (который позже стал comp.sources.unix ) в мае 1985 года. Вариант программы (но не единственный) [2] [3] [4] является частью проекта GNU [5] и поддерживается FSF .

Контекст использования [ править ]

Патч, разработанный программистом для других программистов, часто использовался для обновления исходного кода до более новой версии. Из-за этого многие люди стали связывать исправления с исходным кодом, тогда как на самом деле исправления можно применять к любому тексту. В исправленных файлах не накапливается ненужный текст, что некоторые люди воспринимают, исходя из английского значения этого слова; patch так же способен удалять текст, как и добавлять его.

Описанные здесь исправления не следует путать с двоичными исправлениями , которые, хотя могут быть концептуально похожими, распространяются для обновления двоичных файлов, составляющих программу, до новой версии.

Патчи в разработке программного обеспечения [ править ]

Файлы diff, которые служат входными данными для исправления, представляют собой читаемые текстовые файлы, что означает, что они могут быть легко просмотрены или изменены людьми перед использованием.

В дополнение к программе " diff ", diff также может создаваться другими программами, такими как Subversion , CVS , RCS , Mercurial и Git .

Патчи были важнейшим компонентом многих систем управления версиями, включая CVS .

Расширенные различия [ править ]

При использовании более продвинутых различий патчи могут применяться даже к файлам, которые были изменены за это время, при условии, что эти модификации не мешают патчу. Это достигается за счет использования « контекстных различий » и « унифицированных различий » (также известных как «унидиффы»), которые окружают каждое изменение контекстом , который представляет собой текст непосредственно перед и после измененной части. Патч может затем использовать этот контекст, чтобы найти область, которую нужно исправить, даже если она была смещена изменениями ранее в файле, используя номера строк в различиях в качестве отправной точки. Из-за этого свойства контекст и унифицированные различия являются предпочтительной формой исправлений для отправки во многие программные проекты.

Вышеупомянутые функции делают diff и patch особенно популярными для обмена модификациями программного обеспечения с открытым исходным кодом . Сторонние наблюдатели могут загрузить последний общедоступный исходный код, внести в него изменения и отправить их в форме сравнения команде разработчиков. Используя различия, команда разработчиков имеет возможность эффективно проверять исправления перед их применением и может применять их к более новой кодовой базе, чем та, к которой имел доступ внешний разработчик.

Примеры использования [ править ]

Чтобы создать патч, можно запустить в оболочке следующую команду:

$ diff -u oldFile newFile> mods.diff # -u указывает diff выводить унифицированный формат diff

Чтобы применить патч, можно запустить в оболочке следующую команду:

$ patch <mods.diff

Это говорит патчу применить изменения к указанным файлам, описанным в mods.diff . Для исправлений файлов в подкаталогах требуется дополнительная опция -p number , где номер равен 1, если базовый каталог исходного дерева включен в diff, и 0 в противном случае.

Патчи можно отменить или отменить с помощью опции ' -R ':

$ patch -R <mods.diff

В некоторых случаях, когда файл не идентичен версии, для которой было создано сравнение, исправление не может быть применено чисто. Например, если строки текста вставлены в начало, номера строк, упомянутые в патче, будут неправильными. patch может исправить это, посмотрев на соседние строки, чтобы переместить исправляемый текст. Он также восстановится при изменении строк контекста (для контекста и унифицированных различий); это описывается как пух .

Порты патча [ править ]

Первоначально написанный для Unix и Unix-подобных систем, патч также был перенесен на Windows и многие другие платформы. Порты патча для Windows предоставляются GnuWin32 и UnxUtils .

patchКоманда также является частью ASCII «S MSX-DOS2 Инструменты для MSX-DOS версии 2. [6]

См. Также [ править ]

  • Патч (вычисления)
  • Одеяло (программное обеспечение)
  • rsync
  • xdelta
  • Список команд Unix
  • Утилита IBM Mainframe IEBUPDTE - программа исправлений для мэйнфреймов, созданная примерно 20 годами ранее (около 1964 года).

Ссылки [ править ]

  1. Ларри Уолл (24 мая 1985 г.). «патч версии 1.3» . Google.com на mod.sources.
  2. ^ http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/ Архивировано 7 июня 2017 г. висточнике патча OpenBSD Wayback Machine
  3. ^ https://sourceforge.net/projects/schilytools/files/ Версия патча существует в коллекции инструментов Schily.
  4. ^ Версия патча поддерживается IBM, Oracle и Open Software Foundation.
  5. ^ «Патч - Каталог свободного программного обеспечения» . Каталог бесплатного программного обеспечения . Фонд свободного программного обеспечения. 2010-05-01 . Проверено 25 мая 2016 .
  6. ^ Руководство пользователя MSX-DOS2 Tools от ASCII Corporation

Внешние ссылки [ править ]

  • patch - Справочник по командам и утилитам, спецификация Single UNIX , выпуск 7 от The Open Group
  • GNU Diffutils (включает diff и patch); Документация
  • Инструменты GNU для Win32  - перенос инструментов Win32, включая diff и patch
  • Дики, Томас Э. «DIFFSTAT - сделать гистограмму из вывода diff» . Архивировано 22 января 2020 года . Источник 2020-05-01