Subversion (was: Re: Upgrading without central packaging)

[prev] [thread] [next] [lurker] [Date index for 2005/04/26]

From: Robin Stephenson
Subject: Subversion (was: Re: Upgrading without central packaging)
Date: 15:01 on 26 Apr 2005
Peter da Silva wrote:

> [...]
>
>a GNOME
>style rats-nest of incompatble dependencies
>

A while back I built Subversion. There's software modularity and reuse, 
and there's Dependency Madness:

root@ndovu:~# ldd `which svn`
libsvn_client-1.so.0 => /usr/local/lib/libsvn_client-1.so.0
libsvn_wc-1.so.0 => /usr/local/lib/libsvn_wc-1.so.0
libsvn_ra-1.so.0 => /usr/local/lib/libsvn_ra-1.so.0
libsvn_diff-1.so.0 => /usr/local/lib/libsvn_diff-1.so.0
libsvn_ra_local-1.so.0 => /usr/local/lib/libsvn_ra_local-1.so.0
libsvn_repos-1.so.0 => /usr/local/lib/libsvn_repos-1.so.0
libsvn_fs-1.so.0 => /usr/local/lib/libsvn_fs-1.so.0
libsvn_fs_fs-1.so.0 => /usr/local/lib/libsvn_fs_fs-1.so.0
libsvn_fs_base-1.so.0 => /usr/local/lib/libsvn_fs_base-1.so.0
libsvn_ra_svn-1.so.0 => /usr/local/lib/libsvn_ra_svn-1.so.0
libsvn_ra_dav-1.so.0 => /usr/local/lib/libsvn_ra_dav-1.so.0
libsvn_delta-1.so.0 => /usr/local/lib/libsvn_delta-1.so.0
libsvn_subr-1.so.0 => /usr/local/lib/libsvn_subr-1.so.0
libaprutil-0.so.0 => /usr/local/apr/lib/libaprutil-0.so.0
libgdbm.so.3 => /usr/local/lib/libgdbm.so.3
libdb-4.2.so => /usr/local/BerkeleyDB.4.2/lib/libdb-4.2.so
libexpat.so.0 => /usr/local/lib/libexpat.so.0
libapr-0.so.0 => /usr/local/apr/lib/libapr-0.so.0
libsendfile.so.1 => /usr/lib/libsendfile.so.1
librt.so.1 => /usr/lib/librt.so.1
libresolv.so.2 => /usr/lib/libresolv.so.2
libdl.so.1 => /usr/lib/libdl.so.1
libneon.so.24 => /usr/local/lib/libneon.so.24
libxml2.so.2 => /usr/local/lib/libxml2.so.2
libpthread.so.1 => /usr/lib/libpthread.so.1
libiconv.so.2 => /usr/local/lib/libiconv.so.2
libz.so => /usr/local/lib/libz.so
libm.so.1 => /usr/lib/libm.so.1
libnsl.so.1 => /usr/lib/libnsl.so.1
libsocket.so.1 => /usr/lib/libsocket.so.1
libc.so.1 => /usr/lib/libc.so.1
libgcc_s.so.1 => /usr/local/lib/libgcc_s.so.1
libaio.so.1 => /usr/lib/libaio.so.1
libz.so.1 (SUNW_1.1) => (version not found)
libz.so.1 (SUNW_1.1) => (version not found)
libmp.so.2 => /usr/lib/libmp.so.2
libthread.so.1 => /usr/lib/libthread.so.1
/usr/platform/SUNW,Ultra-80/lib/libc_psr.so.1

I still don't understand why ldd is moaning about libz:
/usr/lib/libz.so.1 f none 0755 root bin 70064 21161 1065228442 SUNWzlib

Other Subversion gripes:
* Using more w3c standards than anyone else is not a claim to greatness
* Eclipse support is broken: it checks out, but can't check in
* The bastard thing wedges its repository every time someone looks at it 
funny; there doesn't seem to be a way to tell it to automatically roll 
back failed transactions (say after 30 minutes)
* When it does wedge it goes to some lengths to put the fear of God into 
the user:

svn: Berkeley DB error while opening environment for filesystem /svn/db:
DB_RUNRECOVERY: Fatal error, run database recovery
svn: bdb: PANIC: fatal region error detected; run recovery
svn: Your commit message was left in a temporary file:
svn: '/etc/svn-commit.2.tmp'

* why oh why didn't they provide some way to store Unix permissions and 
ownerships (VC of system files)? Don't tell me properties are it; I 
don't want to write wrappers, CVS made me do that, it sucked then, and 
it sucks now.

I only really have one problem with this: how the hell am I expected to 
persuade a room full of Java developers that this is an improvement over 
CVS? I mean, it is, but it's just blimmin well not a big enough one.

Finally, line endings. Oh, line endings. Eclipse's wild stabs in the 
dark, FTP's binary vs ASCII transfer, Cygwin's weird mount thing, 
getting everyone to delete their working copy to fix sticky tags in CVS, 
rubbish Unix error messages ("bad interpreter?") -- I've just about had 
it up to here.

Can anyone name a single piece of software that doesn't suck? There must 
be some small, perfectly formed jewel out there that does something 
useful, right? Right?
There's stuff above here

Generated at 02:00 on 03 May 2005 by mariachi 0.52