На днях нашел баг в одной 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