Патч файл. Применить патч из файла с расширением ".patch" или ".diff". Лучшие операционные системы Windows

( 2007-02-05 )

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

В этой статье используются без объяснения некоторые базовые команды Linux, такие как смена смена директории, копирование файлов и редактирование текстовых файлов.

Использование diff для создания простого патча

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

$ diff originalfile updatedfile

Конечно, надо заменить originalfile и updatedfile соответствующими именами файлов. В результате должно получиться что-то вроде этого:

1c1 < These are a few words. \ No newline at end of file --- > These still are just a few words. \ No newline at end of file

Обратите внимание: Что бы продемонстрировать создание простого патча, я использовал оригинальный файл, содержащий строку "These are a few words.", и измененный файл, содержащий строку "These still are just a few words." Вы можете создать эти файлы сами, если хотите запустить команду из статьи и получить тот же результат.

1c1 показывает номер строки и то, что с ней надо сделать. Обратите внимание, что может быть сразу несколько строк(например, 12,15, что означает со строки 12 до строки 15). Символ "c" означает, что патч заменит эту строку. Есть еще два других символа: "a" и "d". Они означают "добавить"(add) и "удалить"(delete) соответственно. Таким образом, синтаксис следующий: (номер строки или диапазон строк)(c,a или d)(номер строки или диапазон строк), хотя когда используются "a" или "d", одна из частей (номер строки или диапазон строк) может содержать только номер одной строки.

    Когда используется "c", номера строк слева - это строки в оригинальном файле, которые надо заменить строками, находящимися в патче, а номера строк справа - это строки, которые должны быть в пропатченном файле.

    Когда используется "a", номер слева может быть только номером одной строки, который показывает, где надо добавить строку в пропатченном файле, а номера строк справа - это строки, которые должны быть в пропатченном файле.

    Когда используется "d", номера строк слева - это строки, которые надо удалить, чтобы получить пропатченную версию файла, а номер строки справа может быть только номером одной строки, который показывает где будут строки в пропатченном файле, если они не будут удалены. Вы можете подумать, что последний номер не нужен, но не забывайте, что патч можно применить для восстаноления исходного файла. Это будет объяснено позже.

Знак "<" означает, что патч должен удалить символы после этого знака, а знак ">" означает, что символы после этого знака надо добавить. Когда надо заменить строки ("c" между номерами строк), вы увидите оба знака: и "<", и ">". Когда надо добавить строку ("a" между номерами строк), вы увидите только знак ">", а когда надо удалить строку ("d" между номерами строк), вы увидите только знак "<".

Строка "\ No newline at end of file" появилась из-за того, что я не не нажал enter после того как набрал слова. Считается хорошим тоном заканчивать текстовый файл пустой строкой. Некоторым программам она необходима для работы. Поэтому эта строка появилась после работы команды diff. Добавим пустые строки в конец файлов, и получим более короткий вывод команды diff:

1c1 < These are a few words. --- > These still are just a few words.

Как вы возможно заметили, я не объяснил что означают 3 знака "-". Они означают конец строк, которые надо заменить и начало строк на которые надо заменить. Разделение старых и новых строк. Вы увидите это знак только при замене ("c" между номерами строк).

Если мы хотим создать патч, мы должны поместить вывод команды diff в файл. Конечно это можно сделать, скопировав его из консоли и вставив в вашем любимом текстовом редакторе, а затем сохранив этот файл, но есть способ проще. Мы можем с помощью bash направить вывод команды diff в текстовый файл:

$ diff originalfile updatedfile > patchfile.patch

Опять же не забудьте заменить originalfile и updatedfile на соответствующие имена файлов. Вы наверное знаете, что опция bash ">" работает со всеми командами. Это очень полезное свойство.

Применение простого патча, который мы создали

Мы можем использовать патч, который только что создали, чтобы получить из оригинального файла обновленный. Для этого надо скопировать оригинальный файл и патч в одно и тоже место. И затем применить патч:

$ patch originalfile -i patchfile.patch -o updatedfile

Естественно, и здесь надо изменить имена файлов на необходимые. Если все прошло хорошо, должен получиться файл, идентичный обновленному. Вы можете убедиться в этом, используя команду diff с опцией "-s":

$ diff -s updatedfile /updatefile

Замените текст между [ и ] на путь к оригинальному файлу. Например, если обновленный файл, который вы использовали при создании патча находится в родительской директории вышай текущей, то "" надо заменить на ".." (bash понимает это как родительскую директорию от текущей). И конечно надо изменить имена файлов на верные.

Поздравляю! Если diff сообщила, что файлы идентичные, вы только что успешно создали и применили патч! Однако формат патча, который мы только что использовали не единственный. В следующей главе мы рассмотрим другой формат патча.

Контекстный патч

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

$ diff -c originalfile updatedfile

Результат получится следующий:

*** originalfile 2007-02-03 22:15:48.000000000 0100 --- updatedfile 2007-02-03 22:15:56.000000000 0100 *************** *** 1 **** ! These are a few words. --- 1 ---- ! These still are just a few words.

Как вы видите, здесь включено имя файла. Это значит, что нам не придется набирать его во время применения патча. Далее идет дата и время последнего изменения файла. строка с 15 "*" показывает начало изменений. Они показывают, что надо сделать со следующим блоком текста. Два номера 1 - это номера строк (здесь тоже может быть сразу несколько строк), а "!" означает, что строки надо заменить. Строка с "!" перед тремя "-" должна быть заменена второй строкой с "!", которая идет после трех "-"(конечно сам! не будет включен; это синтаксис контекстного формата). Как вы можете видеть, здесь нет знаков "c", "a" и "d".Действие, которое нужно сделать, определяется символом в начале строки. "!" означает замену. Другие символы - "+", "-" и " " (пробел). "+" означает добавление, "-" означает удаление, а " " означает ничего не делать: патч использует его чтобы убедиться, что он изменяет правильную часть файла.

Применять этот патч легче: при тех же условиях, что и для предыдущего патча (записываем вывод команды diff в файл, затем копируем патч и оригинал в одно и то же место), надо выполнить следующую команду:

$ patch -i patchfile.patch -o updatedfile

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

Получение различий между несколькими файлами

Наиболее простой способ получить различия между несколькими файлами - это положить их в одну директорию и выполнить команду diff для этой директории целиком. Вы можете просто передать команде diff в качестве параметров имена директорий вместо имен файлов:

$ diff originaldirectory/ updateddirectory/

Обратите внимание: Если в директория есть поддиректории, то надо использовать опцию "-r".

В результате должно получится что-то вроде этого:

Diff originaldirectory/file1 updateddirectory/file1
1c1 < This is the first original file. --- > This is the first updated file. diff originaldirectory/file2 updateddirectory/file2 1c1 < This is the second original file. --- > This is the second updated file. 14d13 < We"re going to add something in this file and to delete this line. 26a26 > This is line has been added to this updated file.

Обратите внимание: Я создал несколько несколько файлов для примера. Вы можете скачать архив, содержащий эти файлы: .

Как вы видите, нормальный формат содержит только имена файлов и изменяемые строки.

Теперь используем контекстный формат:

Diff -c originaldirectory/file1 updateddirectory/file1 *** originaldirectory/file1 2007-02-04 16:17:57.000000000 +0100 --- updateddirectory/file1 2007-02-04 16:18:33.000000000 +0100 *************** *** 1 **** ! This is the first original file. --- 1 ---- ! This is the first updated file. diff -c originaldirectory/file2 updateddirectory/file2 *** originaldirectory/file2 2007-02-04 16:19:37.000000000 +0100 --- updateddirectory/file2 2007-02-04 16:20:08.000000000 +0100 *************** *** 1,4 **** ! This is the second original file. S O --- 1,4 ---- ! This is the second updated file. S O *************** *** 11,17 **** C E - We"re going to add something in this file and to delete this line. S O --- 11,16 ---- *************** *** 24,28 **** --- 23,28 ---- C E + This is line has been added to this updated file. Something will be added above this line.

Первая вещь, которую вы должны были заметить - это увеличение размера; контекстный формат содержит больше информации, чем нормальный. Этого не было заметно в первом премере, так как не было контекста. Однако теперь контекст есть, и за счет него размер патча увеличился. Кроме того, вы наверное заметили, что имя файла повторяется дважды. Это возможно сделано для того, чтобы легче было понять когда начался патч следующего файла или для обеспечения лучшего восстановления.

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

Создать патч было легко, но использование директорий ставит следующую проблему: бедут ли патч изменять только соответствующие файлы в текущей директории, или будет использовать соответствующий путь, указанный в файле? Чтобы узнать это, смотрите следующую главу!

Применение патча к нескольким файлам

В предыдущей главе мы создали патч для нескольких файлов, воспользовавшись следующей командой:

$ diff -c originaldirectory/ updateddirectory/ > patchfile.patch

Обратите внимание: мы используем контекстный формат патча, так как это является хорошим тоном.

Теперь надо использовать полученный патч. Скопируйте оригинальную директорию и патч куда-нибудь и примените следующую команду:

$ patch -i patchfile.patch

Однако возникает ошибка, что невозможно найти файлы для патча. Команда пытается найти файл file1 в текущей директории (по умолчанию патч убирает все пути перед именем файла). И конено файла нет, так как мы пытаемся обновить файлы в директории originaldirectory. Поэтому мы должны заставить патч использовать полный путь. Это делается следующим образом:

$ patch -p0 -i patchfile.patch

Обратите внимание: Вы может подумать, что можно просто переместиться в originaldirectory и запустить патч. Но это не так! Так делать не стоит: если в в патче содержатся поддиректории, то он будет искать их в рабочей директории, и не найдет, или найдет не те. Используйте опцию "-p", чтобы заставить патч искать файлы в поддиректориях.

Опция "-p" говорит патчу сколько слэшей (включая то, что перед ними, обычно директории) нужно вырезать перед именем файла (обратите внимание, что при использовании опции "-p0", патч будет будет искать файлы и в originaldirectory и в updateddirectory).Когда мы устанавливаем 0, это означает что не надо удалять пути, но можно поставить 1, чтобы удалить первый слэш, или 2, чтобы удалить два слэша, и т.д. Это может быть полезно, если если в патче используется структура каталогов, отличная от вашей. Например, если в патче используется следующая структура каталогов:

(...) *** /home/username/sources/program/originaldirectory/file1 2007-02-04 16:17:57.000000000 +0100 --- /home/username/sources/program/updateddirectory/file1 2007-02-04 16:18:33.000000000 +0100 (...)

Вам надо просто посчитать количество слэшей (/ (1) home/ (2) username/ (3) sources/ (4) program/ (5)) и передать это число в опцие "-p". Если вы используете "-p5", то патч будет искать и в originaldirectory/file1 и в updateddirectory/file1. Не забудьте, что патч рассматривает два слэша друг за другом (как в /home/username//sources) как один. Это вызвано тем, что иногда патч скрипты добавляют дополнительный слэш между директориями.

Восстановление оригинального файла из пропатченного

Иногда возникает необходимость восстановить оригинальный файл из пропатченного. Например, если в нем содержится ошибка. Для этого надо использовать опцию "-R":

$ patch -p0 -R -i patchfile.patch

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

Унифицированный формат

Есть еще один формат вывода различий командой diff: унифицированный формат. Он более компактен, так как содержит уменьшенные контекстные строки. Однако он поддерживается только GNU diff и patch. Если вы его используете, вы должны быть уверены, что у пользователей, для которых патч предназначен, GNU patch. Linux допускает использование этого формата.

Унифицированный формат похож на контекстный, но это не одно и тоже. Патч в унифицированном формате можно создать так:

$ diff -u originaldirectory/ updateddirectory/

Результат будет седующий:

Diff -u originaldirectory/file1 updateddirectory/file1 --- originaldirectory/file1 2007-02-04 16:17:57.000000000 +0100 +++ updateddirectory/file1 2007-02-04 16:18:33.000000000 +0100 @@ -1 +1 @@ -This is the first original file. +This is the first updated file. diff -u originaldirectory/file2 updateddirectory/file2 --- originaldirectory/file2 2007-02-04 16:19:37.000000000 +0100 +++ updateddirectory/file2 2007-02-04 16:20:08.000000000 +0100 @@ -1,4 +1,4 @@ -This is the second original file. +This is the second updated file. S O @@ -11,7 +11,6 @@
C E -We"re going to add something in this file and to delete this line. S O @@ -24,5 +23,6 @@ C E +This is line has been added to this updated file. Something will be added above this line.

Как вы видите, номера строк заключены между "@". Кроме того, есть дополнительный пробел после "+" или "-". Это экономит несколько байт. Другое различие: в унифицированном формате нет специального знака для замены. Он просто удаляет старые строки ("-") и добавляет новые ("+"). Разница между этими действиями заключается в том, что при замене используется один и тот же номер строки, а при удалении и добавлении разные.

Сравнение форматов

Читая про три разных формата, вы вероятно задумались: а какой же выбрать? Вот небольшое сравнение:

    Нормальный формат наиболее совместимый. Любые команды похожие на diff/patch должны понять его. Его недостаток - это отсутствие контекста.

    Контекстный формат широко распространен, но не все команды его понимают. Его преимущество в наличии контекста.

    Унифицированный формат тоже включает контекст, и при этом более компактем. Но его поддерживает только GNU diff and patch.

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

Изменение количества контекстных строк

Можно заставить команду diff включать в патч сеньшее количество строк контекста, чем должно быть. В больших патчах это может сильон уменьшить его размер. Однако если уменьшить количество контекстных строк, это может привести в неработоспособности патча. Цитати из справки GNU diff: "Для большинства операций в патче должно быть хотя бы две строки контекста."

Указать количество контестных строк можно несколькими способами:

    Если вы хотит использовать контекстный формат, вы можете вы можете совместить эти указания, добавив в опцию "-C". Пример:

    $ diff -C 2 originaldirectory/ updateddirectory/

    Предыдущая команда будет использовать контекстный формат с двумя контекстными строками.

    Если вы хотит использовать контекстный формат, вы можете вы можете совместить эти указания, добавив в опцию "-U". Пример:

    $ diff -U 2 originaldirectory/ updateddirectory/

    Предыдущая команда будет использовать унифицированный формат с двумя контекстными строками.

    Если не указывать какой формат вы хотите использовать, то команда будет выглядеть примерно так:

    $ diff -2 originaldirectory/ updateddirectory/

    Однако это будет работать только если вы определите формат. Вам необходимо использовать эту опцию или с "-c" или с "u".

Заключительные слова

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

Как открыть PATCH файлы

Если появилась ситуация, в которой Вы не можете открыть файл PATCH на своем компьютере - причин может быть несколько. Первой и одновременно самой важной (встречается чаще всего) является отсутствие соответствующей аппликации обслуживающей PATCH среди установленных на Вашем компьютере.

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

В дальнейшей части этой страницы Вы найдете другие возможные причины, вызывающие проблемы с файлами PATCH.

Программа(ы), умеющие открыть файл .PATCH

Windows

Возможные проблемы с файлами в формате PATCH

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

  • Повреждение открываемого файла PATCH.
  • Ошибочные связи файла PATCH в записях реестра.
  • Случайное удаление описания расширения PATCH из реестра Windows
  • Некомплектная установка аппликации, обслуживающей формат PATCH
  • Открываемый файл PATCH инфицирован нежелательным, вредным программным обеспечением.
  • На компьютере слишком мало места, чтобы открыть файл PATCH.
  • Драйверы оборудования, используемого компьютером для открытия файла PATCH неактуальные.

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

Как связать файл с установленной программой?

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

Есть ли универсальный метод открытия неизвестных файлов?

Многие файлы содержат данные в виде текста или чисел. Возможно, что во время открытия неизвестных файлов (напр. PATCH) популярный в системе Windows простой редактор текста, которым является Notatnik позволит нам увидеть часть данных, закодированных в файле. Этот метод позволяет просмотреть содержимое многих файлов, однако не в такой форме, как программа, предназначенная для их обслуживания.

Резюме файла PATCH

Расширение файла PATCH имеет один тип (-ов) файла (-ов) и связано с один различными программными обеспечениями, но главным образом с Mercurial , разработанным Matt Mackall . Часто они представлены в формате Mercurial Patch File . Основную часть этих фацлов классифицируют, как Developer Files .

Файлы PATCH были обнаружены на платформах Windows, Mac и Linux. Они подходят для настольных ПК (и мобильных устройств). Рейтинг популярности файлов PATCH составляет «Низкий». Это означает, что они не часто встречаются на большинстве устройств.

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

Популярность типов файлов
Ранг Файла

Активность

Этот тип файлов по-прежнему сохранил актуальность и активно используется разработчиками и прикладными программными средствами. Хотя оригинальное программное обеспечение этого типа файлов может отодвигаться на второй план более новой версией (например. Excel 97 против Office 365), этот тип файлов по-прежнему активно поддерживается текущей версией программного обеспечения. Этот процесс взаимодействия со старой операционной системой или устаревшей версией программного обеспечения также известен как «обратная совместимость ».

Статус файла
Страница Последнее обновление


Типы файлов PATCH

Ассоциация основного файла PATCH

PATCH

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


Попробуйте универсальное средство для просмотра файлов

В дополнение к продуктам, перечисленным выше, мы предлагаем вам попробовать универсальное средство для просмотра файлов типа FileViewPro. Данное средство может открывать более 200 различных типов файлов, предоставляя функции редактирования для большинства из них.

Лицензия | | Условия |


Устранение неполадок при открытии файлов PATCH

Общие проблемы с открытием файлов PATCH

Mercurial не установлен

Дважды щелкнув по файлу PATCH вы можете увидеть системное диалоговое окно, в котором сообщается «Не удается открыть этот тип файла» . В этом случае обычно это связано с тем, что на вашем компьютере не установлено Mercurial для %%os%% . Так как ваша операционная система не знает, что делать с этим файлом, вы не сможете открыть его дважды щелкнув на него.


Совет: Если вам извстна другая программа, которая может открыть файл PATCH, вы можете попробовать открыть данный файл, выбрав это приложение из списка возможных программ.

Установлена неправильная версия Mercurial

В некоторых случаях у вас может быть более новая (или более старая) версия файла Mercurial Patch File, не поддерживаемая установленной версией приложения . При отсутствии правильной версии ПО Mercurial (или любой из других программ, перечисленных выше), может потребоваться загрузить другую версию ПО или одного из других прикладных программных средств, перечисленных выше. Такая проблема чаще всего возникает при работе в более старой версии прикладного программного средства с файлом, созданным в более новой версии , который старая версия не может распознать.


Совет: Иногда вы можете получить общее представление о версии файла PATCH, щелкнув правой кнопкой мыши на файл, а затем выбрав «Свойства» (Windows) или «Получить информацию» (Mac OSX).


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

Установить необязательные продукты - FileViewPro (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия |


Другие причины проблем с открытием файлов PATCH

Даже если на вашем компьютере уже установлено Mercurial или другое программное обеспечение, связанное с PATCH, вы все равно можете столкнуться с проблемами во время открытия файлов Mercurial Patch File. Если проблемы открытия файлов PATCH до сих пор не устранены, возможно, причина кроется в других проблемах, не позволяющих открыть эти файлы . Такие проблемы включают (представлены в порядке от наиболее до наименее распространенных):

  • Неверные ссылки на файлы PATCH в реестре Windows («телефонная книга» операционной системы Windows)
  • Случайное удаление описания файла PATCH в реестре Windows
  • Неполная или неправильная установка прикладного программного средства, связанного с форматом PATCH
  • Повреждение файла PATCH (проблемы с самим файлом Mercurial Patch File)
  • Заражение PATCH вредоносным ПО
  • Повреждены или устарели драйверы устройств оборудования, связанного с файлом PATCH
  • Отсутствие на компьютере достаточных системных ресурсов для открытия формата Mercurial Patch File

Викторина: Какой тип файла изображения является наиболее популярным форматом, используемым на веб-сайтах?

Верно!

Близко, но не совсем...

PNGs только немного более популярным, чем файлы JPEG (74,5% против 72,8% веб-сайтов, использующих их) в соответствии с данными об использовании с W3Techs.com.


Лучшие операционные системы Windows

7 (45.73%)
10 (44.56%)
8.1 (5.41%)
XP (2.79%)
8 (0.97%)

Событие дня

FLA файлы редактируемые флеш файлы проекта от компании Adobe. Большинство файлов флэш найти в Интернете, однако, сохраняются в SWF (Small Web Format) расширение файла, и они не доступны для редактирования. Для редактирования Flash-файл, доступ к исходному файлу проекта (FLA) необходимо.



Как исправить проблемы с открытием файлов PATCH

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

Например, на данном рисунке выделен файл my-file.patch , далее необходимо щелкнуть правой кнопкой мыши по этому файлу, и в меню файла выбрать опцию «сканировать с помощью AVG» . При выборе данного параметра откроется AVG Antivirus, который выполнит проверку данного файла на наличие вирусов.


Иногда ошибка может возникнуть в результате неверной установки программного обеспечения , что может быть связано с проблемой, возникшей в процессе установки. Это может помешать вашей операционной системе связать ваш файл PATCH с правильным прикладным программным средством , оказывая влияние на так называемые «ассоциации расширений файлов» .

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


Совет: Попробуйте обновить Mercurial до последней версии, чтобы убедиться, что установлены последние исправления и обновления.


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


Осторожно: Поврежденный файл может повлечь за собой возникновение сопутствующего ущерба предыдущей или уже существующей вредоносной программы на вашем ПК, поэтому очень важно, чтобы на вашем компьютере постоянно работал обновленный антивирус.


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

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


Совет: Если при попытке открыть файл PATCH вы получаете сообщение об ошибке, связанной с.SYS file , проблема, вероятно, может быть связана с поврежденными или устаревшими драйверами устройств , которые необходимо обновить. Данный процесс можно облегчить посредством использования программного обеспечения для обновления драйверов, такого как DriverDoc .


Если шаги не решили проблему , и у вас все еще возникают проблемы с открытием файлов PATCH, это может быть связано с отсутствием доступных системных ресурсов . Для некоторых версий файлов PATCH могут потребоваться значительный объем ресурсов (например, память/ОЗУ, вычислительная мощность) для надлежащего открытия на вашем компьютере. Такая проблема встречается достаточно часто, если вы используете достаточно старое компьютерное аппаратное обеспечение и одновременно гораздо более новую операционную систему.

Такая проблема может возникнуть, когда компьютеру трудно справиться с заданием, так как операционная система (и другие службы, работающие в фоновом режиме) могут потреблять слишком много ресурсов для открытия файла PATCH . Попробуйте закрыть все приложения на вашем ПК, прежде чем открывать Mercurial Patch File. Освободив все доступные ресурсы на вашем компьютере вы обеспечите налучшие условия для попытки открыть файл PATCH.


Если вы выполнили все описанные выше шаги , а ваш файл PATCH по-прежнему не открывается, может потребоваться выполнить обновление оборудования . В большинстве случаев, даже при использовании старых версий оборудования, вычислительная мощность может по-прежнему быть более чем достаточной для большинства пользовательских приложений (если вы не выполняете много ресурсоемкой работы процессора, такой как 3D-рендеринг, финансовое/научное моделирование или интенсивная мультимедийная работа). Таким образом, вполне вероятно, что вашему компьютеру не хватает необходимого объема памяти (чаще называемой «ОЗУ», или оперативной памятью) для выполнения задачи открытия файла.

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


Установить необязательные продукты - FileViewPro (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия |


Если файл.PATCH известен Вашей системе, то открыть его можно двойным нажатием мышкой или клавишей ENTER. Эта операция запустит ассоциируемые с файлом.PATCH аппликации, установленные в системе. Если система встречает файл впервые и отсутствуют соответствующие ассоциации, то акция закончится предложением системы, найти соответствующее программное обеспечение в компьютере либо сети интернет.

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

Программы, которые откроют файл.PATCH

Ручное редактирование Реестра Windows

Если наша система не справляется с расширением.PATCH и подвели все автоматические и полуавтоматические методы обучения его этому искусству, остается ручное редактирование реестра Windows. Этот реестр хранит всю информацию, касающуюся рабоы нашей операционной системы, в том числе соединения расширений файлов с программами для их обслуживания. Команда REGEDIT вписанная в окне „поиск программ и файлов” или „запустить в случае старших версий операционной системы, предоставляет нам доступ к реестру нашей операционной системы. Все операции, проведенные в реестре (даже не очень сложные, касающееся расширения файла.PATCH) имеют значительное влияние на работу нашей системы, поэтому прежде чем проводить какие-либо модификации следует убедится, что сделана копия актуального реестра. Интересующий нас раздел - это ключ HKEY_CLASSES_ROOT . Следующая инструкция показывает, шаг за шагом, как модифицировать реестр, а конкретно запись в реестре, содержащую информацию о файле.PATCH.

Шаг за шагом

  • Нажмите кнопку “start”
  • В окне „найти программы и файлы” (в старших версиях системы Windows это окно „Запустить”) впишите команду „regedit” а затем утвердите операцию клавишей „ENTER”. Эта операция запустит системный редактор реестра. Этот инструмент позволит не только просмотреть существующие записи, но также провести их модификацию, добавление или удаление вручную. В связи с тем, что реестр системы Windows ключевой для ее работы, все операции, проводящиеся на ней, следует выполнять рассудительно и сознательно. Неосторожное устранение или модификация несоответственного ключа может необратимо повредить операционную систему.
  • С помощью комбинации клавишей ctr+F или меню Редактирование и опции „Найти” найдите интересующее вас расширение.PATCH, вписав его в окне поисковика. Утвердите, нажав OK или с помощью клавиши ENTER.
  • Запасная копия. Чрезвычайно важным является создание запасной копии реестра, прежде чем совершить в нем какие-либо изменения. Каждое изменение имеет влияние на действие нашего компьютера. В крайних случаях ошибочная модификация реестра может привести к невозможности повторного запуска системы.
  • Интересующее Вас значение, касающееся расширения, можно вручную редактировать изменяя ключи, приписанные к найденному расширению.PATCH. В этом месте Вы можете также самостоятельно создать нужную запись с расширением а.PATCH если такое отсутствует в реестре. Все доступные варианты находятся в подручном меню (правая кнопка мышки) или в меню "Редактирование" после размещения курсора в соответствующем месте на экране.
  • После окончания редактирования записи, касающейся расширения.PATCH закройте системный реестр. Введенные изменения войдут в жизнь после повторного запуска операционной системы.

Нужно перейти в ту папку, где создавался этот файл.
Ее можно узнать, посмотрев внутрь файла любым текстовым редактором, например nano. Там первой строчкой будет указан файл, который заменяется. Ищем этот файл у себя, и копируем файл с патчем в ту папку. Затем внутри той папки выполняем команду
patch -p1

The -p option tells patch how many leading prefixes to strip. For patches created using git, -p1 is normally the right option, and is the default for git apply. If that doesn"t work, try either of the above commands with -p0 instead.

Если при этом вы получаете следущую ошибку:
bash: patch: команда не найдена
То нужно установить программу "patch". В АрхЛинкусе ее найти очень сложно - она оказывается прячется в пакете base-devel:
sudo pacman -S base-devel

Также можно сделать по-другому.
Такой способ будет необходим, если нас не устраивают пути, по которым делался патч. Например, в моём случае человек сделал патч через пути editview.newnodeajax/theme/editview.js , а я не хочу у себя создавать kbiy.. папку editview.newnodeajax для применения этого патча.
Тогда:

Сначала смотрим содержимое этого файла. Там должна быть одна или несколько шапок типа такого

Diff -U 3 -H -B -E -p -t -r -N -- editview/theme/editview.js editview.newnodeajax/theme/editview.js --- editview/theme/editview.js 2010-11-11 06:04:30.000000000 +1100 +++ editview.newnodeajax/theme/editview.js 2011-03-10 16:07:30.220180542 +1100

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

Соответственно разделяем файл на столько файлов, сколько таких шапок есть. Т.е. если у меня примерно такой файл

Diff -U 3 -H -B -E -p -t -r -N -- editview/includes/editview.views.inc editview.newnodeajax/includes/editview.views.inc --- editview/includes/editview.views.inc 2011-01-24 07:48:54.000000000 +1100 +++ editview.newnodeajax/includes/editview.views.inc 2011-03-10 16:06:43.050180542 +1100 @@ -70,40 +70,66 @@ function editview_js() { if (isset($_POST["form_build_id"]) && isset($_POST["editview_view"])) { // We are going to need to load nodes module_load_include("inc", "node", "node.pages"); - - // Build the view so all necessary classes will be defined. + + // Build the view so all necessary classes will be defined + // and so we can re-render it if necessary $view = views_get_view($_POST["editview_view"]); - $view->build(); - + $view->set_arguments(unserialize($_POST["editview_view_args"])); + //inlude input (exposed filters) and pager in case of re-render + $view->set_exposed_input(unserialize($_POST["editview_view_input"])); + $view->pager = unserialize($_POST["editview_view_pager"]); + $view->build($_POST["editview_view_display"]); + // Fast path is to get the form out of the cache. But if minimum cache // lifetimes have been specified, on post of a form all cached forms // except the posted one get invalidated. In that case we need to rebuild // the form from scratch. + $form_id = $_POST["form_id"]; $form_build_id = $_POST["form_build_id"]; $form_state = array("storage" => NULL, "submitted" => FALSE); $form = form_get_cache($form_build_id, $form_state); + $is_new_node = $form_id == "editview_node_form_new"; if (empty($form)) { - $node = node_load($_POST["editview_nid"]); - $form = drupal_retrieve_form($_POST["form_id"], $form_state, $node, $view, $_POST["editview_order"], $_POST["editview_uri"]); + if (!$is_new_node) { + $node = node_load($_POST["editview_nid"]); + } diff -U 3 -H -B -E -p -t -r -N -- editview/theme/editview.js editview.newnodeajax/theme/editview.js --- editview/theme/editview.js 2010-11-11 06:04:30.000000000 +1100 +++ editview.newnodeajax/theme/editview.js 2011-03-10 16:07:30.220180542 +1100 @@ -9,7 +9,9 @@ var Editview = Editview || { var form = this; var form_id = $("", form).val(); var node_form = form_id && form_id.match(/^editview_node_form_\d+/); + var node_form_new = form_id && form_id.match(/^editview_node_form_new/); if (node_form) { + var wrapper = $(form).parent(); var options = { url: Drupal.settings.editview.submit_url, beforeSubmit: function(form_values, form, options) { @@ -26,14 +28,12 @@ var Editview = Editview || { if (deleted && !confirm(Drupal.t("Are you sure you want to delete @name?", {"@name": name}) +"\n"+ Drupal.t("This action cannot be undone."))) { return false; } - var wrapper = $(form).parent(); wrapper.slideUp("slow"); },

То я разделяю его на два файла с такими содержимыми:
1й файл:

Diff -U 3 -H -B -E -p -t -r -N -- editview/includes/editview.views.inc editview.newnodeajax/includes/editview.views.inc --- editview/includes/editview.views.inc 2011-01-24 07:48:54.000000000 +1100 +++ editview.newnodeajax/includes/editview.views.inc 2011-03-10 16:06:43.050180542 +1100 @@ -70,40 +70,66 @@ function editview_js() { if (isset($_POST["form_build_id"]) && isset($_POST["editview_view"])) { // We are going to need to load nodes module_load_include("inc", "node", "node.pages"); - - // Build the view so all necessary classes will be defined. + + // Build the view so all necessary classes will be defined + // and so we can re-render it if necessary $view = views_get_view($_POST["editview_view"]); - $view->build(); - + $view->set_arguments(unserialize($_POST["editview_view_args"])); + //inlude input (exposed filters) and pager in case of re-render + $view->set_exposed_input(unserialize($_POST["editview_view_input"])); + $view->pager = unserialize($_POST["editview_view_pager"]); + $view->build($_POST["editview_view_display"]); + // Fast path is to get the form out of the cache. But if minimum cache // lifetimes have been specified, on post of a form all cached forms // except the posted one get invalidated. In that case we need to rebuild // the form from scratch. + $form_id = $_POST["form_id"]; $form_build_id = $_POST["form_build_id"]; $form_state = array("storage" => NULL, "submitted" => FALSE); $form = form_get_cache($form_build_id, $form_state); + $is_new_node = $form_id == "editview_node_form_new"; if (empty($form)) { - $node = node_load($_POST["editview_nid"]); - $form = drupal_retrieve_form($_POST["form_id"], $form_state, $node, $view, $_POST["editview_order"], $_POST["editview_uri"]); + if (!$is_new_node) { + $node = node_load($_POST["editview_nid"]); + }

Diff -U 3 -H -B -E -p -t -r -N -- editview/theme/editview.js editview.newnodeajax/theme/editview.js --- editview/theme/editview.js 2010-11-11 06:04:30.000000000 +1100 +++ editview.newnodeajax/theme/editview.js 2011-03-10 16:07:30.220180542 +1100 @@ -9,7 +9,9 @@ var Editview = Editview || { var form = this; var form_id = $("", form).val(); var node_form = form_id && form_id.match(/^editview_node_form_\d+/); + var node_form_new = form_id && form_id.match(/^editview_node_form_new/); if (node_form) { + var wrapper = $(form).parent(); var options = { url: Drupal.settings.editview.submit_url, beforeSubmit: function(form_values, form, options) { @@ -26,14 +28,12 @@ var Editview = Editview || { if (deleted && !confirm(Drupal.t("Are you sure you want to delete @name?", {"@name": name}) +"\n"+ Drupal.t("This action cannot be undone."))) { return false; } - var wrapper = $(form).parent(); wrapper.slideUp("slow"); },

Далее я копирую соответсвующий файл в ту папку, где находится тот файл, который указан в шапке diff (в моём случае это файлы editview.newnodeajax/includes/editview.views.inc и editview/theme/editview.js), и далее применяем такую команду

Patch originalfile -i patchfile.patch -o name.of.updatedfile

Например, в моём случае это выглядит так:

Patch editview.views.inc -i editview.newnodeajax.diff -o editview.views.patched.inc

(я файл с отделённой первой шапкой назвал editview.newnodeajax.diff)
Консоль вам должна выдать лишь одну строчку типа такого

Patching file editview.js

Это означает что всё хорошо.