Патч (Unix) - Patch (Unix)
Скриншот с использованием патча. | |
Оригинальный автор (ы) | Ларри Уолл |
---|---|
Разработчики) | Пол Эггерт, Уэйн Дэвисон, Дэвид Маккензи, Андреас Грюнбахер |
изначальный выпуск | 24 мая 1985 г. |
Репозиторий | |
Операционная система | Unix и Unix-подобный, MSX-DOS, Майкрософт Виндоус |
Тип | Команда |
Интернет сайт | саванна |
Компьютерный инструмент пластырь это 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]
Смотрите также
- Патч (вычисления)
- Одеяло (программное обеспечение)
- rsync
- xdelta
- Список команд Unix
- Утилита IBM Mainframe IEBUPDTE программа исправлений для мэйнфреймов, созданная около 20 лет назад (около 1964 г.).
Рекомендации
- ^ Ларри Уолл (24 мая 1985 г.). "патч версии 1.3". Google.com на mod.sources.
- ^ http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/ В архиве 2017-06-07 в Wayback Machine Источник патча OpenBSD
- ^ https://sourceforge.net/projects/schilytools/files/ Версия патча существует в коллекции инструментов Schily.
- ^ Версия патча поддерживается IBM, Oracle и Open Software Foundation.
- ^ «Патч - Каталог бесплатного программного обеспечения». Каталог бесплатных программ. Фонд свободного программного обеспечения. 2010-05-01. Получено 2016-05-25.
- ^ Руководство пользователя MSX-DOS2 Tools от ASCII Corporation
внешняя ссылка
- Единая спецификация UNIX, Выпуск 7 из Открытая группа - Справочник по командам и утилитам,
- GNU Diffutils (включает diff и patch); Документация
- Инструменты GNU для Win32 - Порт инструментов Win32, включая diff и patch
- Дики, Томас Э. «DIFFSTAT - строить гистограмму из diff-вывода». В архиве из оригинала 2020-01-22. Получено 2020-05-01