Существует множество программ, которые могут создать патч для различий, но у меня есть куча времени, чтобы применить его. Я пытаюсь распространить патч, и у меня есть вопрос от пользователя о том, как его применить. Поэтому я попытался выяснить это самостоятельно и обнаружил, что понятия не имею, и большинство инструментов, которые я могу найти, это командная строка. (Я могу справиться с командной строкой, но многие люди будут потеряны без хорошего, дружественного графического интерфейса. Так что это не годится для этой цели.)
Я пытался использовать TortoiseSVN. У меня есть патч, который я хотел бы применить. Я щелкаю правой кнопкой мыши на патче, и в подменю TortoiseSVN есть опция «Применить патч». Все, что он делает, это поднимает пустое окно.
Поэтому я попытался нажать Open. У него есть два варианта: объединить и применить унифицированный diff. (К счастью, патч находится в унифицированном формате diff.) Но опция apply просто не работает: она запрашивает патч и папку. Каким-то образом он забыл попросить файл для применения патча! Так что TortoiseSVN просто не работает. Существует ли утилита на базе графического интерфейса Windows, которая возьмет исправление и файл и правильно его применяет?
РЕДАКТИРОВАТЬ: Глядя на ответы до сих пор, кажется, что черепаха будет делать это правильно, только если это файл, который уже версирован. Это не тот случай, здесь. Мне нужно иметь возможность применить патч к файлу, который не вышел из репозитория SVN. Я только что попробовал использовать Tortoise, потому что случайно узнал, что SVN использует diff и должен знать, как их создавать и применять.
Ответы:
Применить патч
С TortoiseMerge:
Альтернативный скрин, если вы открываете из TortoiseMerge. На скриншоте ниже каталог относится к каталогу «слияний», упомянутому на шаге 2 выше:
Скриншот графического интерфейса WinMerge:
источник
Я сделал чистый инструмент Python только для этого. У него предсказуемое кроссплатформенное поведение. Хотя он не создает новые файлы (на момент написания этого) и не имеет графического интерфейса, он может использоваться в качестве библиотеки для создания графического инструмента.
ОБНОВЛЕНИЕ : это должно быть более удобным, если у вас установлен Python.
источник
TortoiseMerge - это отдельная утилита, которая поставляется в комплекте с TortoiseSVN.
Его также можно скачать отдельно в архиве TortoiseDiff.zip . Это позволит вам применять унифицированные различия к файлам без версий.
источник
Я знаю, что вы сказали, что предпочли бы графический интерфейс, но инструменты командной строки прекрасно сработают. Смотрите GnuWin для порта инструментов Unix для Windows. Вам понадобится команда patch, очевидно ;-)
Однако, вы можете столкнуться с проблемой завершения строки. Порт GnuWin будет предполагать, что патч-файл имеет окончание линии в стиле DOS (CR / LF). Попробуйте открыть патч-файл в разумном редакторе, и он преобразует его для вас.
источник
В TortoiseSVN применение исправлений работает. Вам необходимо применить патч к тому же каталогу, из которого он был создан . Всегда важно помнить об этом. Вот как вы это делаете в TortoiseSVN:
Щелкните правой кнопкой мыши папку, к которой вы хотите применить патч. Появится диалоговое окно с запросом местоположения файла патча. Выберите файл, и это должно открыть маленькое окно со списком файлов, в котором перечислены измененные файлы, и щелчок по каждому элементу должен открыть окно сравнения, которое показывает, что патч собирается сделать с этим файлом.
Удачи.
источник
Утилита patch.exe из установки Git работает в Windows 10.
Установите Git для Windows, затем используйте
"C:\Program Files\Git\usr\bin\patch.exe"
команду, чтобы применить исправление.Если какое-либо сообщение об ошибке, например a,
Hunk #1 FAILED at 1 (different line endings).
было получено на выходе во время применения исправления, попробуйте добавить-l
(это ярлык для--ignore-whitespace
) или--binary
переключатели в командную строку.источник
Вы можете использовать этот собственный порт Win32 утилиты исправления.
Он поставляется вместе с большим выбором других утилит и, в отличие от Cygwin и аналогичных, не требует каких-либо DLL или подобных. Просто выберите ваш крошечный исполняемый файл и храните его где угодно.
Простое использование:
Получите больше помощи:
источник
patch.exe
.patch
. Windows считает все exes со словомpatch
подозрительными.Вы можете установить Cygwin , а затем использовать инструмент исправления командной строки , чтобы применить исправление. Смотрите также эту справочную страницу Unix , которая относится к патчу .
источник
Похоже, что TortoiseSVN (TortoiseMerge) требует строки
Index: foobar.py
в файле diff / patch. Это то, что мне нужно было сделать, чтобы файл исправления, не относящийся к TortoiseSVN, работал с помощью правой кнопки TortoiseSVN Apply Patch .Перед:
После:
Или, если вы знаете конкретную версию, из которой работал ваш автор:
источник
Я использую MSYS2 с http://www.msys2.org/
Он предоставляет множество утилит , таких как
patch
,which
,git
,tree
и многое другое.После установки MSYS2 просто запустите менеджер пакетов для установки
patch
:источник
Патч сообщает, к какому файлу обращаться. Заголовок должен быть примерно таким (просмотрите его в Блокноте или в вашем любимом текстовом редакторе):
В случае патча Subversion у вас также будут номера ревизий (так как имена файлов совпадают).
Патч GNU позволит вам переопределить эти имена, но я не знаю ни одного инструмента с графическим интерфейсом, чтобы сделать то же самое. Я бы посоветовался с различными программами сравнения - хотя, похоже, WinMerge не поддерживает применение патчей.
источник
Eclipse должен быть в состоянии сделать это, перейти к перспективе TeamSynchronize, а затем в Project-> Apply patch
источник
Для проектов Java я использовал NetBeans для применения файлов исправлений. Если исправляемый код Java еще не является проектом NetBeans, создайте для него проект. Чтобы создать новый проект:
Теперь, когда у вас есть проект, примените патч:
Вот и все. Ваш патч должен быть применен, и вы должны увидеть окно diff, показывающее изменения.
источник
Я уже использую BeyondCompare (коммерческий) для различий и слияний, и этот инструмент также имеет возможность создавать, просматривать и применять патчи.
источник
Если вы используете Mercurial , это делается через «импорт». Таким образом, в командной строке
hg import
команда или (вы можете найти эту--no-commit
опцию полезной), или «Repository» => «Import ...» в Hg Workbench.Обратите внимание, что они будут фиксировать изменения по умолчанию; Вы можете избежать этого, используя
hg import --no-commit
опцию, если используете командную строку, или если вы использовали Hg Workbench, может оказаться полезным выпуститьhg rollback
после слияния.источник
При применении исправлений с помощью TortoiseSVN я обычно сохраняю путь в корне извлеченного хранилища. После этого вы сможете щелкнуть правой кнопкой мыши патч, перейти в меню TortoiseSVN и нажать ApplyPatch. ApplyPatch должен автоматически определить, на каком уровне иерархии каталогов был создан патч.
Однако в прошлом у меня были проблемы с применением исправлений, содержащих новые файлы или переименовывающих файлы. Какой бы алгоритм ни использовала Tortoise для этого, похоже, не очень хорошо справляется с этими сценариями. Unicode может дать вам аналогичные проблемы.
источник
У вас есть два монитора? У меня была та же проблема с TortoiseMerge, и я понял, что когда я отключил один из мониторов, появилось маленькое окно со списком файлов. Надеюсь, это поможет вам.
источник
Если вы получаете сообщение об ошибке «Не рабочая копия», попробуйте выбрать каталог из диалогового окна TortoiseMerge, который является рабочим каталогом SVN.
источник
BusyBox порт для Windows , имеет как команду сравнения и патч, но они поддерживают только унифицированный формат.
источник
Просто используйте:
не забудьте выполнить эту команду только из той папки, где вы создали патч.
источник