annotate docs/troubles-handling.rst @ 5505:c7a5133e4a7c

unstable-list: add local table of content of each details section
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 26 Aug 2020 13:07:57 +0200
parents a2274a848008
children c408a31d8883
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5503
90074635c1f8 unstable-list: move copytright after the title
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5500
diff changeset
1 -----------------------------------------------------------
90074635c1f8 unstable-list: move copytright after the title
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5500
diff changeset
2 Possible troubles in rewriting history and their resolution
90074635c1f8 unstable-list: move copytright after the title
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5500
diff changeset
3 -----------------------------------------------------------
90074635c1f8 unstable-list: move copytright after the title
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5500
diff changeset
4
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
5 .. Copyright 2020 Sushil Khanchi <sushilkhanchi97@gmail.com>
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
6 .. Octobus SAS <contact@octobus.net>
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
7
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
8
5483
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
9 Rewriting history, and especially rewriting draft history that have been
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
10 exchanged can lead to "unstable" situation.
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
11
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
12 This document is intended for developer of the changeset evolution concept. It
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
13 cover through the technical aspects of each "instability" a changeset can get
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
14 into. It aims at building an exhaustive list of each cases and sub-cases and the
5483
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
15 status of automatic resolution for these cases.
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
16
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
17 Public changeset are part of the permanent history and are never considered
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
18 unstable.
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
19
5504
a2274a848008 unstable-list: add a general table of content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5503
diff changeset
20 .. contents:: :depth: 4
a2274a848008 unstable-list: add a general table of content
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5503
diff changeset
21
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
22 Orphan
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
23 #########
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
24
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
25 Basics
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
26 ******
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
27
5484
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
28 A changeset is orphan when there is at least one obsolete ancestor.
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
29
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
30 As a resolution, we need to find a new appropriate parents for the
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
31 changeset and rebase the orphan there.
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
32
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
33 If the parents of an orphan changeset are orphan themself, they will have to be
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
34 "stabilised" fist.
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
35
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
36 Cause of trouble
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
37 ****************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
38
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
39 Orphan can appears because the user locally rewrite changeset with descendants.
5496
87aad54c0f1f unstable-list: expand a bit the "cause of trouble" for phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5495
diff changeset
40 In this case the orphan are created when the command run. They are few real use
87aad54c0f1f unstable-list: expand a bit the "cause of trouble" for phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5495
diff changeset
41 case for such action and the user interface should focus on discouraging it.
5485
457d8003e840 unstable-list: add information about when/why orphan appears
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5484
diff changeset
42
457d8003e840 unstable-list: add information about when/why orphan appears
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5484
diff changeset
43 Orphan can also happens when the users created new changeset on draft that got
457d8003e840 unstable-list: add information about when/why orphan appears
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5484
diff changeset
44 rewritten in another repository. The orphan are then "discovered" when the
457d8003e840 unstable-list: add information about when/why orphan appears
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5484
diff changeset
45 obsolescence information of the ancestors is pulled in the local repository.
5496
87aad54c0f1f unstable-list: expand a bit the "cause of trouble" for phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5495
diff changeset
46 This is the most common way to create phase divergences.
5485
457d8003e840 unstable-list: add information about when/why orphan appears
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5484
diff changeset
47
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
48 Source of Complexity
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
49 ********************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
50
5486
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
51 There can be different situations we need to take care of when dealing with
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
52 resolution of an orphan changeset, like:
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
53
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
54 * parents might not be obsolete (yet) and orphan themself. They will need to be
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
55 resolved first.
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
56 * obsolete parent has conflicting rewrites (content-divergence), so there might
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
57 not be an obvious "good spot" to rebase the changeset too.
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
58 * obsolete parent could have been prune, so it has not direct successors,
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
59 * obsolete parent was split in multiple changesets. This comes with multiple
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
60 variants:
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
61
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
62 * successors could be linear of spread across multiple branches,
5486
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
63 * successors could have been reordered after the initial split,
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
64 * Some of the successors could have been pruned.
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
65 * the orphan changeset can be a merge and orphan may come any numbers of parents
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
66 * rebasing might lead to conflict.
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
67
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
68 Details of Sub cases
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
69 ********************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
70
5505
c7a5133e4a7c unstable-list: add local table of content of each details section
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5504
diff changeset
71 .. contents::
c7a5133e4a7c unstable-list: add local table of content of each details section
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5504
diff changeset
72 :local:
c7a5133e4a7c unstable-list: add local table of content of each details section
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5504
diff changeset
73
5487
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
74 O-A: Linear changeset (one parent)
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
75 ==================================
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
76
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
77 O-A1: parent has a single successors
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
78 ------------------------------------
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
79
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
80
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
81 Stabilisation Strategy
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
82 """"""""""""""""""""""
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
83
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
84 Solution is Clear.
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
85
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
86 Relocate the orphan changeset onto the single successor of obsolete parent.
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
87
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
88 Current Support Level
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
89 """""""""""""""""""""
7c543787d5c6 unstable-list: add a simple entry for the simplest orphan case
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5486
diff changeset
90
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
91 Good: current implementation is expected to perform the planned stabilisation.
5488
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
92
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
93 O-A2: parent is pruned (no successors)
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
94 --------------------------------------
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
95
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
96
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
97 Stabilisation Strategy
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
98 """"""""""""""""""""""
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
99
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
100 Find nearest "not-pruned" ancestor and treat it (or its successor, if apply) as
5488
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
101 a resolution parent. (re-run Orphan resolution starting from these parent).
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
102
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
103 XXX what about if they are multiple heads to that set of "not-pruned" ancestor?
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
104 Especially when they are more then 2 ?
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
105
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
106 Current Support Level
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
107 """""""""""""""""""""
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
108
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
109 Good support if there is only one head to the set.
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
110
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
111 O-A3: parent has multiple successors sets
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
112 -----------------------------------------
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
113
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
114
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
115 Stabilisation Strategy
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
116 """"""""""""""""""""""
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
117
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
118 Current Support Level
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
119 """""""""""""""""""""
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
120
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
121 O-A4: parent is split into multiple successors
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
122 ----------------------------------------------
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
123
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
124 O-A4.1: successors of parent are all one the same topological branch
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
125 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
126
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
127
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
128 Stabilisation Strategy
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
129 """"""""""""""""""""""
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
130
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
131 Pick highest one as resolution parent.
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
132
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
133 Current Support Level
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
134 """""""""""""""""""""
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
135
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
136 Good: current implementation is expected to perform the planned stabilisation.
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
137
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
138 O-A4.2: parent is split into multiple topological branches (at least 2 heads)
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
139 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
140
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
141 In this case, the destination can be ambiguous.
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
142
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
143 Stabilisation Strategy
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
144 """"""""""""""""""""""
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
145
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
146 prompt user to choose one.
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
147
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
148 (could we do better in some case?)
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
149
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
150 Current Support Level
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
151 """""""""""""""""""""
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
152
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
153 Current implementation is expected to perform the planned stabilisation.
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
154
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
155 O-M: Parent are Merge (multiple parent)
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
156 =======================================
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
157
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
158 O-M1: Only one parent is obsolete
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
159 ---------------------------------
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
160
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
161 XXX Simple case are probably as good as any `O-A` case. However special case are
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
162 probably ignored right now (e.g: successors of the obsolete parent is linear with
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
163 the other parent).
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
164
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
165 O-M2: both parent are obsolete
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
166 ------------------------------
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
167
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
168 XXX currently we evolve one after the other.
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
169
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
170 Phase-Divergence
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
171 ##################
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
172
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
173 Basics
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
174 ******
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
175
5493
1a7bb3ab027e unstable-list: add basic section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5492
diff changeset
176
1a7bb3ab027e unstable-list: add basic section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5492
diff changeset
177 It appears when a rewritten changeset got published. A phase-divergent changeset
1a7bb3ab027e unstable-list: add basic section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5492
diff changeset
178 has a public predecessor.
1a7bb3ab027e unstable-list: add basic section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5492
diff changeset
179
5494
ac7cb1b67c9b unstable-list: simplify the basic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5493
diff changeset
180 Solving phase divergence is done by extracting the changes made between the
ac7cb1b67c9b unstable-list: simplify the basic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5493
diff changeset
181 public predecessors and the latest evolution of the changesets into a new
ac7cb1b67c9b unstable-list: simplify the basic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5493
diff changeset
182 changesets, descendants of the public prédecessors.
5493
1a7bb3ab027e unstable-list: add basic section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5492
diff changeset
183
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
184 Cause of trouble
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
185 ****************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
186
5495
d3cf24afa620 unstable-list: add cause-of-trouble section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5494
diff changeset
187 It can appear if a user locally change the phase of an obsolete changeset
d3cf24afa620 unstable-list: add cause-of-trouble section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5494
diff changeset
188 (which has successors) to public.
d3cf24afa620 unstable-list: add cause-of-trouble section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5494
diff changeset
189
d3cf24afa620 unstable-list: add cause-of-trouble section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5494
diff changeset
190 Phase-divergence can also happens when the users rewrite draft changeset that got
d3cf24afa620 unstable-list: add cause-of-trouble section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5494
diff changeset
191 published in another repository. The phase divergence then "discovered" when the
d3cf24afa620 unstable-list: add cause-of-trouble section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5494
diff changeset
192 publishing information of the predecessors is pulled in the local repository.
d3cf24afa620 unstable-list: add cause-of-trouble section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5494
diff changeset
193
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
194 Source of Complexity
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
195 ********************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
196
5497
e7b70fe1297a unstable-list: add source-of-complexity for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5496
diff changeset
197 * public version is a merge
5498
f5d44464d72e unstable-list: expand and clarify the source of complexity for phase-div
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5497
diff changeset
198 * phase-divergent changeset is a merge
f5d44464d72e unstable-list: expand and clarify the source of complexity for phase-div
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5497
diff changeset
199 * public version was split (linear, over multiple topo branches, etc…)
f5d44464d72e unstable-list: expand and clarify the source of complexity for phase-div
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5497
diff changeset
200 * phase-divergent version was folded with others
5497
e7b70fe1297a unstable-list: add source-of-complexity for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5496
diff changeset
201 * rebasing might lead to conflict.
e7b70fe1297a unstable-list: add source-of-complexity for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5496
diff changeset
202
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
203 Details of Sub cases
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
204 ********************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
205
5505
c7a5133e4a7c unstable-list: add local table of content of each details section
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5504
diff changeset
206 .. contents::
c7a5133e4a7c unstable-list: add local table of content of each details section
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5504
diff changeset
207 :local:
c7a5133e4a7c unstable-list: add local table of content of each details section
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5504
diff changeset
208
5499
fb5a675f9676 unstable-list: mark the subsection as yet to document
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5498
diff changeset
209 #TODO: yet to document
fb5a675f9676 unstable-list: mark the subsection as yet to document
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5498
diff changeset
210
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
211 Content-Divergence
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
212 ##################
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
213
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
214 Basics
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
215 ******
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
216
5490
8f9dd2414416 unstable-list: add basic description of content divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5489
diff changeset
217
8f9dd2414416 unstable-list: add basic description of content divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5489
diff changeset
218 Independent rewrites of same changeset leads to content-divergence. So an
8f9dd2414416 unstable-list: add basic description of content divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5489
diff changeset
219 obsolete changeset have multiple "sets" of successors. And the content-divergent
8f9dd2414416 unstable-list: add basic description of content divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5489
diff changeset
220 changeset have some predecessors in common without the situation being the
8f9dd2414416 unstable-list: add basic description of content divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5489
diff changeset
221 result of a split.
8f9dd2414416 unstable-list: add basic description of content divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5489
diff changeset
222
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
223 To stabilise the situation, we need to "merge" the changes introduced in each
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
224 side of the divergence and create a new changeset, that will supersede both of
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
225 the unstable one. The merged information can be both about file content and
5490
8f9dd2414416 unstable-list: add basic description of content divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5489
diff changeset
226 metadata (author, parent, etc).
8f9dd2414416 unstable-list: add basic description of content divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5489
diff changeset
227
8f9dd2414416 unstable-list: add basic description of content divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5489
diff changeset
228 In practice there are a lot of corner case where this is "not that simple".
8f9dd2414416 unstable-list: add basic description of content divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5489
diff changeset
229
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
230 Cause of trouble
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
231 ****************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
232
5500
43eb23c28782 unstable-list: add cause-of-trouble for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5499
diff changeset
233 It can appear locally if a user independently rewrite the same changeset multiple
43eb23c28782 unstable-list: add cause-of-trouble for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5499
diff changeset
234 times.
43eb23c28782 unstable-list: add cause-of-trouble for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5499
diff changeset
235
43eb23c28782 unstable-list: add cause-of-trouble for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5499
diff changeset
236 Content-divergence can also happens when the users rewrite draft changesets that got
43eb23c28782 unstable-list: add cause-of-trouble for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5499
diff changeset
237 rewritten in another repository as well. The content divergence then "revealed"
43eb23c28782 unstable-list: add cause-of-trouble for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5499
diff changeset
238 when the rewriting information is shared (pulled/pushed) with another repository.
5491
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
239
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
240 Source of Complexity
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
241 ********************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
242
5491
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
243
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
244 Before we perform a 3-way merge between the divergent changesets and common
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
245 predecessor as base, there are some situations we need to take care of, like:
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
246
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
247 * if divergent changesets moved, check which side moved in which direction,
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
248 and proceed accordingly
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
249 * they moved on different unrelated branches
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
250 * divergent changeset can be orphan as well
5491
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
251 * one side of divergence is in public phase
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
252
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
253 Details of Sub cases
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
254 ********************
5505
c7a5133e4a7c unstable-list: add local table of content of each details section
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5504
diff changeset
255
c7a5133e4a7c unstable-list: add local table of content of each details section
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5504
diff changeset
256 .. contents::
c7a5133e4a7c unstable-list: add local table of content of each details section
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5504
diff changeset
257 :local: