time

Пример использования diff и patch

На днях нашел баг в одной js-библиотеке. Баг исправил и захотелось поделиться фиксом с автором. Публичного репозитория у библиотеки не нашел, потому решил отправить изменения в виде diff'a.

Представим, что у нас есть оригинальный файл (файл который находиться у автора), original.py

def foo(a):
    print a % 2

foo(22)

После внесения исправлений у нас получился такой файл, new.py

def foo(a):
    print 'even' if a % 2 == 0 else 'odd'

foo(22)

Создадим diff-файл, который будет знать, что изменилось по сравнению с оригинальным файлом

diff -u original.py new.py > patch.diff

Автор, со своей стороны может проделать примерно следующие действия. Проверить как сработает патч и не будет ли конфликтов

patch --dry-run original.py -i patch.diff

Если все хорошо, то можно применить патч

patch original.py -i patch.diff -o updated.py

Правки патча можно откатить

patch updated.py -R -i patch.diff

Сравнение директорий

diff -rq Dir1 Dir2
  • -r - рекурсивно;
  • -q - выводить только, если содержание отличается;

Дополнительное чтиво

blog comments powered by Disqus