Subversion Doesn't Have Branches aka Crossing the Streams aka Branches as First Class Objects?
From: Andrew Reedick <Andrew.Reedick_at_cbeyond.net>
Date: Thu, 9 May 2013 16:08:39 -0400
Problem: Subversion doesn't have branches.
Subversion has directory objects, and we Humans(tm) arbitrarily decide that some directories are "branches," thereby giving these directories (branches) magical powers and mystical significance. Meanwhile, Subversion grinds on, treating those magic branches as mundane directories.
You can see the effects of this problem when you change a parent directory common to multiple branches, e.g. changing "/projectFoo/branches" to "/projectBar/branches" will cause every "branch" in "/projectBar/branches/*" to have a shared revision. This complicates finding branch points (--stop-on-copy), finding the common ancestor, etc..
Are there any plans to address this issue or otherwise make branches a first class object? Or at least add a switch to 'svn log' to skip over extraneous "only the parent dir path changed" revisions?
$ svn mkdir -m "" ^/project1/branches
As you can see from the svn logs, the "alpha" and "beta" branches are completely independent. They have no revisions in common.
But by renaming the parent "project1" dir to "project100", we create a linkage between the two:
$ svn log ^/project100/branches/beta
Note that the independent branches "alpha" and "beta" now have revision 76 in common... even though neither branch was changed.
Adding insult to injury, "svn log --stop-on-copy" will stop on revision 76, i.e. it treats r76 as a branch point:
$ svn log --stop-on-copy -v ^/project100/branches/alpha
As you can see, the "independent" alpha and beta branches now have revision 76 in common. All because Subversion doesn't have branches.
This is an archived mail posted to the Subversion Users mailing list.