Слияние изменений PHP с diff / patch - PullRequest
5 голосов
/ 10 декабря 2010

У меня есть три PHP-файла:

  • 1.php - Версия 1.0 программного обеспечения OSS (vanilla)
  • 1a.php - Версия 1.0 программного обеспечения OSS (с настройками)
  • 2.php - Версия 1.1 программного обеспечения OSS (vanilla)

Я хотел бы использовать diff / patch (или аналогичный) для создания одного файла патча, который объединит модификации Iвнесены в версию 1.0 с изменениями в исходной версии, внесенными в версию 1.1.Каков наилучший способ добиться этого?

Большое спасибо.

1 Ответ

5 голосов
/ 10 декабря 2010

Используйте это:

$ diff -u 1.php 1a.php > customizations.patch

, что даст вам унифицированную разницу между всеми изменениями между вашей ванильной и настраиваемой копией версии 1.0 файла.

Вы можете попытаться применить эти изменения к новому файлу 2.php, например так:

$ patch -p0 2.php customizations.patch

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

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

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

...