Unix diff and patch tools allow you to manage your custom changes easily across newer versions of sql-ledger.
Let us say that we have two versions of sql-ledger in folders sql-ledger-2.8.13 and sql-ledger-2.8.14. We try to find what has been changes in 2.8.14.
freebsd# diff -r -q sql-ledger-2.8.13 sql-ledger-2.8.14 Files sql-ledger-2.8.13/SL/Form.pm and sql-ledger-2.8.14/SL/Form.pm differ Files sql-ledger-2.8.13/SL/IC.pm and sql-ledger-2.8.14/SL/IC.pm differ Files sql-ledger-2.8.13/SL/IR.pm and sql-ledger-2.8.14/SL/IR.pm differ Files sql-ledger-2.8.13/SL/IS.pm and sql-ledger-2.8.14/SL/IS.pm differ Files sql-ledger-2.8.13/SL/OE.pm and sql-ledger-2.8.14/SL/OE.pm differ Files sql-ledger-2.8.13/SL/RP.pm and sql-ledger-2.8.14/SL/RP.pm differ Files sql-ledger-2.8.13/VERSION and sql-ledger-2.8.14/VERSION differ Files sql-ledger-2.8.13/bin/lynx/arapprn.pl and sql-ledger-2.8.14/bin/lynx/arapprn.pl differ ... ...
freebsd# diff -r -u sql-ledger-2.8.13 sql-ledger-2.8.14
diff -r -u sql-ledger-2.8.13/SL/Form.pm sql-ledger-2.8.14/SL/Form.pm
--- sql-ledger-2.8.13/SL/Form.pm 2008-02-17 17:57:39.000000000 +0000
+++ sql-ledger-2.8.14/SL/Form.pm 2008-03-19 14:54:21.000000000 +0000
@@ -78,7 +78,7 @@
$self->{menubar} = 1 if $self->{path} =~ /lynx/i;
- $self->{version} = "2.8.13";
+ $self->{version} = "2.8.14";
$self->{dbversion} = "2.8.8";
bless $self, $type;
@@ -2330,7 +2330,7 @@
# remove expired locks
$query = qq|DELETE FROM semaphore
- WHERE expires < $expires|;
+ WHERE expires < '$expires'|;
$dbh->do($query) || $self->dberror($query);
...
...
freebsd# diff -r -u sql-ledger-2.8.13 sql-ledger-2.8.14 > changes2814.diff
freebsd# patch -p0 -r sql-ledger-2.8.13 < changes2814.diff Hmm... Looks like a unified diff to me... The text leading up to this was: -------------------------- |diff -r -u sql-ledger-2.8.13/SL/Form.pm sql-ledger-2.8.14/SL/Form.pm |--- sql-ledger-2.8.13/SL/Form.pm 2008-02-17 17:57:39.000000000 +0000 |+++ sql-ledger-2.8.14/SL/Form.pm 2008-03-19 14:54:21.000000000 +0000 -------------------------- Patching file sql-ledger-2.8.13/SL/Form.pm using Plan A... Hunk #1 succeeded at 78. Hunk #2 succeeded at 2330. Hmm... The next patch looks like a unified diff to me... The text leading up to this was: -------------------------- |diff -r -u sql-ledger-2.8.13/SL/IC.pm sql-ledger-2.8.14/SL/IC.pm |--- sql-ledger-2.8.13/SL/IC.pm 2007-12-28 23:55:33.000000000 +0000 |+++ sql-ledger-2.8.14/SL/IC.pm 2008-03-05 20:02:07.000000000 +0000 -------------------------- Patching file sql-ledger-2.8.13/SL/IC.pm using Plan A... Hunk #1 succeeded at 199. ... ...
freebsd# diff -r -u sql-ledger-2.8.13 sql-ledger-2.8.14 Only in sql-ledger-2.8.13/SL: Form.pm.orig Only in sql-ledger-2.8.13/SL: IC.pm.orig Only in sql-ledger-2.8.13/SL: IR.pm.orig ... ...
Form.pm.orig (and other .orig files) is the file which was created by patch command and contains the file contents before applying the patch. These files can be deleted safely.
Let us say we have our custom sql-ledger which is a modified copy of sql-ledger-2.8.13 and resides in folder 'ourledger-2.8.13'. Our goal is to bring all changes in 2.8.14 to our custom version. Here are the steps:
'ourledger-2.8.13' do not conflict with original author's changes in 2.8.14. You can do this by reviewing changes in 'changes-2814.diff'. See notes below'ourledger-2.8.13'.freebsd# patch -p0 -r ourledger-2.8.13 < changes2814.diff
Here are few points to keep in mind: