Talk:Creating a patch

How to create a patch?
What I am missing here is a simple example how to do it. Something like:

--- Begin ---

If souce code is provided as a git repository, get and unpack it:

Step into the git repository just created:

Modify some file, e.g

Let git diff display the difference (works very nice even if more or many files were modified):

Save the differences into a file:

--- END ---

Git will do it all (almost).--Charles17 (talk) 14:30, 31 July 2017 (UTC)


 * In case the source code is not providing a git repository, see User:Charles17/cheat_sheet. But that example needs to get much more text explaining it. --Charles17 (talk) 08:00, 1 August 2017 (UTC)

TortoiseGit and Git for Windows
As the main section header is called "Creating patches": How could a Gentoo user create patches with those tools which both seem not being available on Gentoo?--Charles17 (talk) 18:28, 31 July 2017 (UTC)


 * Just renamed that section.--Charles17 (talk) 13:46, 1 August 2017 (UTC)

Sync with devmanual
We should sync this with the guidance in the devmanual.

Sam (talk) 07:20, 15 March 2021 (UTC)


 * Duplicate devmanual's content here? It's already mentioned 2nd reference in External resources.
 * --Charles17 (talk) 07:53, 15 March 2021 (UTC)


 * Not duplicate, but make clear that tidy patches should drop some of the git metadata.
 * --Sam (talk) 07:57, 15 March 2021 (UTC)


 * No clue.
 * And, I doubt those patches as written in Devmanual would apply under EAPI 7 as so often people have to replace
 * with
 * --- a/
 * +++ b/
 * --Charles17 (talk) 08:19, 15 March 2021 (UTC)
 * +++ b/
 * --Charles17 (talk) 08:19, 15 March 2021 (UTC)

Patching Windows Code That Has Carriage Return/Linefeeds
A package may import auxiliary code that is based on a project that is MS Windows based. As a result, you will have code being brought in that has carriage return + line feeds, aka "^M" and if you created a patch to that code, the eapply (as of 2/14/2023) will complain

(Stripping trailing CRs from patch; use --binary to disable.) patching file GenFfs/GenFfs.c    Hunk #1 FAILED at 542 (different line endings). 1 out of 1 hunk FAILED -- saving rejects to file GenFfs/GenFfs.c.rej (Stripping trailing CRs from patch; use --binary to disable.) patching file GenSec/GenSec.c    Hunk #1 FAILED at 1062 (different line endings).

You might think that you can finesse the problem by converting the line endings of your patch created in Linux by processing the patch using unix2dos. But that will not work, because eapply will "Strip" the carriage returns thereby defeating your attempt to make your patch match the source code.

What to do? Well, I first tried to find some instructions/documentation about "eapply" and how to pass the "--binary" flag within an ebuild. I did not find any. So I thought I'd present this issue here while I experiment and or ask others so this problem is documented for future users. Jlpoole (talk) 22:02, 14 February 2023 (UTC)