Difference between revisions of "Patch and diff"

From Amahi Wiki
Jump to: navigation, search
(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.

References