патч (Unix) - patch (Unix)

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

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

Содержание
  • 1 История
  • 2 Контекст использования
  • 3 Исправления в разработке программного обеспечения
    • 3.1 Расширенные различия
  • 4 Примеры использования
  • 5 Порты исправлений
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
История

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

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

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

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

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

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

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

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

Advanced diffs

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

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

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

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

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

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

$ patch < mods.diff

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

Исправления можно отменить или отменить с помощью параметра '-R':

$ patch -R < mods.diff

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

Порты патча

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

A patchтакже является частью инструментов MSX-DOS2 ASCII для MSX- DOS версия 2.

См. Также
Ссылки
Внешние ссылки
В Wikibook Руководстве по Unix есть страница тема: Commands
Последняя правка сделана 2021-06-01 04:47:50
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте