Difference between revisions of "Patch and diff"
From Amahi Wiki
(New page: == References == * Good [http://www.linuxtutorialblog.com/post/introduction-using-diff-and-patch-tutorial reference tutorial on diff and patch]) |
|||
Line 1: | Line 1: | ||
+ | This is a technique to | ||
+ | |||
+ | * Reduce the size of install scripts | ||
+ | * Make them more forward compatible for the future | ||
+ | * Make them | ||
+ | |||
+ | == The Idea == | ||
+ | |||
+ | The idea is simple: install by hand, make changes to make it work, then compare against the pristine sources, generating a patch that later does automatically what you did by hand | ||
+ | |||
+ | * Setup the app for installation as a webapp (say in html). Save a pristine copy as html.orign | ||
+ | * Make changes in html/ only | ||
+ | * Find out the diff of what you made: | ||
+ | diff -r -N -b -u html.orig html > app-patch.diff | ||
+ | * This then can go into the install script as follows: | ||
+ | patch -p0 -E << EOF | ||
+ | .... contents of app-patch.diff here .... | ||
+ | EOF | ||
+ | |||
+ | |||
+ | == Testing the patch ahead of time == | ||
+ | |||
+ | It is strongly encouraged that you test the patch before attempting trial-and-error runs in the install script, which can be time consuming and error prone. This is basically simulating the install script applying the patch. | ||
+ | |||
+ | To do this, do this: | ||
+ | |||
+ | mv html html.modified | ||
+ | cp -a html.orig html | ||
+ | mv html.orig html.pristine | ||
+ | |||
+ | (the last step is to prevent patch from accidentally patching html.orig) | ||
+ | |||
+ | then try your patch against html dir (which is now like the original): | ||
+ | |||
+ | patch -p0 -E < app-patch.diff | ||
+ | |||
+ | Doing this '''will''' save you a lot of trial-and-error in the installer. | ||
== References == | == References == | ||
* Good [http://www.linuxtutorialblog.com/post/introduction-using-diff-and-patch-tutorial reference tutorial on diff and patch] | * Good [http://www.linuxtutorialblog.com/post/introduction-using-diff-and-patch-tutorial reference tutorial on diff and patch] | ||
+ | * [http://stephenjungels.com/jungels.net/articles/diff-patch-ten-minutes.html Ten minute guide to diff and patch] |
Revision as of 01:00, 11 September 2009
This is a technique to
- Reduce the size of install scripts
- Make them more forward compatible for the future
- Make them
The Idea
The idea is simple: install by hand, make changes to make it work, then compare against the pristine sources, generating a patch that later does automatically what you did by hand
- Setup the app for installation as a webapp (say in html). Save a pristine copy as html.orign
- Make changes in html/ only
- Find out the diff of what you made:
diff -r -N -b -u html.orig html > app-patch.diff
- This then can go into the install script as follows:
patch -p0 -E << EOF .... contents of app-patch.diff here .... EOF
Testing the patch ahead of time
It is strongly encouraged that you test the patch before attempting trial-and-error runs in the install script, which can be time consuming and error prone. This is basically simulating the install script applying the patch.
To do this, do this:
mv html html.modified cp -a html.orig html mv html.orig html.pristine
(the last step is to prevent patch from accidentally patching html.orig)
then try your patch against html dir (which is now like the original):
patch -p0 -E < app-patch.diff
Doing this will save you a lot of trial-and-error in the installer.