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
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
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: email@example.com
For additional commands, e-mail: firstname.lastname@example.org
Received on Fri Jan 19 02:11:56 2007