Re: Reading and applying patches

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05Sep2006 01:44, Todd Zullinger <tmz@xxxxxxxxx> wrote:
| Chong Yu Meng wrote:
| > --- mlrate/mlrate.c 2003-01-27 10:31:31.000000000 +0100 
| > +++ mlrate.new/mlrate.c 2004-11-22 12:37:52.086783325 +0100 
| > @@ -25,6 +25,8 @@ 
| > #include <string.h> 
| > ... and continues for a bit longer
| > 
| > I assume that I should copy and paste the text into a separate file
| > and save it. But how do I apply the patch to the source file, which
| > is mlrate.c? 
| 
| You assume correctly.

It's worth mentioning that patch is pretty forgiving. You can usually
save the entire message to a file; patch is happy to skip past the leading
text up to the actual patch data (the output of a diff command, btw).

[...]
| > Also, how do I read the file? From some patch files I have come
| > across, they have "pluses" and "minuses" and other notation. What do
| > they mean?
| 
| Lines beginning with a plus are being added by the patch, lines with a
| minus are being removed.  The lines that start with either 3 minuses
| or plusses indicate the path of file that's being patched.

Also "!" prefixes lines in both parts that replace each other; the "+"
and "-" prefixes  are where lines are removes or added respectively
without any new (or old, respectively) text.

Patch understands output from diff(1), which comes in three basic flavours:

  - original diff (rarely used) which is actually a set of ed(1)
    commands to turn the old files into the new file.
  
  - context diff, as produced by "diff -c", which is more human readable,
    surrounding the changed lines with some unchanged lines from the files.
    This also has the advantage or permitting patch to cope a bit with
    mismatches. For example, if you have a diff between versions 1.21
    and 1.22, and you're trying to apply it to 1.20; if the files are
    similar enough patch can use the context lines to guess where the
    patch should go.

  - unified diff, as produced by "diff -U", which is a more compact form
    of context diff, and just as human readable, if not more so.

Make yourself a text file (eg a copy of this message). Then copy it and
modify the copy in various ways. Then compare the two using "diff -U".

A larger patch will normally be made from two complete source trees (the
old and the new) by running diff with the -r option (recursive) which
produces diffs for all the changes files.

For program version change patches, often the "old" tree will be inside
some source control system instead of being a real distinct directory
tree. Commands like "cvs diff" will generate diff output, comparing your
working area against the version inside the system.

Cheers,
-- 
Cameron Simpson <cs@xxxxxxxxxx> DoD#743
http://www.cskk.ezoshosting.com/cs/

[He] is the only man I know who would regard a naked, beautiful woman staring
deep into his eyes as an uncomplaining audience for his views on the latest
version of the twm window manager.      - igb@xxxxxxxxxxxxx (Ian G Batten)

-- 
fedora-list mailing list
fedora-list@xxxxxxxxxx
To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list
[Index of Archives]     [Older Fedora Users]     [Fedora Announce]     [Fedora Package Announce]     [EPEL Announce]     [Fedora Magazine]     [Fedora News]     [Fedora Summer Coding]     [Fedora Laptop]     [Fedora Cloud]     [Fedora Advisory Board]     [Fedora Education]     [Fedora Security]     [Fedora Scitech]     [Fedora Robotics]     [Fedora Maintainers]     [Fedora Infrastructure]     [Fedora Websites]     [Anaconda Devel]     [Fedora Devel Java]     [Fedora Legacy]     [Fedora Desktop]     [Fedora Fonts]     [ATA RAID]     [Fedora Marketing]     [Fedora Management Tools]     [Fedora Mentors]     [SSH]     [Fedora Package Review]     [Fedora R Devel]     [Fedora PHP Devel]     [Kickstart]     [Fedora Music]     [Fedora Packaging]     [Centos]     [Fedora SELinux]     [Fedora Legal]     [Fedora Kernel]     [Fedora OCaml]     [Coolkey]     [Virtualization Tools]     [ET Management Tools]     [Yum Users]     [Tux]     [Yosemite News]     [Gnome Users]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [Asterisk PBX]     [Fedora Sparc]     [Fedora Universal Network Connector]     [Libvirt Users]     [Fedora ARM]

  Powered by Linux