[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: What do you Hate about Subversion?

From: Byron Brummer <byron.brummer_at_livenation.com>
Date: 2007-01-19 02:10:57 CET

Keng Lam wrote:
> Have been using Subversion for a while now, love it in many ways but
> there are some quirks that
> bother me every now and then. It would be fun to know what other
> Subversion users think,
> what are the things that you hate, you wish could be changed ? Please
> this is not a negative/flame
> thread. Subversion is wonderful (but not perfect like any piece of
> software), that's why my organization
> and I still use it :-)

Here's my short list:

Can not diff a working copy against a URL
     svn: Target lists to diff may not contain both working copy paths and URLs

     CVS diff lets me diff my working files against the repo at any branch I
     like. SVN...doesn't.

     Workaround: Copy WC to a tag, then diff the tag URL against the target URL.
     Expensive and fugly.

Lack of labels (CVS style)
     SVN's copy based tags are a weak substitute for real labels.

Very difficult to produce high level reports.
     "Show me all log messages between QA build 100 and QA build 101"
     This is a very reasonable report...but it's almost impossible to
     sanely provide using svn because of the way tags are implemented.
     SVN won't let you log from tag A to tag B since they are at
     historical right angles to the code's history.

     I'm trying to script around this now (pull the tag rev, pull the
     "copied from" version, track down the peg version, and log those).
     But it's non-trivial at best.

Tags against tags have a copied from as being that last tag...
     What a pain when the real from is the original path (trunk or branch).
     Of course, if svn had real labels this wouldn't be an issue.

Copying/Tagging mixed revision working copies
     Deleted files/directories are a PITA..they don't work, full stop.

The revision of a deletion has no peg version.

     An object (aka "peg version") refers to an object's creation (Add), it's
     changes (Modified), but not it's removal (Delete). Finding what
     revision a given object was deleted in is thus a huge PITA as SVN forces
     the user to basically log the *ENTIRE* repository and grep for any
     instances of "D /path/to/object or object's parent directory, or its
     parent's parent directory, or...

Listing a path's peg versions

     A given path can contain many different, unique objects over time.
     Getting a list of these objects and their related information (peg
     versions, history) is a major, needless PITA in SVN. The user is forced
     to log the entire repo's history and then grep for the Adds of the path
     they want.

     Some might suggest running log only against the target path's parent
     directory path. This would be a mistake however, as it assumes the
     parent only has one peg revision.

Listing a path's full history (across all objects that have shared the given

     To do this you need to first know all the peg versions the path has ever
     had and then run log on each one by one. Since finding out all of a
     given path's peg versions is a prerequisite to asking for their history,
     this operation is a PITA.

     Additionally, even if you do get the peg versions and list out all their
     histories, you're still missing the deletion history for all of the peg
     versions. To obtain that info you have to request the log for the
     parent path for the delete revisions seperately.

To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Fri Jan 19 02:11:56 2007

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.