c74ebf4c3b
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3297 a1c6a512-1295-4272-9138-f99709370657
67 lines
2.3 KiB
Perl
67 lines
2.3 KiB
Perl
#define _PAGE_ How To Work With Patches
|
|
#include "head.t"
|
|
<p>
|
|
When we speak of 'patches' in the Rockbox project, we mean a set of changes
|
|
to one or more source files.
|
|
|
|
<h2>Tools Of The Trade</h2>
|
|
<p>
|
|
Use the tools 'diff' and 'patch'. Preferably the GNU versions. They're readily
|
|
available for all imaginable platforms.
|
|
<p>
|
|
Try one of these:
|
|
<ul>
|
|
<li> <a href="http://www.fsf.org/software/patch/patch.html">http://www.fsf.org/software/patch/patch.html</a>
|
|
<li> <a href="http://www.gnu.org/directory/diffutils.html">http://www.gnu.org/directory/diffutils.html</a>
|
|
<li> <a href="http://gnuwin32.sourceforge.net/packages/patch.htm">http://gnuwin32.sourceforge.net/packages/patch.htm</a> - patch for Windows
|
|
<li> <a href="http://gnuwin32.sourceforge.net/packages/diffutils.htm">http://gnuwin32.sourceforge.net/packages/diffutils.htm</a> - diff for Windows
|
|
</ul>
|
|
|
|
<h2>Creating A Patch</h2>
|
|
<p>
|
|
We generate diffs (often called patches) using 'diff' in a manner similar to
|
|
this:
|
|
<pre>
|
|
diff -u oldfile newfile > patch
|
|
</pre>
|
|
<p>
|
|
People who have checked out code with CVS can do diffs using cvs like this:
|
|
<pre>
|
|
cvs diff -u file > patch
|
|
</pre>
|
|
<p>
|
|
'diff' can also be used on a whole directory etc to generate one file with
|
|
changes done to multiple:
|
|
<pre>
|
|
diff -u olddir newdir > patch
|
|
</pre>
|
|
<p>
|
|
The -u option means the output is using the 'unified diff' format. Older
|
|
diff programs don't have that, and then -c (for 'context diff') is OK.
|
|
|
|
<h2>Applying A Patch</h2>
|
|
<p>
|
|
Applying a 'patch' (output from diff -u) is done with the 'patch' tool:
|
|
<pre>
|
|
patch < patchfile
|
|
</pre>
|
|
<p>
|
|
patch knows that the patchfile is a set of changes on one or more files, and
|
|
will do those to your local files. If your files have changed too much for the
|
|
patch to work, it will save the sections of the patch that aren't possible to
|
|
apply in a file called "filename.rej" (filename being the name of the file for
|
|
which the failing section was intended for). Then you must take care of them
|
|
manually.
|
|
|
|
<p>
|
|
If there is path information in the patchfile that you want to cut off
|
|
from the left, tell patch how many directory levels to cut off to find the
|
|
names in your file system:
|
|
<pre>
|
|
patch -p0 < patchfile
|
|
patch -p1 < patchfile
|
|
patch -p2 < patchfile
|
|
</pre>
|
|
... each example line removes one extra level of dir info from the left.
|
|
|
|
#include "foot.t"
|