Учитывая существующий проект «a», скопируйте весь проект в «b», внесите изменения в «b».Создать diff между исходным каталогом и вашим скопированным каталогом.
Например, оформить заказ или загрузить проект в каталог 'a', скопировать в 'b':
$ tree a
a
`-- dir
|-- Bar.java
`-- Foo.java
$ cp -r a b
$ tree b
b
`-- dir
|-- Bar.java
`-- Foo.java
Внести изменения в 'b' (и только 'b'):
$ diff -r -s a b
Files a/dir/Bar.java and b/dir/Bar.java are identical
Files a/dir/Foo.java and b/dir/Foo.java are identical
$ sed -i 's/Foo.*$/& \/* Change...*\//' b/dir/Foo.java
$ diff -ruN a b | tee a.patch
diff -ruN a/dir/Foo.java b/dir/Foo.java
--- a/dir/Foo.java 2012-08-02 18:41:39.444720785 -0700
+++ b/dir/Foo.java 2012-08-02 18:46:45.319932802 -0700
@@ -1,2 +1,2 @@
package dir;
-public class Foo {}
+public class Foo {} /* Change...*/
$ gzip a.patch
Другая альтернатива - сохранить исходный источник во временном локальном репозитории git, а затем использовать встроенный в git diff
для генерации патча.Или лучше, если исходный источник использует git, а затем просто клонировать репо и работать непосредственно в самом дереве исходного кода и (все еще) использовать git для генерации патча.