У меня есть набор файлов, к которым необходимо применить набор изменений.

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

Какой самый простой инструмент для создания такой ревизии и ее применения на чужом компьютере?

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

  1. Загрузите оригинальный zip-файл, содержащий бинарный дистрибутив изменяемого приложения
  2. Разархивируйте это приложение в любое другое место. Может быть, папка под корнем диска C, может быть, рабочий стол
  3. Загрузите файл (и, возможно, утилиту), который содержит набор изменений
  4. Применить набор изменений в каталог

Некоторые методы, которые будут работать как в автоматическом, так и в ручном режиме, будут оптимальными.

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

Я рассмотрел просто создание zip-файла с подкаталогами. Я не уверен, каким будет самый простой способ обнаружить различия и архивировать только изменения. Я бы хотел надежный метод, который не требует тонны ручных шагов (выполнение различий и ручное выделение изменений будет слишком подвержено ошибкам).

Достижение минимального размера - это хорошо, но не обязательно.

2 ответа2

4

Классический набор инструментов - это контекстная diff и patch. Смотрите десятиминутное руководство по diff и патчу

0

Для моих целей, поскольку изменения были небольшими, было проще создать zip-файл, содержащий файлы замены, чем создание патча. Таким образом, мне не пришлось связываться с p-уровнями.

Для этого я использовал Beyond Compare, выбрал измененные файлы, скопировал их в каталог с одинаковым именем (с другим родительским путем) и заархивировал этот каталог с таким же именем.

Чтобы применить это, я просто разархивирую это поверх существующих файлов, заменяя все.

Это не будет определять, действительно ли изменения применимы, в отличие от ответа RedGrittyBrick, который обнаружит это, но это проще для понимания и лучше работает для моего сценария.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .