Johan Corveleyn wrote on Thu, Oct 27, 2011 at 22:24:19 +0200: > On Thu, Oct 27, 2011 at 3:57 PM, Mark Phippard <markp...@gmail.com> wrote: > > On Thu, Oct 27, 2011 at 8:11 AM, Julian Foad <julian.f...@wandisco.com> > [...] > >> IDENTIFYING BRANCH ROOTS > >> > >> [[[ > >> $ svn mergeinfo ^/subversion/trunk ^/subversion/branches/1.6.x > >> Branch marker: 'subversion-source-tree' (found on both source and target) > >> [...] > >> > >> $ svn mergeinfo ^/subversion/trunk ^/subversion/branches > >> svn: E195016: Source branch marker is 'subversion-source-tree' but > >> target has no branch marker > >> > >> $ svn mergeinfo ^/subversion/trunk ^/subversion/trunk > >> svn: E195016: Source and target are the same branch > >> ]]] > >> > >> This looks for a branch root marker property on the specified > >> directory. The property name would be 'svn:branch-root' and the value > >> would be a string that (more or less uniquely) identifies the > >> 'project' (for want of a better word) of which this is a branch. > >> Currently, just for testing, the property it looks for is the first > >> ten characters of 'svn:ignore', which tends to work moderately well > >> for ad-hoc testing against our own source tree because it exists and > >> starts with 'ChangeLog*' in the root of every branch and (I guess) > >> nowhere else. > > > > > > This feature concerns me the most. I assume we are not proposing to add > > this marker just for this one subcommand? I would like to see the big > > picture of what we would do this marker so we can discuss its format and its > > ramifications. > > I agree with this. A branch-roots feature can be very useful in a lot > of contexts, and I'd like it to be carefully designed to address some > shortcomings in branching/merging (and potentially tagging as well). > > For instance, it'd be nice if you could refer to the "current branch > root" at the command line, or in externals definitions (externals > relative to the branch root), or even in viewspec files > (svn-viewspec.py). Or if you could say: > > svn merge --reintegrate branch:showing-merge-info > > which would look for the branch-root called 'showing-merge-info', part > of the same 'branch-marker-space'. Or something like that (just > throwing ideas in the air). > > Or: > > svn diff tag:MyApp:rel-1.0 tag:MyApp:rel-1.1 > > (where 'MyApp' is the 'branch-marker', and rel-* are the tags in that > 'namespace').
Quick observation: you're asking the question "Where does the branch named %s live" (and I consider tags a special case of branches for the purposes of avoiding having to invent terminology at 2am), Julian is asking the question "What branch is URL %s member of?". These two questions don't seem directly related, my first hunch was that they're quite opposite. --- Independently: can branches be nested? Say, can we have /subversion/trunk/tools/calc/trunk which gets carried along to /subversion/branches/1.7.x/tools/calc/trunk and then branches /subversion/trunk/tools/calc/branches/my-calc-branch and then someone backports that to the 1.7.x branch of calc /subversion/branches/1.7.x/tools/calc/branches/my-calc-branch and then someone asks what branch is that last thing a part of...