Difference between revisions of "Creating A Patch"

From Lazarus wiki
Jump to navigationJump to search
(Use tar.gz or .zip (see Lazarus ML http://www.mail-archive.com/lazarus@lists.lazarus.freepascal.org/msg31605.html))
Line 29: Line 29:
 
''Note: I also like to look the file over to see if there is anything in there that shouldn't be.''
 
''Note: I also like to look the file over to see if there is anything in there that shouldn't be.''
  
The recommended way to submit a patch is through the [http://bugs.freepascal.org bug tracker]. If there is a report for the issue your patch fixes, use that, otherwise create a new issue. Upload the file to attach it to the issue.
+
The recommended way to submit a patch is through the [http://bugs.freepascal.org bug tracker]. If there is a report for the issue your patch fixes, use that, otherwise create a new issue. Upload the file to attach it to the issue. If the file is big, please compress it to zip or tar.gz/tgz.
  
 
Alternatively you can zip or gzip the file you have created and email it to the Lazarus mailing list (40 kB limit) or the mailbox for patches [mailto:patch@lazarus.dommelstein.net patch@lazarus.dommelstein.net]. When sending patches to the patch mailbox, make sure your subject contains at least the word patch.
 
Alternatively you can zip or gzip the file you have created and email it to the Lazarus mailing list (40 kB limit) or the mailbox for patches [mailto:patch@lazarus.dommelstein.net patch@lazarus.dommelstein.net]. When sending patches to the patch mailbox, make sure your subject contains at least the word patch.

Revision as of 15:34, 21 July 2012

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) português (pt) русский (ru) slovenčina (sk)

Instructions

This assumes you have gotten Lazarus from SVN. Getting Lazarus Via SVN

Open a command prompt and cd to the directory that the Lazarus source exists.

Instructions For Windows:

We'll assume that you have your SVN checkout of Lazarus in C:\lazarus

  1. Open a MS-DOS prompt
  2. c: {press enter}
  3. cd \lazarus {press enter}
  4. svn diff > mypatch.dif {press enter}

Note: If using TortoiseSVN, you can select the folder where Lazarus was checked out in Windows Explorer then right click to select TortoiseSVN->Create Patch...

Instructions For Linux, BSD, OS X etc:

We'll assume that you have your SVN checkout of Lazarus in $HOME/lazarus. Please adjust if your Lazarus installation is somewhere else.

  1. Open your favorite Terminal program
  2. cd $HOME {press enter}
  3. cd lazarus {press enter}
  4. svn diff > mypatch.diff {press enter}


Note: I also like to look the file over to see if there is anything in there that shouldn't be.

The recommended way to submit a patch is through the bug tracker. If there is a report for the issue your patch fixes, use that, otherwise create a new issue. Upload the file to attach it to the issue. If the file is big, please compress it to zip or tar.gz/tgz.

Alternatively you can zip or gzip the file you have created and email it to the Lazarus mailing list (40 kB limit) or the mailbox for patches patch@lazarus.dommelstein.net. When sending patches to the patch mailbox, make sure your subject contains at least the word patch.

That's all!

Troubleshooting

This mostly applies to Windows but could apply for other platforms as well.

You get the error "svn command not found" or similar. Most probably you do not have svn.exe in your PATH environment variable. The following steps should fix this problem:

  1. Locate svn.exe using the Find Files feature of your Start menu.
  2. Once you have located svn.exe you need to add the directory it is in to your PATH.

As an example: From the command prompt type:

  set PATH=%PATH%;"C:\Program Files\TortoiseSVN\"

Note: Your directory containing svn.exe might not be the same on your computer as the one used in this document. It is used here only as an example.

The following is optional:

To make this permanent

For Windows 98 or lower, you can add the line above (or similar) to your C:\autoexec.bat file near the end.

For Windows 2000 or greater you can add this directory to your PATH by:

  1. Right-Clicking on "My Computer"
  2. Select "Properties"
  3. Choose the "Advanced" tab.
  4. Click the "Environment Variables" button.
  5. Locate the "Path" line in "System Variables" and add: ;"C:\Program Files\TortoiseSVN\" to the end.

Note: Your directory containing svn.exe might not be the same on your computer as the one used in this document. It is used here only as an example.

Applying a patch

To apply a patch is simple. You can test the patch by using the --dry-run toggle switch like this:

patch --dry-run < mypatch.diff

The output of the patch program will be identical to the actual patching, only it does not alter the sourcecode files. Very handy for testing, without the possibility to screw up your source.

To do the final patching, you use the following commandline:

patch < mypatch.diff

If that doesn't work because the path layout of your environment is different from the environment where the patch was created, you can tell patch to strip out all path information:

patch -p0 < mypatch.diff

Depending on the contents of the patch, you might also try with -p1 or other numbers. It might be best to use the --dry-run option as well when doing this.

Finally, patches may have a Unix/Linux line ending (LF) while your local file has Windows (CR+LF) line endings or vice versa. You'll have to convert the patch file before applying on Windows at least, as the supplied patch.exe is picky about line endings.