2 3 4 5
BranchA--o-----------------------------------------
\
\ "A:2"
BranchB-----o---o----------------------------------
\
\ "A:2 B:3-4"
BranchC------------o-------------------------------
Philip and I were prompted by a customer to consider why Subversion copies
mergeinfo from branch to branch, in transitive merges (branch A -> branch B
-> branch C). Why do we need mergeinfo on branch C that refers directly to
A? If, as I believe to be the case, Subversion only supports merge
tracking if the branching graph is tree-shaped, then the only merges
allowed to or from branch C are those to or from branch B (and those to or
any further branches to the "right" of it: D1, D2). And thus the mergeinfo
on C that refers to A is not useful. It's redundant anyway, in the sense
that if we hadn't stored it explicitly then we could crawl the branching
graph to find it, but that's not my concern; rather, I wonder if it is ever
actually providing any benefit.
It seems to me that we must have done this (propagate mergeinfo) because we
intended that Subversion's merging should support merging patterns more
complex than that. But do we? The big question for me at the moment is:
do people in reality rely on Subversion doing kinds of merging that make
use of this transitive mergeinfo?
- Julian
Received on 2011-11-10 18:14:14 CET