Создание патча для кода..
Простая задача, простое решение. Итак, нужно организовать внесение изменений в код сайта, который регулярно обновляется, и соответственно изменения, стираются. Для решения проблемы в Unix есть команды patch и diff.
Для создания патча, или файла правки, с помощью утилиты diff, выполните в командной строке:
1 2 |
$ diff -u старый_файл новый_файл > разница.diff # ключ -u указывает программе diff выдавать разницу в так называемом "стандартном" ("унифицированном") формате |
Чтобы применить полученный патч, наберите в командной строке:
1 |
$ patch < разница.diff |
(и нажмите «ввод»).
Выполнение последней команды перенесет разницу из нового файла в старый, обновив старый файл. (Если старый файл не будет найден по заданному пути, программа выдаст ошибку.)
Патч можно «откатить», то есть отменить, передав программе patch ключ -R:
1 |
$ patch -R < разница.diff |
Как правило, утилита patch способна правильно обновить файл и в том случае, когда он несколько изменился (например, был отредактирован в области, не перекрывающейся с областью применения текущей «заплатки»).
Для этого утилита patch использует «контекст» — несколько строчек, соседних с областью применения патча, хранящихся в файле правки наряду с другой информацией о замене.
Однако в случае существенного расхождения файла, к которому применяется («накладывается») патч, и исходного файла, использовавшегося при создании патча, корректность применения патча, вообще говоря, не гарантируется.