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