I want to learn to patch
James Richard Tyrer
tyrerj at acm.org
Sat Jun 6 04:56:02 BST 2009
Chuck Robey wrote:
> James Richard Tyrer wrote:
>> First I admire your enthusiasm. Do not take offense at my rather direct
>> engineer's analysis.
>> Dotan Cohen wrote:
>>> Here is a very simple bug, that I want to learn to submit patches with:
>> I have to warn your that there have been major arguments about this
>> issue and I have rather strong opinions about it. We won't worry about
>> my opinions but expect to run into some resistance.
>>> I have googled KDE Development and found lots of tutorials from KDE 2
>>> and KDE 3, and lots of tutorials about setting up what seems to be a
>>> very complex and error-prone development environment. However, as one
>>> can simply view the code online  I would like to work this way. I
>>> looked around the websvn tree for the file(s) that contain the string
>>> "Other Tabs" from the bug in question, but I could not find them. So I
>>> have these two questions:
>>> 1) How does one go about finding the correct file(s) to modify?
>> This is probably part of the Konqueror code:
>> in SVN. You can find the relevant files using "Find File" looking for
>> "*.*c*" with a string in: "Context::Containing Text" or use Grep
>> (command line) in Konsole.
>>> 2) How does one make a diff file?
>> First, you need to checkout and build the KDEBase module from SVN:
>> svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdebase
>> Well actually, you need to install subversion, the GNU C/C++ compiler,
>> and CMake. I would suggest reading the relevant (user/client) parts of:
>> Now, having found what needs to be changed:
>> 1. Change it.
>> 2. Compile and install.
>> 3. Test to see that it works like you want (if not go back to #1)
>> 4. Execute: "svn status" to see that all is well
>> 5. Execute: "svn up" to see that there is no conflict
>> 6. Execute: "svn diff" to see your patch.
>> 7. If you want a patch file, Execute: "svn diff > file.diff
>> 8. Post your patch to the "kde-devel" (subscribe to it) mailing list
>> with the Subject starting with "[PATCH]" or attach the diff file to
>> the bug and label the attachment as a Patch.
>> So, that is a basic outline. I expect that you might have further
> Nothing you say here is wrong, but I thought it would make sense to *some* folks
> to describe one part a bit more closely (with the idea that this is gonna be
> bait for would-be coders via Google). I'm not criticizing here, please note that.
I intended this as a basic outline and thought that he would probably
have more questions when he actually got down to doing things.
> First, there are a group of different forms that diff can be coaxed into
> producing. They all do actually work, but some forms are easier for humans to
> read, and more obvious to catch errors in, than others forms, so a convention
> has been formed for a lot of projects (certainly, this includes FreeBSD and KDE)
> to require that all diff runs to use the "unified" form. Among other
> parameters, just include -u to diff (as opposed to -c for context type, or even
> the default kind which is the "edit" form. Both the "edit" and "context" diff
> outputs will get you yelled at (even though they work), and if you run them on
> purpose (just so you can view the outputs yourself) I think the reason that
> folks want you to use the unified diff will be obvious to you (as a human,
> The 2nd point which I think might be confusing is the order that you give the
> files to diff on the command line in. One is called the original, the other is
> our changed data. If you're not using a system like KDE, or FreeBSD, or
> anything that wraps your diffs for you so you are more likely to get it correct,
> then you need to worry a bit more about file order, because you're going to be
> giving the diff command directly. First, you want to have a copy of the form
> of the file you're going to be changing, before any mods go into it. My habit
> is to copy the original of any file I'm intending to modify to a file of the
> same name, but with a suffix of ".orig" Well, the the point I'm going to make
> is, that the order that you give the files to diff is very important. In KDE,
> where svn is handling your diff calls for you, you can ignore this point, but if
> other systems, the trick to remember is, to always give the file original form
> to the diff first, and after that, the modified file. You mustn't get the order
> incorrect, because if you do, "patch" is going to ask you if your patch might be
> reversed. So, if you get that response from "patch", remember you always give
> the original file first, THEN the modified file. The output is what patch has
> been created to read, directly.
I have been using the internal subversion: "svn diff" command lately
rather than the command line utility. It only has one type of output,
although you can use the diff command line utility with it -- at least
the fine manual says you can (I have never tried it).
You are correct that you need to give options when using the command
line diff utility. IIRC, "diff -Naur <old_file> <new_file>" is the
preferred form and the output file should have the extension 'patch'.
Linux (mostly) From Scratch
This message is from the kde mailing list.
Account management: https://mail.kde.org/mailman/listinfo/kde.
More info: http://www.kde.org/faq.html.
More information about the kde