[Box Backup] SVN repository up and running

Martin Ebourne boxbackup@fluffy.co.uk
Fri, 14 Oct 2005 15:40:07 +0100


Martin Ebourne <lists@ebourne.me.uk> wrote:
> Ben Summers <ben@fluffy.co.uk> wrote:
>> SVN experts: Could someone post some working guidelines to the list, 
>>  including all the weird and wacky SVN commands we'd need to run? 
>> (I'm  especially interested in how to review changes then merge them 
>> into  truck.)
>
> I'll come up with something a bit more box specific soon.

Well I said it'd be a bit more specific, and it sure is.

I've created the following branches with my respective patches in them:

martin/solaris
martin/ppcfixes
martin/xattr
martin/autoconf

Ideally I'd like to merge them in that order as & when. Hopefully the 
solaris patch can go in asap because it's been around for a long time. 
The ppcfixes and xattr patches are fairly localised and should be ok.

autoconf is very invasive and will need some thinking about.

All my changes should already meet all of Ben's style criteria. If 
anyone wants to code review them then please go for it. They've all 
been tested (not since I've added them as branches, but the rejects 
were minor so should be ok).

I've included below a complete annotated transcript of everything I did 
to make the branches and check my patches in. There's also some merging 
in there towards the end. It's very long due to the file lists, but 
it's pretty simple so hopefully someone will find it helpful to follow.

One thing to note, I've repeatedly checked my changes in as small units 
as I went. This isn't necessary, but I've found it works better that 
way when you later want to diff/merge/revert/whatever.

Cheers,

Martin.

First need to check out the repository to work with.

    % svn co http://bbdev.fluffy.co.uk/svn/box/ svn
    A    svn/trunk
    <...trimmed...>
    A    svn/trunk/runtest.pl
    Checked out revision 1.

Make myself a subdirectory as Ben requested.

    % cd svn
    % mkdir martin
    % svn add martin
    A         martin

Branch the trunk for my first patch.

    % svn cp trunk martin/ppcfixes
    A         martin/ppcfixes
    % svn ci -m "Branched martin/ppcfixes from trunk"
    Authentication realm: <http://bbdev.fluffy.co.uk:80> Box Backup dev
    Password for 'martin':
    Adding         martin
    Adding         martin/ppcfixes
    Committed revision 2.

Apply the patch in the branch. I had to resolve a minor reject.

    % cd martin/ppcfixes
    % patch -p0 < ../../../ppcfixes.patch
    patching file test/common/testcommon.cpp
    Hunk #1 succeeded at 139 (offset -39 lines).
    patching file infrastructure/BoxPlatform.pm
    Hunk #1 FAILED at 69.
    1 out of 1 hunk FAILED -- saving rejects to file 
infrastructure/BoxPlatform.pm.rej
    patching file lib/backupclient/BackupStoreFile.cpp
    Hunk #1 succeeded at 929 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFile.h
    Hunk #1 succeeded at 124 (offset -37 lines).
    patching file lib/common/DebugMemLeakFinder.cpp
    Hunk #1 succeeded at 216 (offset -39 lines).
    % em infrastructure/BoxPlatform.pm
    % svn st
    ?      test/common/testcommon.cpp.orig
    M      test/common/testcommon.cpp
    ?      infrastructure/BoxPlatform.pm.orig
    ?      lib/backupclient/BackupStoreFile.cpp.orig
    ?      lib/backupclient/BackupStoreFile.h.orig
    M      lib/backupclient/BackupStoreFile.cpp
    M      lib/backupclient/BackupStoreFile.h
    ?      lib/common/DebugMemLeakFinder.cpp.orig
    M      lib/common/DebugMemLeakFinder.cpp
    % svn ci -m "Applied ppcfixes patch to martin/ppcfixes"
    Sending        ppcfixes/lib/backupclient/BackupStoreFile.cpp
    Sending        ppcfixes/lib/backupclient/BackupStoreFile.h
    Sending        ppcfixes/lib/common/DebugMemLeakFinder.cpp
    Sending        ppcfixes/test/common/testcommon.cpp
    Transmitting file data ....
    Committed revision 3.

Make another branch for the next patch.

    % ..
    % ls
    ppcfixes/
    % svn cp ../trunk xattr
    A         xattr
    % svn ci -m "Branched martin/xattr from trunk"
    Adding         martin/xattr
    Committed revision 4.

And apply the patch to it.

    % cd xattr
    % patch -p0 < ../../../xattr.patch
    patching file infrastructure/tests/common_tests.pl
    Hunk #1 succeeded at 143 (offset -39 lines).
    patching file lib/backupclient/BackupClientFileAttributes.cpp
    Hunk #1 succeeded at 14 (offset -39 lines).
    Hunk #3 succeeded at 263 (offset -39 lines).
    Hunk #5 succeeded at 338 (offset -39 lines).
    Hunk #7 succeeded at 580 (offset -39 lines).
    Hunk #9 succeeded at 708 (offset 28 lines).
    Hunk #10 succeeded at 878 (offset -67 lines).
    Hunk #11 succeeded at 995 (offset 28 lines).
    patching file lib/backupclient/BackupClientFileAttributes.h
    Hunk #1 succeeded at 52 (offset -39 lines).
    patching file lib/common/DebugMemLeakFinder.cpp
    Hunk #1 succeeded at 93 (offset -39 lines).
    patching file lib/common/StreamableMemBlock.cpp
    Hunk #1 succeeded at 225 (offset -39 lines).
    patching file bin/bbackupd/BackupClientDirectoryRecord.cpp
    Hunk #1 succeeded at 154 (offset -39 lines).
    % svn ci -m "Applied xattr patch to martin/xattr"
    Sending        xattr/bin/bbackupd/BackupClientDirectoryRecord.cpp
    Sending        xattr/infrastructure/tests/common_tests.pl
    Sending        xattr/lib/backupclient/BackupClientFileAttributes.cpp
    Sending        xattr/lib/backupclient/BackupClientFileAttributes.h
    Sending        xattr/lib/common/DebugMemLeakFinder.cpp
    Sending        xattr/lib/common/StreamableMemBlock.cpp
    Transmitting file data ......
    Committed revision 5.

Make the third branch. In this case the autoconf patch comes after the xattr
patch and will not apply without it. Hence I branch here from my xattr branch,
rather than the trunk.

    % ..
    % svn cp xattr autoconf
    A         autoconf
    % svn ci -m "Branched martin/autoconf from martin/xattr"
    Adding         martin/autoconf
    Adding         martin/autoconf/bin/bbackupd/BackupClientDirectoryRecord.cpp
    Adding         martin/autoconf/infrastructure/tests/common_tests.pl
    Adding         
martin/autoconf/lib/backupclient/BackupClientFileAttributes.cpp
    Adding         
martin/autoconf/lib/backupclient/BackupClientFileAttributes.h
    Adding         martin/autoconf/lib/common/DebugMemLeakFinder.cpp
    Adding         martin/autoconf/lib/common/StreamableMemBlock.cpp
    Committed revision 6.

Now I apply the patch. It's very invasive this one, as you can see.

    % ls
    autoconf/  ppcfixes/  xattr/
    % cd autoconf
    % patch -p0 < ../../../autoconf.patch    patching file configure
    Reversed (or previously applied) patch detected!  Assume -R? [n] n
    Apply anyway? [n] y
    Hunk #1 FAILED at 1.
    File configure is not empty after patch, as expected
    1 out of 1 hunk FAILED -- saving rejects to file configure.rej
    patching file test/raidfile/testraidfile.cpp
    Hunk #1 FAILED at 564.
    1 out of 1 hunk FAILED -- saving rejects to file 
test/raidfile/testraidfile.cpp.rej
    patching file test/raidfile/intercept.cpp
    Hunk #1 succeeded at 9 (offset -39 lines).
    Hunk #3 FAILED at 79.
    Hunk #4 succeeded at 144 (offset -39 lines).
    Hunk #6 succeeded at 184 (offset -39 lines).
    Hunk #8 succeeded at 223 (offset -39 lines).
    Hunk #9 FAILED at 240.
    2 out of 9 hunks FAILED -- saving rejects to file 
test/raidfile/intercept.cpp.rej
    patching file test/crypto/testcrypto.cpp
    Hunk #1 succeeded at 256 (offset -39 lines).
    patching file test/common/testcommon.cpp
    Hunk #1 FAILED at 435.
    Hunk #2 succeeded at 483 (offset -40 lines).
    1 out of 3 hunks FAILED -- saving rejects to file 
test/common/testcommon.cpp.rej
    patching file test/backupstorefix/testbackupstorefix.cpp
    Hunk #1 succeeded at 411 (offset -39 lines).
    patching file test/backupdiff/testbackupdiff.cpp
    Hunk #1 succeeded at 92 (offset -39 lines).
    Hunk #3 succeeded at 115 (offset -39 lines).
    patching file infrastructure/BoxPlatform.pm
    Reversed (or previously applied) patch detected!  Assume -R? [n] n
    Apply anyway? [n] y
    Hunk #1 FAILED at 1.
    File infrastructure/BoxPlatform.pm is not empty after patch, as expected
    1 out of 1 hunk FAILED -- saving rejects to file 
infrastructure/BoxPlatform.pm.rej
    patching file infrastructure/m4/ax_check_mount_point.m4
    patching file infrastructure/m4/ax_check_bdb_v1.m4
    patching file infrastructure/m4/ax_check_syscall_lseek.m4
    patching file infrastructure/m4/ac_cxx_namespaces.m4
    patching file infrastructure/m4/ax_check_nonaligned_access.m4
    patching file infrastructure/m4/ac_cxx_exceptions.m4
    patching file infrastructure/m4/ax_check_define_pragma.m4
    patching file infrastructure/m4/ax_check_ssl.m4
    patching file infrastructure/m4/ax_check_malloc_workaround.m4
    patching file infrastructure/m4/ax_random_device.m4
    patching file infrastructure/m4/ax_check_llong_minmax.m4
    patching file infrastructure/m4/vl_lib_readline.m4
    patching file infrastructure/m4/ax_func_syscall.m4
    patching file infrastructure/m4/ax_check_dirent_d_type.m4
    patching file infrastructure/makebuildenv.pl
    Hunk #1 succeeded at 12 (offset -39 lines).
    Hunk #2 FAILED at 21.
    Hunk #3 succeeded at 76 (offset 3 lines).
    Hunk #4 FAILED at 152.
    Hunk #5 FAILED at 502.
    Hunk #6 succeeded at 651 (offset -29 lines).
    Hunk #7 succeeded at 750 (offset 3 lines).
    Hunk #8 succeeded at 772 (offset -29 lines).
    3 out of 8 hunks FAILED -- saving rejects to file 
infrastructure/makebuildenv.pl.rej
    patching file infrastructure/BoxPlatform.pm.in
    patching file modules.txt
    Hunk #2 succeeded at 34 (offset 1 line).
    patching file configure.ac
    patching file lib/raidfile/RaidFileWrite.cpp
    Hunk #1 FAILED at 151.
    Hunk #2 FAILED at 162.
    Hunk #3 FAILED at 429.
    Hunk #4 FAILED at 503.
    Hunk #5 FAILED at 560.
    5 out of 5 hunks FAILED -- saving rejects to file 
lib/raidfile/RaidFileWrite.cpp.rej
    patching file lib/raidfile/RaidFileRead.cpp
    Hunk #1 succeeded at 29 (offset -39 lines).
    Hunk #2 succeeded at 754 (offset 4 lines).
    Hunk #3 succeeded at 1229 (offset -39 lines).
    Hunk #4 succeeded at 1337 (offset 4 lines).
    Hunk #5 succeeded at 1527 (offset -39 lines).
    Hunk #6 FAILED at 1539.
    Hunk #7 FAILED at 1549.
    Hunk #8 FAILED at 1577.
    3 out of 8 hunks FAILED -- saving rejects to file 
lib/raidfile/RaidFileRead.cpp.rej
    patching file lib/raidfile/RaidFileUtil.cpp
    Hunk #1 FAILED at 93.
    Hunk #2 FAILED at 110.
    Hunk #3 FAILED at 131.
    Hunk #4 FAILED at 140.
    4 out of 4 hunks FAILED -- saving rejects to file 
lib/raidfile/RaidFileUtil.cpp.rej
    patching file lib/crypto/CipherAES.cpp
    Hunk #1 succeeded at 10 (offset -39 lines).
    patching file lib/crypto/CipherBlowfish.cpp
    Hunk #1 succeeded at 11 (offset -39 lines).
    Hunk #3 succeeded at 66 (offset -39 lines).
    Hunk #5 succeeded at 110 (offset -39 lines).
    Hunk #7 succeeded at 196 (offset -39 lines).
    patching file lib/crypto/CipherAES.h
    Hunk #1 succeeded at 11 (offset -39 lines).
    patching file lib/crypto/CipherBlowfish.h
    Hunk #1 succeeded at 10 (offset -39 lines).
    patching file lib/crypto/CipherContext.cpp
    Hunk #1 succeeded at 29 (offset -39 lines).
    Hunk #3 succeeded at 83 (offset -39 lines).
    Hunk #5 succeeded at 137 (offset -39 lines).
    Hunk #7 succeeded at 285 (offset -39 lines).
    Hunk #9 succeeded at 472 (offset -39 lines).
    Hunk #11 succeeded at 578 (offset -39 lines).
    patching file lib/crypto/Random.cpp
    Hunk #1 succeeded at 28 (offset -39 lines).
    patching file lib/crypto/CipherDescription.h
    Hunk #1 succeeded at 47 (offset -39 lines).
    patching file lib/crypto/CipherContext.h
    Hunk #1 succeeded at 62 (offset -39 lines).
    patching file lib/backupstore/BackupStoreInfo.cpp
    Hunk #1 succeeded at 19 (offset -39 lines).
    Hunk #3 succeeded at 111 (offset -39 lines).
    Hunk #5 succeeded at 210 (offset -39 lines).
    Hunk #7 succeeded at 329 (offset -39 lines).
    patching file lib/backupstore/BackupStoreCheck2.cpp
    Hunk #1 succeeded at 377 (offset -39 lines).
    patching file lib/backupclient/BackupClientCryptoKeys.cpp
    Hunk #1 succeeded at 54 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileDiff.cpp
    Hunk #1 succeeded at 104 (offset -39 lines).
    Hunk #3 succeeded at 306 (offset -39 lines).
    Hunk #5 succeeded at 347 (offset -39 lines).
    patching file lib/backupclient/BackupClientFileAttributes.cpp
    Hunk #1 succeeded at 17 (offset -39 lines).
    Hunk #3 succeeded at 73 (offset -39 lines).
    Hunk #5 succeeded at 413 (offset -39 lines).
    Hunk #7 succeeded at 617 (offset -39 lines).
    Hunk #8 succeeded at 757 (offset 67 lines).
    patching file lib/backupclient/BackupStoreFileEncodeStream.cpp
    Hunk #1 succeeded at 178 (offset -39 lines).
    Hunk #3 succeeded at 338 (offset -39 lines).
    Hunk #5 succeeded at 580 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileCombine.cpp
    Hunk #1 succeeded at 94 (offset -39 lines).
    Hunk #3 succeeded at 160 (offset -39 lines).
    Hunk #5 succeeded at 220 (offset -39 lines).
    Hunk #7 succeeded at 362 (offset -39 lines).
    Hunk #9 succeeded at 396 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileCryptVar.h
    Hunk #1 succeeded at 22 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFile.cpp
    Hunk #1 succeeded at 154 (offset -39 lines).
    Hunk #3 succeeded at 201 (offset -39 lines).
    Hunk #5 succeeded at 245 (offset -39 lines).
    Hunk #7 succeeded at 508 (offset -39 lines).
    Hunk #9 succeeded at 587 (offset -39 lines).
    Hunk #11 succeeded at 697 (offset -39 lines).
    Hunk #13 succeeded at 1036 (offset -39 lines).
    Hunk #15 succeeded at 1277 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileCmbDiff.cpp
    Hunk #1 succeeded at 63 (offset -39 lines).
    Hunk #3 succeeded at 106 (offset -39 lines).
    Hunk #5 succeeded at 177 (offset -39 lines).
    Hunk #7 succeeded at 292 (offset -39 lines).
    patching file lib/backupclient/BackupStoreObjectDump.cpp
    Hunk #1 succeeded at 152 (offset -39 lines).
    Hunk #3 succeeded at 193 (offset -39 lines).
    patching file lib/backupclient/BackupStoreDirectory.cpp
    Hunk #1 succeeded at 19 (offset -39 lines).
    Hunk #3 succeeded at 135 (offset -39 lines).
    Hunk #5 succeeded at 480 (offset -39 lines).
    Hunk #7 succeeded at 536 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileCmbIdx.cpp
    Hunk #1 succeeded at 156 (offset -39 lines).
    Hunk #3 succeeded at 190 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileCryptVar.cpp
    Hunk #1 succeeded at 17 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileWire.h
    Hunk #1 succeeded at 13 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFile.h
    Hunk #1 succeeded at 113 (offset -37 lines).
    patching file lib/backupclient/BackupStoreFilename.h
    Hunk #1 succeeded at 30 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileRevDiff.cpp
    Hunk #1 succeeded at 59 (offset -39 lines).
    Hunk #3 succeeded at 106 (offset -39 lines).
    Hunk #5 succeeded at 153 (offset -39 lines).
    Hunk #7 succeeded at 225 (offset -39 lines).
    patching file lib/server/Protocol.cpp
    Hunk #1 FAILED at 462.
    Hunk #2 FAILED at 486.
    Hunk #3 FAILED at 597.
    Hunk #4 FAILED at 621.
    4 out of 4 hunks FAILED -- saving rejects to file 
lib/server/Protocol.cpp.rej
    patching file lib/server/Daemon.cpp
    Hunk #1 succeeded at 512 (offset -47 lines).
    patching file lib/server/SocketStream.cpp
    Hunk #1 succeeded at 372 (offset -39 lines).
    Hunk #3 succeeded at 394 (offset -39 lines).
    patching file lib/server/SocketListen.h
    Hunk #1 succeeded at 16 (offset -39 lines).
    patching file lib/server/SSLLib.cpp
    Hunk #1 succeeded at 45 (offset -39 lines).
    patching file lib/server/Socket.cpp
    Hunk #1 succeeded at 49 (offset -39 lines).
    patching file lib/server/ProtocolWire.h
    Hunk #1 succeeded at 13 (offset -39 lines).
    patching file lib/common/LinuxWorkaround.h
    Reversed (or previously applied) patch detected!  Assume -R? [n] n
    Apply anyway? [n] y
    Hunk #1 FAILED at 1.
    File lib/common/LinuxWorkaround.h is not empty after patch, as expected
    1 out of 1 hunk FAILED -- saving rejects to file 
lib/common/LinuxWorkaround.h.rej
    patching file lib/common/LinuxWorkaround.cpp
    Reversed (or previously applied) patch detected!  Assume -R? [n] n  
   Apply anyway? [n] y
    Hunk #1 FAILED at 1.
    File lib/common/LinuxWorkaround.cpp is not empty after patch, as expected
    1 out of 1 hunk FAILED -- saving rejects to file 
lib/common/LinuxWorkaround.cpp.rej
    patching file lib/common/BoxPlatform.h
    Hunk #1 FAILED at 55.
    1 out of 1 hunk FAILED -- saving rejects to file 
lib/common/BoxPlatform.h.rej
    patching file lib/common/EventWatchFilesystemObject.cpp
    Hunk #1 succeeded at 27 (offset -39 lines).
    patching file lib/common/TemporaryDirectory.h
    Hunk #1 succeeded at 12 (offset -39 lines).
    patching file lib/common/WaitForEvent.h
    Hunk #1 succeeded at 10 (offset -39 lines).
    Hunk #3 succeeded at 63 (offset -39 lines).
    Hunk #5 succeeded at 128 (offset -39 lines).
    patching file lib/common/ExcludeList.h
    Hunk #1 succeeded at 45 (offset -39 lines).
    patching file lib/common/Box.h
    Hunk #1 succeeded at 21 (offset -34 lines).
    Hunk #2 succeeded at 161 (offset -1 lines).
    patching file lib/common/EventWatchFilesystemObject.h
    Hunk #1 succeeded at 10 (offset -39 lines).
    patching file lib/common/EndStructPackForWire.h
    Hunk #1 succeeded at 9 (offset -39 lines).
    patching file lib/common/WaitForEvent.cpp
    Hunk #1 succeeded at 25 (offset -39 lines).
    Hunk #3 succeeded at 79 (offset -39 lines).
    patching file lib/common/ExcludeList.cpp
    Hunk #1 succeeded at 9 (offset -39 lines).
    Hunk #3 succeeded at 106 (offset -39 lines).
    patching file lib/common/FileModificationTime.h
    Hunk #1 succeeded at 16 (offset -39 lines).
    Hunk #3 succeeded at 40 (offset -39 lines).
    patching file lib/common/BeginStructPackForWire.h
    Hunk #1 succeeded at 9 (offset -39 lines).
    patching file lib/common/NamedLock.cpp
    Hunk #1 FAILED at 51.
    Hunk #2 FAILED at 107.
    Hunk #3 succeeded at 111 (offset -57 lines).
    2 out of 3 hunks FAILED -- saving rejects to file 
lib/common/NamedLock.cpp.rej
    patching file bin/bbackupd/BackupClientInodeToIDMap.cpp
    Hunk #1 succeeded at 9 (offset -39 lines).
    patching file bin/bbackupd/BackupClientInodeToIDMap.h
    Hunk #1 succeeded at 16 (offset -39 lines).
    patching file bin/bbackupd/BackupClientDirectoryRecord.cpp
    Hunk #1 succeeded at 26 (offset -39 lines).
    patching file bin/bbackupd/BackupDaemon.cpp
    Hunk #1 FAILED at 51.
    Hunk #2 succeeded at 890 (offset -44 lines).
    Hunk #3 FAILED at 953.
    Hunk #4 succeeded at 1041 (offset -30 lines).
    Hunk #5 succeeded at 1049 (offset -44 lines).
    Hunk #6 succeeded at 1099 (offset -30 lines).
    2 out of 6 hunks FAILED -- saving rejects to file 
bin/bbackupd/BackupDaemon.cpp.rej
    patching file bin/bbackupquery/BackupQueries.cpp
    Hunk #1 succeeded at 1163 (offset -39 lines).
    patching file bin/bbackupquery/bbackupquery.cpp
    Hunk #1 succeeded at 12 (offset -39 lines).
    Hunk #3 succeeded at 211 (offset -39 lines).
    patching file bootstrap

I start to resolve the rejects.

    % svn rm configure
    D         configure
    % em test/raidfile/testraidfile.cpp

At this point I realise that Ben hasn't applied the solaris patch to 
trunk yet. The autoconf patch comes after the solaris patch and needs 
that too. I need to backtrack all of this autoconf branch out and start 
again differently.

    % ..
    % ls
    autoconf/  ppcfixes/  xattr/
    % svn revert --recursive autoconf
    Reverted 'autoconf/test/raidfile/intercept.cpp'
    Reverted 'autoconf/test/crypto/testcrypto.cpp'
    <...trimmed...>
    Reverted 'autoconf/bin/bbackupquery/BackupQueries.cpp'
    Reverted 'autoconf/bin/bbackupquery/bbackupquery.cpp'
    % rm -rf autoconf
    % svn rm autoconf
    D         autoconf
    % svn ci -m "Removed martin/autoconf, forgot to apply solaris patch first"
    Deleting       martin/autoconf
    Committed revision 7.

Make another branch from trunk for the solaris patch.

    % svn cp ../trunk solaris
    A         solaris
    % svn ci -m "Branched martin/solaris from trunk"
    Adding         martin/solaris
    Committed revision 8.

Apply the solaris patch and fix the reject.

    % cd solaris
    % patch -p0 < ../../../solaris.patch
    patching file test/raidfile/testraidfile.cpp
    Hunk #1 succeeded at 525 (offset -39 lines).
    patching file test/raidfile/intercept.cpp
    Hunk #1 succeeded at 34 (offset -39 lines).
    Hunk #3 succeeded at 97 (offset -39 lines).
    patching file test/backupstore/testbackupstore.cpp
    Hunk #1 succeeded at 584 (offset -39 lines).
    Hunk #3 succeeded at 637 (offset -39 lines).
    Hunk #5 succeeded at 1732 (offset -39 lines).
    patching file test/common/testcommon.cpp
    Hunk #1 succeeded at 397 (offset -39 lines).
    patching file infrastructure/makebuildenv.pl
    Hunk #1 succeeded at 758 (offset -26 lines).
    Hunk #3 succeeded at 960 (offset -26 lines).
    patching file infrastructure/makeparcels.pl
    Hunk #1 succeeded at 99 (offset -39 lines).
    patching file infrastructure/BoxPlatform.pm
    Hunk #1 FAILED at 40.
    Hunk #2 succeeded at 9 (offset -39 lines).
    Hunk #3 succeeded at 106 (offset 3 lines).
    1 out of 3 hunks FAILED -- saving rejects to file 
infrastructure/BoxPlatform.pm.rej
    patching file lib/raidfile/RaidFileWrite.cpp
    Hunk #1 succeeded at 112 (offset -39 lines).
    Hunk #3 succeeded at 459 (offset -39 lines).
    patching file lib/raidfile/RaidFileRead.cpp
    Hunk #1 succeeded at 317 (offset -39 lines).
    Hunk #3 succeeded at 1585 (offset -39 lines).
    patching file lib/raidfile/RaidFileUtil.cpp
    Hunk #1 succeeded at 54 (offset -39 lines).
    Hunk #3 succeeded at 92 (offset -39 lines).
    patching file lib/server/Protocol.cpp
    Hunk #1 succeeded at 423 (offset -39 lines).
    Hunk #3 succeeded at 558 (offset -39 lines).
    patching file lib/server/Daemon.cpp
    Hunk #1 succeeded at 141 (offset -39 lines).
    patching file lib/server/SocketStreamTLS.cpp
    Hunk #1 succeeded at 14 (offset -39 lines).
    patching file lib/common/BoxPlatform.h
    Hunk #1 succeeded at 133 (offset -36 lines).
    Hunk #3 succeeded at 189 (offset -36 lines).
    patching file lib/common/NamedLock.cpp
    Hunk #1 succeeded at 12 (offset -39 lines).
    Hunk #3 succeeded at 88 (offset -39 lines).
    patching file bin/bbackupd/BackupDaemon.cpp
    Hunk #1 succeeded at 15 (offset -39 lines).
    Hunk #3 succeeded at 1018 (offset -39 lines).
    % em infrastructure/BoxPlatform.pm
    % svn ci -m "Applied solaris patch to martin/solaris"
    Sending        solaris/bin/bbackupd/BackupDaemon.cpp
    Sending        solaris/infrastructure/BoxPlatform.pm
    Sending        solaris/infrastructure/makebuildenv.pl
    Sending        solaris/infrastructure/makeparcels.pl
    Sending        solaris/lib/common/BoxPlatform.h
    Sending        solaris/lib/common/NamedLock.cpp
    Sending        solaris/lib/raidfile/RaidFileRead.cpp
    Sending        solaris/lib/raidfile/RaidFileUtil.cpp
    Sending        solaris/lib/raidfile/RaidFileWrite.cpp
    Sending        solaris/lib/server/Daemon.cpp
    Sending        solaris/lib/server/Protocol.cpp
    Sending        solaris/lib/server/SocketStreamTLS.cpp
    Sending        solaris/test/backupstore/testbackupstore.cpp
    Sending        solaris/test/common/testcommon.cpp
    Sending        solaris/test/raidfile/intercept.cpp
    Sending        solaris/test/raidfile/testraidfile.cpp
    Transmitting file data ................
    Committed revision 9.

Now I remake the autoconf branch. This time I take it from the solaris branch.

    % ..
    % svn cp solaris autoconf
    A         autoconf
    % svn ci -m "Branched martin/autoconf from martin/solaris"
    Adding         martin/autoconf
    Adding         martin/autoconf/bin/bbackupd/BackupDaemon.cpp
    Adding         martin/autoconf/infrastructure/BoxPlatform.pm
    Adding         martin/autoconf/infrastructure/makebuildenv.pl
    Adding         martin/autoconf/infrastructure/makeparcels.pl
    Adding         martin/autoconf/lib/common/BoxPlatform.h
    Adding         martin/autoconf/lib/common/NamedLock.cpp
    Adding         martin/autoconf/lib/raidfile/RaidFileRead.cpp
    Adding         martin/autoconf/lib/raidfile/RaidFileUtil.cpp
    Adding         martin/autoconf/lib/raidfile/RaidFileWrite.cpp
    Adding         martin/autoconf/lib/server/Daemon.cpp
    Adding         martin/autoconf/lib/server/Protocol.cpp
    Adding         martin/autoconf/lib/server/SocketStreamTLS.cpp
    Adding         martin/autoconf/test/backupstore/testbackupstore.cpp
    Adding         martin/autoconf/test/common/testcommon.cpp
    Adding         martin/autoconf/test/raidfile/intercept.cpp
    Adding         martin/autoconf/test/raidfile/testraidfile.cpp
    Committed revision 10.

As I said before, the autoconf patch also needs the xattr patch before it will
apply, so now I need to merge the xattr commit into the autoconf branch. First
I look to see what versions need merging.

    % svn log
    ------------------------------------------------------------------------
    r2 | martin | 2005-10-14 11:37:29 +0100 (Fri, 14 Oct 2005) | 1 line

    Branched martin/ppcfixes from trunk
    ------------------------------------------------------------------------

As you can see, the log has all the changes I've made missing. Not to fear,
this is a little oddity with svn which can catch you out, though it does make
sense if you read the book. :)

Briefly, although I've committed new changes to the repository, I've not
updated my working copy to the latest version and so I've got a working copy
with files at different versions in it. The best plan is just to update, then
it will all work fine.

    % svn up
    At revision 10.
    % svn log
    ------------------------------------------------------------------------
    r10 | martin | 2005-10-14 12:11:17 +0100 (Fri, 14 Oct 2005) | 1 line

    Branched martin/autoconf from martin/solaris
    ------------------------------------------------------------------------
    r9 | martin | 2005-10-14 12:10:41 +0100 (Fri, 14 Oct 2005) | 1 line

    Applied solaris patch to martin/solaris
    ------------------------------------------------------------------------
    r8 | martin | 2005-10-14 12:06:46 +0100 (Fri, 14 Oct 2005) | 1 line

    Branched martin/solaris from trunk
    ------------------------------------------------------------------------
    r7 | martin | 2005-10-14 12:03:01 +0100 (Fri, 14 Oct 2005) | 1 line

    Removed martin/autoconf, forgot to apply solaris patch first
    ------------------------------------------------------------------------
    r6 | martin | 2005-10-14 11:56:30 +0100 (Fri, 14 Oct 2005) | 1 line

    Branched martin/autoconf from martin/xattr
    ------------------------------------------------------------------------
    r5 | martin | 2005-10-14 11:45:01 +0100 (Fri, 14 Oct 2005) | 1 line

    Applied xattr patch to martin/xattr
    ------------------------------------------------------------------------
    r4 | martin | 2005-10-14 11:43:18 +0100 (Fri, 14 Oct 2005) | 1 line

    Branched martin/xattr from trunk
    ------------------------------------------------------------------------
    r3 | martin | 2005-10-14 11:42:37 +0100 (Fri, 14 Oct 2005) | 1 line

    Applied ppcfixes patch to martin/ppcfixes
    ------------------------------------------------------------------------
    r2 | martin | 2005-10-14 11:37:29 +0100 (Fri, 14 Oct 2005) | 1 line

    Branched martin/ppcfixes from trunk
    ------------------------------------------------------------------------

 From that I can see that the xattr changes are in revision 5 (or with an
alternative reading, they are the difference between revisions 4 and 5). Thus
merging the changes from the xattr branch onto the autoconf branch is easy:

    % svn merge -r 4:5 xattr autoconf
    U    autoconf/infrastructure/tests/common_tests.pl
    U    autoconf/lib/backupclient/BackupClientFileAttributes.cpp
    U    autoconf/lib/backupclient/BackupClientFileAttributes.h
    U    autoconf/lib/common/DebugMemLeakFinder.cpp
    U    autoconf/lib/common/StreamableMemBlock.cpp
    U    autoconf/bin/bbackupd/BackupClientDirectoryRecord.cpp

Currently svn doesn't record merging in the metadata. The best bet therefore
is to be consistent about recording merges in the change history.

    % svn ci -m "Merged r4:5 from martin/xattr to martin/autoconf.
    dquote> This is the xattr patch, which is required because autoconf 
was done later."
    Sending        martin/autoconf/bin/bbackupd/BackupClientDirectoryRecord.cpp
    Sending        martin/autoconf/infrastructure/tests/common_tests.pl
    Sending        
martin/autoconf/lib/backupclient/BackupClientFileAttributes.cpp
    Sending        
martin/autoconf/lib/backupclient/BackupClientFileAttributes.h
    Sending        martin/autoconf/lib/common/DebugMemLeakFinder.cpp
    Sending        martin/autoconf/lib/common/StreamableMemBlock.cpp
    Transmitting file data ......
    Committed revision 11.

Now I reapply the autoconf patch and get less rejects this time.

    % cd autoconf
    % patch -p0 < ../../../autoconf.patch
    patching file configure
    Reversed (or previously applied) patch detected!  Assume -R? [n] n
    Apply anyway? [n] y
    Hunk #1 FAILED at 1.
    File configure is not empty after patch, as expected
    1 out of 1 hunk FAILED -- saving rejects to file configure.rej
    patching file test/raidfile/testraidfile.cpp
    Hunk #1 succeeded at 525 (offset -39 lines).
    patching file test/raidfile/intercept.cpp
    Hunk #1 succeeded at 9 (offset -39 lines).
    Hunk #3 succeeded at 40 (offset -39 lines).
    Hunk #5 succeeded at 165 (offset -39 lines).
    Hunk #7 succeeded at 200 (offset -39 lines).
    Hunk #9 succeeded at 240 (offset -39 lines).
    patching file test/crypto/testcrypto.cpp
    Hunk #1 succeeded at 256 (offset -39 lines).
    patching file test/common/testcommon.cpp
    Hunk #1 succeeded at 397 (offset -38 lines).
    Hunk #3 succeeded at 500 (offset -38 lines).
    patching file test/backupstorefix/testbackupstorefix.cpp
    Hunk #1 succeeded at 411 (offset -39 lines).
    patching file test/backupdiff/testbackupdiff.cpp
    Hunk #1 succeeded at 92 (offset -39 lines).
    Hunk #3 succeeded at 115 (offset -39 lines).
    patching file infrastructure/BoxPlatform.pm
    Reversed (or previously applied) patch detected!  Assume -R? [n] n
    Apply anyway? [n] y
    Hunk #1 FAILED at 1.
    File infrastructure/BoxPlatform.pm is not empty after patch, as expected
    1 out of 1 hunk FAILED -- saving rejects to file 
infrastructure/BoxPlatform.pm.rej
    patching file infrastructure/m4/ax_check_mount_point.m4
    patching file infrastructure/m4/ax_check_bdb_v1.m4
    patching file infrastructure/m4/ax_check_syscall_lseek.m4
    patching file infrastructure/m4/ac_cxx_namespaces.m4
    patching file infrastructure/m4/ax_check_nonaligned_access.m4
    patching file infrastructure/m4/ac_cxx_exceptions.m4
    patching file infrastructure/m4/ax_check_define_pragma.m4
    patching file infrastructure/m4/ax_check_ssl.m4
    patching file infrastructure/m4/ax_check_malloc_workaround.m4
    patching file infrastructure/m4/ax_random_device.m4
    patching file infrastructure/m4/ax_check_llong_minmax.m4
    patching file infrastructure/m4/vl_lib_readline.m4
    patching file infrastructure/m4/ax_func_syscall.m4
    patching file infrastructure/m4/ax_check_dirent_d_type.m4
    patching file infrastructure/makebuildenv.pl
    Hunk #1 succeeded at 12 (offset -39 lines).
    Hunk #2 FAILED at 21.
    Hunk #3 succeeded at 76 (offset 3 lines).
    Hunk #4 FAILED at 152.
    Hunk #5 succeeded at 470 (offset -29 lines).
    Hunk #6 succeeded at 683 (offset 3 lines).
    Hunk #7 succeeded at 718 (offset -29 lines).
    Hunk #8 succeeded at 804 (offset 3 lines).
    2 out of 8 hunks FAILED -- saving rejects to file 
infrastructure/makebuildenv.pl.rej
    patching file infrastructure/BoxPlatform.pm.in
    patching file modules.txt
    Hunk #2 succeeded at 34 (offset 1 line).
    patching file configure.ac
    patching file lib/raidfile/RaidFileWrite.cpp
    Hunk #1 succeeded at 112 (offset -39 lines).
    Hunk #3 succeeded at 387 (offset -42 lines).
    Hunk #4 FAILED at 461.
    Hunk #5 succeeded at 559 (offset -1 lines).
    1 out of 5 hunks FAILED -- saving rejects to file 
lib/raidfile/RaidFileWrite.cpp.rej
    patching file lib/raidfile/RaidFileRead.cpp
    Hunk #1 succeeded at 29 (offset -39 lines).
    Hunk #3 succeeded at 1229 (offset -39 lines).
    Hunk #5 succeeded at 1527 (offset -39 lines).
    Hunk #7 succeeded at 1549 (offset -39 lines).
    patching file lib/raidfile/RaidFileUtil.cpp
    Hunk #1 succeeded at 54 (offset -39 lines).
    Hunk #3 succeeded at 92 (offset -39 lines).
    patching file lib/crypto/CipherAES.cpp
    Hunk #1 succeeded at 10 (offset -39 lines).
    patching file lib/crypto/CipherBlowfish.cpp
    Hunk #1 succeeded at 11 (offset -39 lines).
    Hunk #3 succeeded at 66 (offset -39 lines).
    Hunk #5 succeeded at 110 (offset -39 lines).
    Hunk #7 succeeded at 196 (offset -39 lines).
    patching file lib/crypto/CipherAES.h
    Hunk #1 succeeded at 11 (offset -39 lines).
    patching file lib/crypto/CipherBlowfish.h
    Hunk #1 succeeded at 10 (offset -39 lines).
    patching file lib/crypto/CipherContext.cpp
    Hunk #1 succeeded at 29 (offset -39 lines).
    Hunk #3 succeeded at 83 (offset -39 lines).
    Hunk #5 succeeded at 137 (offset -39 lines).
    Hunk #7 succeeded at 285 (offset -39 lines).
    Hunk #9 succeeded at 472 (offset -39 lines).
    Hunk #11 succeeded at 578 (offset -39 lines).
    patching file lib/crypto/Random.cpp
    Hunk #1 succeeded at 28 (offset -39 lines).
    patching file lib/crypto/CipherDescription.h
    Hunk #1 succeeded at 47 (offset -39 lines).
    patching file lib/crypto/CipherContext.h
    Hunk #1 succeeded at 62 (offset -39 lines).
    patching file lib/backupstore/BackupStoreInfo.cpp
    Hunk #1 succeeded at 19 (offset -39 lines).
    Hunk #3 succeeded at 111 (offset -39 lines).
    Hunk #5 succeeded at 210 (offset -39 lines).
    Hunk #7 succeeded at 329 (offset -39 lines).
    patching file lib/backupstore/BackupStoreCheck2.cpp
    Hunk #1 succeeded at 377 (offset -39 lines).
    patching file lib/backupclient/BackupClientCryptoKeys.cpp
    Hunk #1 succeeded at 54 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileDiff.cpp
    Hunk #1 succeeded at 104 (offset -39 lines).
    Hunk #3 succeeded at 306 (offset -39 lines).
    Hunk #5 succeeded at 347 (offset -39 lines).
    patching file lib/backupclient/BackupClientFileAttributes.cpp
    Hunk #1 succeeded at 17 (offset -39 lines).
    Hunk #3 succeeded at 73 (offset -39 lines).
    Hunk #5 succeeded at 413 (offset -39 lines).
    Hunk #7 succeeded at 617 (offset -39 lines).
    Hunk #8 succeeded at 757 (offset 67 lines).
    patching file lib/backupclient/BackupStoreFileEncodeStream.cpp
    Hunk #1 succeeded at 178 (offset -39 lines).
    Hunk #3 succeeded at 338 (offset -39 lines).
    Hunk #5 succeeded at 580 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileCombine.cpp
    Hunk #1 succeeded at 94 (offset -39 lines).
    Hunk #3 succeeded at 160 (offset -39 lines).
    Hunk #5 succeeded at 220 (offset -39 lines).
    Hunk #7 succeeded at 362 (offset -39 lines).
    Hunk #9 succeeded at 396 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileCryptVar.h
    Hunk #1 succeeded at 22 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFile.cpp
    Hunk #1 succeeded at 154 (offset -39 lines).
    Hunk #3 succeeded at 201 (offset -39 lines).
    Hunk #5 succeeded at 245 (offset -39 lines).
    Hunk #7 succeeded at 508 (offset -39 lines).
    Hunk #9 succeeded at 587 (offset -39 lines).
    Hunk #11 succeeded at 697 (offset -39 lines).
    Hunk #13 succeeded at 1036 (offset -39 lines).
    Hunk #15 succeeded at 1277 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileCmbDiff.cpp
    Hunk #1 succeeded at 63 (offset -39 lines).
    Hunk #3 succeeded at 106 (offset -39 lines).
    Hunk #5 succeeded at 177 (offset -39 lines).
    Hunk #7 succeeded at 292 (offset -39 lines).
    patching file lib/backupclient/BackupStoreObjectDump.cpp
    Hunk #1 succeeded at 152 (offset -39 lines).
    Hunk #3 succeeded at 193 (offset -39 lines).
    patching file lib/backupclient/BackupStoreDirectory.cpp
    Hunk #1 succeeded at 19 (offset -39 lines).
    Hunk #3 succeeded at 135 (offset -39 lines).
    Hunk #5 succeeded at 480 (offset -39 lines).
    Hunk #7 succeeded at 536 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileCmbIdx.cpp
    Hunk #1 succeeded at 156 (offset -39 lines).
    Hunk #3 succeeded at 190 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileCryptVar.cpp
    Hunk #1 succeeded at 17 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileWire.h
    Hunk #1 succeeded at 13 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFile.h
    Hunk #1 succeeded at 113 (offset -37 lines).
    patching file lib/backupclient/BackupStoreFilename.h
    Hunk #1 succeeded at 30 (offset -39 lines).
    patching file lib/backupclient/BackupStoreFileRevDiff.cpp
    Hunk #1 succeeded at 59 (offset -39 lines).
    Hunk #3 succeeded at 106 (offset -39 lines).
    Hunk #5 succeeded at 153 (offset -39 lines).
    Hunk #7 succeeded at 225 (offset -39 lines).
    patching file lib/server/Protocol.cpp
    Hunk #1 succeeded at 423 (offset -39 lines).
    Hunk #3 succeeded at 558 (offset -39 lines).
    patching file lib/server/Daemon.cpp
    Hunk #1 succeeded at 520 (offset -39 lines).
    patching file lib/server/SocketStream.cpp
    Hunk #1 succeeded at 372 (offset -39 lines).
    Hunk #3 succeeded at 394 (offset -39 lines).
    patching file lib/server/SocketListen.h
    Hunk #1 succeeded at 16 (offset -39 lines).
    patching file lib/server/SSLLib.cpp
    Hunk #1 succeeded at 45 (offset -39 lines).
    patching file lib/server/Socket.cpp
    Hunk #1 succeeded at 49 (offset -39 lines).
    patching file lib/server/ProtocolWire.h
    Hunk #1 succeeded at 13 (offset -39 lines).
    patching file lib/common/LinuxWorkaround.h
    Reversed (or previously applied) patch detected!  Assume -R? [n] n
    Apply anyway? [n] y
    Hunk #1 FAILED at 1.
    File lib/common/LinuxWorkaround.h is not empty after patch, as expected
    1 out of 1 hunk FAILED -- saving rejects to file 
lib/common/LinuxWorkaround.h.rej
    patching file lib/common/LinuxWorkaround.cpp
    Reversed (or previously applied) patch detected!  Assume -R? [n] n
    Apply anyway? [n] y
    Hunk #1 FAILED at 1.
    File lib/common/LinuxWorkaround.cpp is not empty after patch, as expected
    1 out of 1 hunk FAILED -- saving rejects to file 
lib/common/LinuxWorkaround.cpp.rej
    patching file lib/common/BoxPlatform.h
    Hunk #1 FAILED at 55.
    1 out of 1 hunk FAILED -- saving rejects to file 
lib/common/BoxPlatform.h.rej
    patching file lib/common/EventWatchFilesystemObject.cpp
    Hunk #1 succeeded at 27 (offset -39 lines).
    patching file lib/common/TemporaryDirectory.h
    Hunk #1 succeeded at 12 (offset -39 lines).
    patching file lib/common/WaitForEvent.h
    Hunk #1 succeeded at 10 (offset -39 lines).
    Hunk #3 succeeded at 63 (offset -39 lines).
    Hunk #5 succeeded at 128 (offset -39 lines).
    patching file lib/common/ExcludeList.h
    Hunk #1 succeeded at 45 (offset -39 lines).
    patching file lib/common/Box.h
    Hunk #1 succeeded at 21 (offset -34 lines).
    Hunk #2 succeeded at 161 (offset -1 lines).
    patching file lib/common/EventWatchFilesystemObject.h
    Hunk #1 succeeded at 10 (offset -39 lines).
    patching file lib/common/EndStructPackForWire.h
    Hunk #1 succeeded at 9 (offset -39 lines).
    patching file lib/common/WaitForEvent.cpp
    Hunk #1 succeeded at 25 (offset -39 lines).
    Hunk #3 succeeded at 79 (offset -39 lines).
    patching file lib/common/ExcludeList.cpp
    Hunk #1 succeeded at 9 (offset -39 lines).
    Hunk #3 succeeded at 106 (offset -39 lines).
    patching file lib/common/FileModificationTime.h
    Hunk #1 succeeded at 16 (offset -39 lines).
    Hunk #3 succeeded at 40 (offset -39 lines).
    patching file lib/common/BeginStructPackForWire.h
    Hunk #1 succeeded at 9 (offset -39 lines).
    patching file lib/common/NamedLock.cpp
    Hunk #1 succeeded at 12 (offset -39 lines).
    Hunk #3 succeeded at 129 (offset -39 lines).
    patching file bin/bbackupd/BackupClientInodeToIDMap.cpp
    Hunk #1 succeeded at 9 (offset -39 lines).
    patching file bin/bbackupd/BackupClientInodeToIDMap.h
    Hunk #1 succeeded at 16 (offset -39 lines).
    patching file bin/bbackupd/BackupClientDirectoryRecord.cpp
    Hunk #1 succeeded at 26 (offset -39 lines).
    patching file bin/bbackupd/BackupDaemon.cpp
    Hunk #1 succeeded at 12 (offset -39 lines).
    Hunk #3 succeeded at 958 (offset -39 lines).
    Hunk #5 succeeded at 1054 (offset -39 lines).
    patching file bin/bbackupquery/BackupQueries.cpp
    Hunk #1 succeeded at 1163 (offset -39 lines).
    patching file bin/bbackupquery/bbackupquery.cpp
    Hunk #1 succeeded at 12 (offset -39 lines).
    Hunk #3 succeeded at 211 (offset -39 lines).
    patching file bootstrap

Resolving the rejects. Most were deleted files which hadn't matched, so just
need an 'svn rm'. BoxPlatform.h has been rewritten and rejected whole, so the
easist solution there was to copy the new file over and apply the tweaks to
that.

    % svn rm configure
    D         configure
    % svn rm infrastructure/BoxPlatform.pm
    D         infrastructure/BoxPlatform.pm
    % em infrastructure/makebuildenv.pl
    % em lib/raidfile/RaidFileWrite.cpp
    % svn rm lib/common/LinuxWorkaround.h lib/common/LinuxWorkaround.cpp
    D         lib/common/LinuxWorkaround.h
    D         lib/common/LinuxWorkaround.cpp
    % cp ../../../BoxPlatform.h lib/common
    % em lib/common/BoxPlatform.h

None of the other patches had new or removed files, so this step wasn't
needed. Now I check to see what files need to be added to/removed from the
repository. Remove all of patch's .orig files first to remove clutter.

    % rm -f **/*.orig
    % svn st
    ?      configure.ac
    ?      bootstrap
    M      test/raidfile/testraidfile.cpp
    M      test/raidfile/intercept.cpp
    M      test/crypto/testcrypto.cpp
    M      test/common/testcommon.cpp
    M      test/backupstorefix/testbackupstorefix.cpp
    M      test/backupdiff/testbackupdiff.cpp
    ?      infrastructure/m4
    ?      infrastructure/BoxPlatform.pm.in
    M      infrastructure/makebuildenv.pl
    D      infrastructure/BoxPlatform.pm
    D      configure
    M      lib/raidfile/RaidFileWrite.cpp
    M      lib/raidfile/RaidFileRead.cpp
    M      lib/raidfile/RaidFileUtil.cpp
    M      lib/crypto/CipherAES.cpp
    M      lib/crypto/CipherBlowfish.cpp
    M      lib/crypto/CipherAES.h
    M      lib/crypto/CipherBlowfish.h
    M      lib/crypto/CipherContext.cpp
    M      lib/crypto/Random.cpp
    M      lib/crypto/CipherDescription.h
    M      lib/crypto/CipherContext.h
    M      lib/backupstore/BackupStoreInfo.cpp
    M      lib/backupstore/BackupStoreCheck2.cpp
    M      lib/backupclient/BackupClientCryptoKeys.cpp
    M      lib/backupclient/BackupStoreFileDiff.cpp
    M      lib/backupclient/BackupClientFileAttributes.cpp
    M      lib/backupclient/BackupStoreFileEncodeStream.cpp
    M      lib/backupclient/BackupStoreFileCombine.cpp
    M      lib/backupclient/BackupStoreFileCryptVar.h
    M      lib/backupclient/BackupStoreFile.cpp
    M      lib/backupclient/BackupStoreFileCmbDiff.cpp
    M      lib/backupclient/BackupStoreObjectDump.cpp
    M      lib/backupclient/BackupStoreDirectory.cpp
    M      lib/backupclient/BackupStoreFileCmbIdx.cpp
    M      lib/backupclient/BackupStoreFileCryptVar.cpp
    M      lib/backupclient/BackupStoreFileWire.h
    M      lib/backupclient/BackupStoreFile.h
    M      lib/backupclient/BackupStoreFilename.h
    M      lib/backupclient/BackupStoreFileRevDiff.cpp
    M      lib/server/Protocol.cpp
    M      lib/server/Daemon.cpp
    M      lib/server/SocketStream.cpp
    M      lib/server/SocketListen.h
    M      lib/server/SSLLib.cpp
    M      lib/server/Socket.cpp
    M      lib/server/ProtocolWire.h
    M      lib/common/BoxPlatform.h
    M      lib/common/TemporaryDirectory.h
    M      lib/common/WaitForEvent.h
    M      lib/common/Box.h
    M      lib/common/WaitForEvent.cpp
    M      lib/common/EndStructPackForWire.h
    D      lib/common/LinuxWorkaround.h
    M      lib/common/NamedLock.cpp
    M      lib/common/EventWatchFilesystemObject.cpp
    D      lib/common/LinuxWorkaround.cpp
    M      lib/common/ExcludeList.h
    M      lib/common/EventWatchFilesystemObject.h
    M      lib/common/ExcludeList.cpp
    M      lib/common/FileModificationTime.h
    M      lib/common/BeginStructPackForWire.h
    M      modules.txt
    M      bin/bbackupd/BackupClientInodeToIDMap.cpp
    M      bin/bbackupd/BackupClientInodeToIDMap.h
    M      bin/bbackupd/BackupClientDirectoryRecord.cpp
    M      bin/bbackupd/BackupDaemon.cpp
    M      bin/bbackupquery/BackupQueries.cpp
    M      bin/bbackupquery/bbackupquery.cpp

The '?'s are things I need to look at. I've got a few new files, and one new
directory with files in. I can add the lot in one go and then checkin.

    % svn add configure.ac bootstrap infrastructure/m4 
infrastructure/BoxPlatform.pm.in
    A         configure.ac
    A         bootstrap
    A         infrastructure/m4
    A         infrastructure/m4/ac_cxx_exceptions.m4
    A         infrastructure/m4/ax_check_syscall_lseek.m4
    A         infrastructure/m4/ax_check_bdb_v1.m4
    A         infrastructure/m4/ax_check_malloc_workaround.m4
    A         infrastructure/m4/ax_check_llong_minmax.m4
    A         infrastructure/m4/ax_check_ssl.m4
    A         infrastructure/m4/ac_cxx_namespaces.m4
    A         infrastructure/m4/ax_check_mount_point.m4
    A         infrastructure/m4/ax_check_nonaligned_access.m4
    A         infrastructure/m4/ax_check_define_pragma.m4
    A         infrastructure/m4/vl_lib_readline.m4
    A         infrastructure/m4/ax_check_dirent_d_type.m4
    A         infrastructure/m4/ax_func_syscall.m4
    A         infrastructure/m4/ax_random_device.m4
    A         infrastructure/BoxPlatform.pm.in
    % svn ci -m "Applied autoconf patch to martin/autoconf    dquote> 
NB. This reverts out a change in BoxPlatform.h for missing socklen_t.   
   dquote> Remember to check if that needs an autoconf workaround or if 
it is ok now."
    Sending        autoconf/bin/bbackupd/BackupClientDirectoryRecord.cpp
    Sending        autoconf/bin/bbackupd/BackupClientInodeToIDMap.cpp
    <...trimmed...>
    Sending        autoconf/test/raidfile/intercept.cpp
    Sending        autoconf/test/raidfile/testraidfile.cpp
    Transmitting file data 
................................................................................
    Committed revision 12.

Check I've not missed anything and update ready for whatever's next.

    % ../..
    % l
    martin/  trunk/
    % rm -f **/*.orig
    % svn st
    % sv up
    zsh: correct 'sv' to 'svn' [nyae]? y
    At revision 12.
    %

Job done, tick.