summaryrefslogtreecommitdiff
path: root/docs/misc/patch.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/misc/patch.html')
-rw-r--r--docs/misc/patch.html163
1 files changed, 163 insertions, 0 deletions
diff --git a/docs/misc/patch.html b/docs/misc/patch.html
new file mode 100644
index 0000000..3d926ac
--- /dev/null
+++ b/docs/misc/patch.html
@@ -0,0 +1,163 @@
+<!DOCTYPE html>
+<html>
+<head>
+
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+
+ <style type="text/css">
+ @import url('css/main.css');
+ </style>
+
+ <title>
+ Libreboot documentation: using diff and patch
+ </title>
+
+</head>
+
+<body>
+
+ <header>
+ <h1 id="pagetop">Diff and patch</h1>
+ <aside>This is just a quick guide for reference, use 'man' to know more.</aside>
+ </header>
+
+ <p>
+ <a href="index.html">back to index</a>
+ </p>
+
+<hr/>
+
+ <h1>
+ Apply a patch
+ </h1>
+
+ <p class="important">
+ To apply a patch to a single file, do that in it's directory:<br/>
+ <b>$ patch &lt; foo.patch</b>
+ </p>
+
+ <p>
+ Assuming that the patch is distributed in unified format identifying
+ the file the patch should be applied to, the above will work. Otherwise:<br/>
+ <b>$ patch foo.txt &lt; bar.patch</b>
+ </p>
+
+ <p>
+ You can apply a patch to an entire directory, but note the &quot;p level&quot;.
+ What this means is that inside patch files will be the files that you
+ intend to patch, identified by path names that might be different
+ when the files ane located on your own computer instead of on the computer
+ where the patch was created. 'p' level instructs the 'patch' utility to
+ ignore parts of the path name to identify the files correctly. Usually a
+ p level of 1 will work, so you would use:<br/>
+ <b>$ patch -p1 &lt; baz.patch</b>
+ </p>
+
+ <p>
+ Change to the top level directory before running this. If a patch level
+ of 1 cannot identify the files to patch, then inspect the patch file for file names.
+ For example:<br/>
+ <b>/home/user/do/not/panic/yet.c</b>
+ </p>
+
+ <p>
+ and you are working in a directory that contains panic/yet.c, use:<br/>
+ <b>$ patch -p5 &lt; baz.patch</b>
+ </p>
+
+ <p>
+ You usually count one up for each path separator (forward slash)
+ removed from the beginning of the path, until you are left with a path
+ that exists in the current working directory. The count is the p level.
+ </p>
+
+ <p>
+ Removing a patch using the -R flag<br/>
+ <b>$ patch -p5 -R &lt; baz.patch</b>
+ </p>
+
+ <p><a href="#pagetop">Back to top of page.</a></p>
+
+<hr/>
+
+ <h1>
+ Create a patch with diff
+ </h1>
+
+ <p>
+ Diff can create a patch for a single file:<br/>
+ <b>$ diff -u original.c new.c &gt; original.patch</b>
+ </p>
+
+ <p>
+ For diff'ing a source tree:<br/>
+ <b>$ cp -R original new</b>
+ </p>
+
+ <p>
+ Do whatever you want in new/ and then diff it:<br/>
+ <b>$ diff -rupN original/ new/ &gt; original.patch</b>
+ </p>
+
+ <p><a href="#pagetop">Back to top of page.</a></p>
+
+<hr/>
+
+ <h1>
+ git diff
+ </h1>
+
+ <p>
+ git is something special.
+ </p>
+
+ <p>
+ Just make whatever changes you want to a git clone and then:<br/>
+ <b>$ git diff &gt; patch.git</b>
+ </p>
+
+ <p>
+ Note the git revision that you did this with:<br/>
+ <b>$ git log</b>
+ </p>
+
+ <p><a href="#pagetop">Back to top of page.</a></p>
+
+<hr/>
+
+ <h1>
+ git apply
+ </h1>
+
+ <p>it really is.</p>
+
+ <p>
+ Now to apply that patch in the future, just git clone it again and do
+ with the git revision you found from above:<br/>
+ <b>$ git reset --hard REVISIONNUMBER</b>
+ </p>
+
+ <p>
+ Now put patch.git in the git clone directory and do:<br/>
+ <b>$ git apply patch.git</b>
+ </p>
+
+ <p><a href="#pagetop">Back to top of page.</a></p>
+
+<hr/>
+
+ <p>
+ Copyright &copy; 2014 Francis Rowe &lt;info@gluglug.org.uk&gt;<br/>
+ This document is released under the Creative Commons Attribution-ShareAlike 4.0 International Public License and all future versions.
+ A copy of the license can be found at <a href="../license.txt">../license.txt</a>.
+ </p>
+
+ <p>
+ This document is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See <a href="../license.txt">../license.txt</a> for more information.
+ </p>
+
+</body>
+</html>