From c679b19f0b0d95f587b3836c7bf867a932d3df28 Mon Sep 17 00:00:00 2001 From: Leah Rowe Date: Mon, 22 Aug 2016 10:22:04 +0100 Subject: actually add the documentation directory. (I forgot git add in last commit) --- docs/misc/patch.html | 218 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 docs/misc/patch.html (limited to 'docs/misc/patch.html') diff --git a/docs/misc/patch.html b/docs/misc/patch.html new file mode 100644 index 00000000..f68ebfa9 --- /dev/null +++ b/docs/misc/patch.html @@ -0,0 +1,218 @@ + + + + + + + + + + + Libreboot documentation: using diff and patch + + + + + + +
+

Diff and patch

+

This is just a quick guide for reference, use 'man' to know more.

+

+ Back to index +

+
+ +
+ +

+ Apply a patch +

+ +

+ To apply a patch to a single file, do that in it's directory:
+ $ patch < foo.patch +

+ +

+ Assuming that the patch is distributed in unified format identifying + the file the patch should be applied to, the above will work. Otherwise:
+ $ patch foo.txt < bar.patch +

+ +

+ You can apply a patch to an entire directory, but note the "p level". + 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:
+ $ patch -p1 < baz.patch +

+ +

+ 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:
+ /home/user/do/not/panic/yet.c +

+ +

+ and you are working in a directory that contains panic/yet.c, use:
+ $ patch -p5 < baz.patch +

+ +

+ 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. +

+ +

+ Removing a patch using the -R flag
+ $ patch -p5 -R < baz.patch +

+ +

Back to top of page.

+ +
+ +
+ +

+ Create a patch with diff +

+ +

+ Diff can create a patch for a single file:
+ $ diff -u original.c new.c > original.patch +

+ +

+ For diff'ing a source tree:
+ $ cp -R original new +

+ +

+ Do whatever you want in new/ and then diff it:
+ $ diff -rupN original/ new/ > original.patch +

+ +

Back to top of page.

+ +
+ +
+ +

+ git diff +

+ +

+ git is something special. +

+

+ Note: this won't show new files created. +

+ +

+ Just make whatever changes you want to a git clone and then:
+ $ git diff > patch.git +

+ +

+ Note the git revision that you did this with:
+ $ git log +

+ +

+ Alternatively (better yet), commit your changes and then use:
+ $ git format-patch -N
+ Replace N with the number of commits that you want to show. +

+ +

Back to top of page.

+ +
+ +
+ +

+ git apply +

+ +

it really is.

+ +

+ Now to apply that patch in the future, just git clone it again and do + with the git revision you found from above:
+ $ git reset --hard REVISIONNUMBER +

+ +

+ Now put patch.git in the git clone directory and do:
+ $ git apply patch.git +

+ +

+ If you use a patch from git format-patch, then use git am patch.git instead of git apply patch.git. git-am + will re-create the commits aswell, instead of just applying the patch. +

+ +

Back to top of page.

+ +
+ +
+ +

+ Copyright © 2014, 2015 Leah Rowe <info@minifree.org>
+ Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.3 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license can be found at ../gfdl-1.3.txt +

+ +

+ Updated versions of the license (when available) can be found at + https://www.gnu.org/licenses/licenses.html +

+ +

+ UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. +

+

+ TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. +

+

+ The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. +

+ +
+ + + -- cgit v1.2.3-70-g09d2