Re: Subtree mergeinfo -- what I learnt at the Hackathon
From: Paul Burba <ptburba_at_gmail.com>
Date: Tue, 10 Jul 2012 11:17:00 -0400
On Mon, Jul 9, 2012 at 4:16 PM, Julian Foad <julianfoad_at_btopenworld.com> wrote:
Minor point: I've always considered a single node as a subtree as far
> whose merging history differs from that of the root node in a significant way).
You might want to define this a bit more explicitly. I'm pretty sure
[1] "Mergeinfo" interpreted here in the most general way, including
> Only one subtree is considered; multiple subtrees are assumed to be handled independently, even if they are nested (such as root 'A', subtree 'A/D' whose history differs from 'A', and subtree 'A/D/foo' whose history differs from 'A/D').
A bit confused, the category is "1.7 Non-Reintegrate" but the cases
A--------------------------->
or here?
A--------------------------->
> In each row of this table, up to two Root merges are indicated, and their relative ordering is significant; similarly for Subtree merges. The ordering of R merges relative to S merges is not significant.
"none" is the same as "never" in the key right?
> 10. | [S<] S> |
To clarify, do you mean "shorthand for *EITHER* of these cases: no
> duplicates -- changes that are already present in the target.
But the last subtree in row 9 is listed as "none"? Did you mean row 11?
I'll hold off on further comments/questions until I get the above straight.
-- Paul T. Burba CollabNet, Inc. -- www.collab.net -- Enterprise Cloud Development Skype: ptburba P.S. Home Toronto is treating you right -- I assume the move was successful since you're back on this thread ;-) > CATEGORIZING SUBTREE MERGES: 1.7 Reintegrate > > These cases are for a reintegrate merge B->A. > > Treat this table as just a rough first draft for now; I'm not sure if this is the best way to categorize the reintegrate cases, and I need to investigate this more thoroughly and test it. > > Root | Subtree | Behaviour > ---------+-----------+----------------------------------- > 1. never | same | OK (not a subtree scenario) > +-----------+----------------------------------- > 2. | [S<] S> | Rejected > 3. | S< | Rejected?? > 4. | S> S< | Rejected > ---------+-----------+----------------------------------- > 5. [R<] R> | same | OK (not a subtree scenario) > +-----------+----------------------------------- > 6. | never | Rejected > 7. | [S<] S> * | Rejected > 8. | S< | Rejected?? > 9. | S> S< | Rejected > ---------+-----------+----------------------------------- > 10. [R>] R< | same | ?? (not a subtree scenario) > +-----------+----------------------------------- > 11. | never | Rejected?? ) > 12. | [S<] S> | Rejected > non-reint. cases > 13. | [S>] S< | Rejected ) > ---------+-----------+----------------------------------- > > > CATEGORIZING SUBTREE MERGES: Ideal Symmetric Merge > > Now we consider the ideal symmetric merge (not what's currently implemented). > > This is primarily concerned with the last complete merge of the root, in whichever direction that was, and similarly the last complete merge of the subtree. The (earlier) last complete merge of the root in the other direction is not significant, nor is that of the subtree. > > Root | Subtree | Ideal behaviour > ------+---------------+---------------------------------- > 1. | same | OK (not a subtree scenario) > R> or +---------------+---------------------------------- > 2. never | S> later | Merge all needed changes > 3. | S< later | > ------+---------------+ > 4. R> | never | > 5. | S> earlier | > 6. | S< earlier | > ------+---------------+---------------------------------- > 7. | same | OK (not a subtree scenario) > R< +---------------+---------------------------------- > 8. | S> later | Merge all needed changes > 9. | S< later | > 10. | never | > 11. | S> earlier | > 12. | S< earlier | > ------+---------------+---------------------------------- > > Key: > R> The last complete merge of Root was in the A->B direction. > R< The last complete merge of Root was in the B->A direction. > never Has never been merged between A & B in either direction. > same Same time and same direction as last complete merge of Root. > earlier Earlier than the last complete merge of the Root. > later Later than the last complete merge of the Root. > > > I'm working on integarting these tables, and also on writing tests (or rather scenarios using the test suite framework). > > Please let me know if this seems like the approach we need, or any other thoughts. > > - Julian > -- > Certified & Supported Apache Subversion Downloads: http://www.wandisco.com/subversion/download > > > > I (Julian Foad) wrote: >> [...] I'm not at all demanding we break backward >> compatibility. Sorry if it sounded like it. I'm just saying that >> we're proposing to change the behaviour of the plain merge command, >> and in doing that we need to work out what the details of the new >> behaviour will be, and this thread is helping us to do just that. >> I ended up with a bias towards trying to move toward a more rename- >> friendly approach, but I recognise we can't get there yet so the >> "follow each node's own ancestry" idea is just an idea for the >> future. We need a simpler approach for now. >> >> Stefan Sperling wrote: > [...] >>> Agreed. Ideally, the symmetric merge will support all currently supported >>> use cases, without throwing errors at users or requiring new command-line >>> switches. >>> >>> I haven't yet made up my mind about interim measures for 1.8 though. >>> I suppose if symmetric merge won't support all currently supported use cases >>> in 1.8, we could keep the --symmetric option in place for 1.8, and drop it >>> in 1.9 or later once the symmetric merge code can handle all use cases?Received on 2012-07-10 17:17:34 CEST |
This is an archived mail posted to the Subversion Dev mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.