Howto backport changes in SOPE 4.5 to 4.4
=========================================

SOPE 4.4 is a Subversion branch (cheap copy) of the 4.3 trunk which then got
bumbped to version 4.5. To backport bugfixes from 4.5 to 4.4, you can make use
of Subversion merge facilities.

Detailed information can be found in the Subversion book:

  http://svnbook.red-bean.com/en/1.1/index.html

Note that revisions count for all branches! That is 4.4 and 4.5 have the same
revision number which is increased for changes in both.


Getting Logs on Changes
=======================

To find out what has changed since a certain date you can use svn log. Go to
the 4.5 directory with the fix and run:

---snip---
helge@move:~/dev/SOPE-4.5/sope-mime/NGMime$ svn log -r {20041212}:HEAD \
  NGMimeRFC822DateHeaderFieldParser.m
------------------------------------------------------------------------
r430 | helge | 2004-12-09 17:45:48 +0100 (Thu, 09 Dec 2004) | 2 lines

fixed an issue with future date headers and libFoundation

------------------------------------------------------------------------
---snap---

Note that in the example I request the logs between 2004-12-12 and the current
HEAD revision (aka trunk). If you reverse the range to "HEAD:{20041212}" you
would get the output in reverse order (youngest logs on the top).

The same request run on the 4.4 tree gives:
---snip---
helge@move:~/dev/SOPE-4.4/sope-mime/NGMime$ svn log -r {20041212}:HEAD \
  NGMimeRFC822DateHeaderFieldParser.m
------------------------------------------------------------------------
---snap---

Nothing is returned. There where no changes in this branch from the mentioned
date. You might get further into the past to check for the last change.


Getting a Diff
==============

Now that we know the revision of the change we want to apply, we can request
a diff:

  svn diff -r 337:430 \
    http://developer.opengroupware.org/SOPE/trunk/sope-mime/NGMime/NGMimeRFC822DateHeaderFieldParser.m

This will show the changes made (I selected the last changed revision 337 in
SOPE 4.4 as a starting point).


Doing a Merge
=============

A merge is almost the same like a diff, only it applies the changes to a
working copy. So what we are basically doing is generating a patch from 4.5
trunk and apply it to a 4.4 working copy. We can then review the change and
commit if wanted.

---snip---
helge@move:~/dev/SOPE-4.4/sope-mime/NGMime$ svn merge -r 337:430 \
  http://developer.opengroupware.org/SOPE/trunk/sope-mime/NGMime/NGMimeRFC822DateHeaderFieldParser.m
U  NGMimeRFC822DateHeaderFieldParser.m
helge@move:~/dev/SOPE-4.4/sope-mime/NGMime$ svn stat
M      NGMimeRFC822DateHeaderFieldParser.m
---snap---

You can commit the change after review (add proper ChangeLog entries etc).
