Патч (Unix) - Patch (Unix)

пластырь
Скриншот использования патча.
Скриншот с использованием патча.
Оригинальный автор (ы)Ларри Уолл
Разработчики)Пол Эггерт, Уэйн Дэвисон, Дэвид Маккензи, Андреас Грюнбахер
изначальный выпуск24 мая 1985 г.; 35 лет назад (1985-05-24)
Репозиторий Отредактируйте это в Викиданных
Операционная системаUnix и Unix-подобный, MSX-DOS, Майкрософт Виндоус
ТипКоманда
Интернет сайтсаванна.gnu.org/ проекты/пластырь/ Отредактируйте это в Викиданных

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

История

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

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

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

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

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

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

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

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

Расширенные различия

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

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

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

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

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

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

$ патч 

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

Патчи можно отменить или отменить с помощью символа '' вариант:

$ патч -R 

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

Порты патча

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

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

Смотрите также

Рекомендации

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

внешняя ссылка