Как пропатчить в Windows?

Учитывая (исходный) файл исправления, как проще всего применить это исправление к исходным файлам в Windows?

Инструмент с графическим интерфейсом, в котором я могу визуально сравнивать неизмененные-измененные исходные строки, был бы замечательным.


person Ashwin Nanjappa    schedule 21.08.2008    source источник


Ответы (4)


Пакет для Windows — это то, что вам нужно.

person SCdF    schedule 21.08.2008
comment
Обратите внимание, что этот патч плохо работает с UAC Vista. Вместо этого попробуйте patch.exe от Git-for-windows, который поставляется с манифестом, решающим проблему. - person Macke; 09.03.2009
comment
@Macke прав! Смотрите мой ответ, чтобы узнать, как работать с GIT! - person Nicolas Thery; 11.07.2015
comment
На самом деле @Macke имеет в виду то, что в Windows exec с именем patch.exe требует доступа администратора, и если включен UAE, он приостанавливается и запрашивает пользователя. Теперь Git-версия patch.exe включает манифест, который предотвращает необходимость повышения прав в ОАЭ. Это старая устаревшая вещь с окнами, в которой любой exe, который имеет install, patch, setup в имени, вызовет повышение прав ОАЭ, ЕСЛИ НЕ будет предоставлен манифест. Патч применяется: патч - person Shawn Cicoria; 06.05.2020

Благодаря Macke хороший способ применить файл исправления в ОС Windows — использовать Git. Насколько я понял, Git — это решение для контроля версий, такое как SVN.

Вот руководство по применению исправления:

  • Прежде всего, загрузите последнюю версию Windows Git Edition здесь: ГИТ
  • С помощью приглашения cmd измените каталог на файл исправления и файлы для исправления
  • Теперь вы можете использовать следующую командную строку:
git apply --ignore-space-change --ignore-whitespace --whitespace=nowarn file.patch

Просто не правда ли?

Спасибо, Макке.

person Nicolas Thery    schedule 08.11.2011

Не то чтобы, начиная с Git 2.3.3 (март 2015 г.), вы можете использовать git apply --unsafe-paths для использования git apply вне репозитория git.

См. коммит 5244a31 от Хунио С. Хамано (gitster)

"git apply" не очень внимательно относился к чтению, удалению, обновлению и созданию путей вне рабочего дерева (в --index/--cached) или текущего каталога (при использовании в качестве замены патча GNU).

Документация теперь включает:

--unsafe-paths:

По умолчанию патч, который влияет за пределами рабочей области (будь то рабочее дерево, контролируемое Git, или текущий рабочий каталог, когда «git apply» используется в качестве замены патча GNU), отклоняется как ошибка (или вред).

Когда git apply используется как «лучший патч GNU», пользователь может указать параметр --unsafe-paths, чтобы переопределить эту проверку безопасности.
Этот параметр не действует, когда используются --index или --cached.

Поэтому, если у вас установлен git, git apply может помочь, даже вне репозитория git.

person VonC    schedule 14.03.2015

WinMerge великолепен.

http://winmerge.org/

person Philip Reynolds    schedule 21.08.2008
comment
Winmerge отлично подходит для создания исправлений, но не для их применения. ОП спросил о том, как его применить. Было бы потрясающей новой функцией, если бы WinMerge мог применять патч, а затем отображать внесенные изменения. - person Warren P; 29.10.2011
comment
Найденные в справке WinMerge исправления нельзя применить с помощью WinMerge. Однако вы можете применять исправления с помощью инструмента исправления из проекта GnuWin32, поскольку WinMerge создает файлы исправлений, совместимые с GNU/diffutils. Также см. предыдущий вопрос. - person Nicolas Thery; 07.11.2011
comment
Я искал это. Спасибо. Я погуглил, как сделать патчи, чтобы эта страница появлялась наверху, так что.. - person the kamilz; 26.12.2019