патч (Unix)
Оригинальный автор(ы) | Ларри Уолл |
---|---|
Разработчик(и) | Пол Эггерт, Уэйн Дэвисон, Дэвид МакКензи, Андреас Грюнбахер |
Первоначальный выпуск | 24 мая 1985 г |
Репозиторий | |
Операционная система | Unix и Unix-подобные , Plan 9 , MSX-DOS , Microsoft Windows |
Платформа | Кросс-платформенный |
Тип | Команда |
Компьютерный патч — это Unix программа , которая обновляет текстовые файлы в соответствии с инструкциями, содержащимися в отдельном файле, называемом файлом исправления . Файл исправления (сокращенно также называемый патчем ) представляет собой текстовый файл, который состоит из списка различий и создается путем запуска соответствующей программы сравнения с исходным и обновленным файлом в качестве аргументов. Обновление файлов с помощью исправления часто называют применением исправления или просто исправлением файлов.
История
[ редактировать ]Оригинальная программа исправлений была написана Ларри Уоллом (который впоследствии создал Perl язык программирования ) и размещена на mod.sources
[1] (который впоследствии стал comp.sources.unix
) в мае 1985 года.
патч был добавлен в XPG4, который позже стал POSIX . [2] Код Уолла остается основой программ «исправлений», предоставляемых в OpenBSD . [3] FreeBSD , [4] и шилитулс. [5] [ сомнительно – обсудить ] Сообщается, что Open Software Foundation , которая объединилась с The Open Group , поддерживала производную версию. [ сомнительно – обсудить ]
Проект GNU / FSF поддерживает свой патч, созданный на основе версии Ларри Уолла. Репозиторий отличается от репозитория GNU diffutils, но документация управляется вместе. [6]
Контекст использования
[ редактировать ]Патч, разработанный программистом для других программистов, часто использовался для обновления исходного кода до более новой версии. Из-за этого многие люди стали ассоциировать патчи с исходным кодом, тогда как на самом деле патчи можно применять к любому тексту. Пропатченные файлы не накапливают ненужный текст, что некоторые люди воспринимают исходя из английского значения этого слова; Патч способен как удалять текст, так и добавлять его.
Описанные здесь патчи не следует путать с двоичными патчами , которые, хотя и могут быть концептуально схожи, распространяются для обновления бинарных файлов, составляющих программу, до новой версии.
Патчи в разработке программного обеспечения
[ редактировать ]Файлы различий, которые служат входными данными для исправления, представляют собой читаемые текстовые файлы, а это означает, что люди могут легко просмотреть или изменить их перед использованием.
Помимо программы « diff », различия также могут создаваться другими программами, такими как Subversion , CVS , RCS , Mercurial и Git .
Патчи были важнейшим компонентом многих систем контроля версий , включая CVS .
Расширенные различия
[ редактировать ]При использовании более сложных различий исправления можно применять даже к файлам, которые были изменены за это время, при условии, что эти изменения не мешают работе исправления. Это достигается за счет использования « контекстных различий » и « унифицированных различий » (также известных как «unidiffs»), которые окружают каждое изменение контекстом , который представляет собой текст непосредственно до и после измененной части. Затем Patch может использовать этот контекст для поиска области, подлежащей исправлению, даже если она была смещена изменениями ранее в файле, используя номера строк в файлах различий в качестве отправной точки. Из-за этого свойства контекстные и унифицированные различия являются предпочтительной формой исправлений для отправки во многие программные проекты.
Вышеупомянутые функции делают diff и patch особенно популярными для обмена модификациями программного обеспечения с открытым исходным кодом . Посторонние могут загрузить новейший общедоступный исходный код, внести в него изменения и отправить их в форме различий команде разработчиков. Используя различия, команда разработчиков имеет возможность эффективно проверять исправления перед их применением и применять их к более новой базе кода, чем та, к которой имел доступ внешний разработчик.
Примеры использования
[ редактировать ]Чтобы создать патч, можно запустить в оболочке следующую команду:
$ diff -u oldFile newFile > mods.diff # -u tells diff to output unified diff format
Чтобы применить патч, можно запустить в оболочке следующую команду:
$ patch < mods.diff
Это указывает патчу применить изменения к указанным файлам, описанным в разделе mods.diff
. Патчи к файлам в подкаталогах требуют дополнительных -pnumber
опция, где число равно 1, если базовый каталог исходного дерева включен в diff, и 0 в противном случае.
Патчи можно отменить или обратить вспять с помощью кнопки ' -R
' вариант:
$ patch -R < mods.diff
В некоторых случаях, когда файл не идентичен версии, для которой был создан файл различий, исправление невозможно будет применить без ошибок. Например, если в начале вставлены строки текста, номера строк, указанные в патче, будут неверными. patch может исправить это, просматривая близлежащие строки, чтобы переместить текст, который нужно исправить. строк контекста Он также будет восстанавливаться при изменении (для контекста и унифицированных различий); это описывается как фузз .
Порты патча
[ редактировать ]Первоначально написанный для Unix и Unix-подобных систем, патч также был портирован на Windows и многие другие платформы. Порты патчей для Windows предоставляются GnuWin32 и UnxUtils .
А patch
Команда также является частью ASCII инструментов MSX -DOS2 для MSX-DOS версии 2. [7]
См. также
[ редактировать ]- Патч (компьютерный)
- Квилт (программное обеспечение)
- rsync
- xdelta
- Список команд Unix
- Утилита IBM для мэйнфреймов IEBUPDTE — программа исправлений для мэйнфреймов, созданная примерно 20 лет назад (около 1964 г.).
Ссылки
[ редактировать ]- ^ Уолл, Ларри (8 мая 1985 г.). «патч версии 1.3» . Группа новостей : mod.sources . Архивировано из оригинала 4 апреля 2023 г. Проверено 14 июля 2024 г.
- ^ Единая спецификация UNIX , версия 4 от Open Group. – Справочник по оболочке и утилитам,
- ^ http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/patch/. Архивировано 7 июня 2017 г. в Wayback Machine. источнике исправления OpenBSD
- ^ Единая спецификация UNIX , версия 4 от Open Group. – Справочник по оболочке и утилитам,
- ^ «Шилитулс» .
- ^ «Patch.c\SRC — patch.git — патч GNU» .
- ^ Руководство пользователя инструментов MSX-DOS2 от ASCII Corporation
Внешние ссылки
[ редактировать ]- GNU Diffutils (включая различия и исправления); Документация
- Инструменты GNU для Win32 — порт инструментов Win32, включая diff и patch.
- Дики, Томас Э. «DIFFSTAT – построить гистограмму на основе diff-выхода» . Архивировано из оригинала 22 января 2020 г. Проверено 1 мая 2020 г.