annotate docs/troubles-handling.rst @ 5917:94aed9c7ce69 stable

next: refactor two if blocks into an if-elif block We already checked the value of `needevolve and opts['evolve']` in the first if block above. In the first one it need to be True, in the second it needs to be False for the statements to execute. Since not(a or b) = not a and not b, we can join the second if block to the first one with an elif while dropping the explicit check. For me, this works better, because we're doing the same thing in both of these blocks (checking if working copy is dirty or not).
author Anton Shestakov <av6@dwimlabs.net>
date Sat, 15 May 2021 20:40:19 +0800
parents 43a5371fa669
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
1 ###########################################################
5503
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
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
3 ###########################################################
5503
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
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
22 ******
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
23 Orphan
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
24 ******
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
25
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
26 Basics
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
27 ======
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
28
5484
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
29 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
30
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
31 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
32 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
33
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
34 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
35 "stabilised" fist.
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
36
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
37 Cause of trouble
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
38 ================
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
39
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
40 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
41 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
42 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
43
457d8003e840 unstable-list: add information about when/why orphan appears
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5484
diff changeset
44 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
45 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
46 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
47 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
48
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
49 Source of Complexity
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
50 ====================
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
51
5486
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
52 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
53 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
54
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
55 * 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
56 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
57 * 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
58 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
59 * 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
60 * 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
61 variants:
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
62
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
63 * 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
64 * 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
65 * 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
66 * 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
67 * 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
68
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
69 Details of Sub cases
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
70 ====================
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
71
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
72 .. 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
73 :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
74
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
75 O-A: Linear changeset (one parent)
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
76 ----------------------------------
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
77
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 O-A1: parent has a single successors
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
79 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
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
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
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
82 **Stabilisation Strategy**
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
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
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
88 **Current Support Level**
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
89
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
90 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
91
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
92 O-A2: parent is pruned (no successors)
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
93 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5488
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
94
5584
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
95 Find nearest "not-pruned" ancestor and treat it (or its successor, if apply) as
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
96 a resolution parent. (re-run Orphan resolution starting from these parent).
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
97 In some cases, there can be multiple "not-pruned" ancestor and it could be ambiguous
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
98 for us to decide which one to pick.
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
99
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
100 O-A2.1: set of "not-pruned" ancestor has single head
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
101 """"""""""""""""""""""""""""""""""""""""""""""""""""
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
102
5488
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
103
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
104 **Stabilisation Strategy**
5488
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
105
5584
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
106 This comes under `O-A3` and `O-A4` cases (since we re-run orphan resolution
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
107 assuming "not-pruned" ancestor as parent)
5488
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
108
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
109 **Current Support Level**
5488
9920e8b4756d unstable-list: add a entry about pruned parent
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5487
diff changeset
110
5584
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
111 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
112
5584
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
113 O-A2.2: set of "not-pruned" ancestor has multiple heads
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
114 """""""""""""""""""""""""""""""""""""""""""""""""""""""
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
115
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
116 If a merge is pruned, we have multiple "not-pruned" ancestor for its immediate
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
117 child to stabilise.
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
118
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
119
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
120 **Stabilisation Strategy**
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
121
5584
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
122 XXX: yet to decide resolution
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
123
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
124 **Current Support Level**
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
125
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
126 O-A3: parent has multiple successors sets (divergence case)
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
127 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
128
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
129
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
130 **Stabilisation Strategy**
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
131
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
132 XXX: yet to decide resolution
7f9149ccbf42 unstable-list: add new subsections for orphan when parent is pruned
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5583
diff changeset
133
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
134 **Current Support Level**
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
135
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
136 O-A4: parent is split into multiple successors
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
137 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
138
5583
72a4aa791d97 unstable-list: some minor updates
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5506
diff changeset
139 O-A4.1: successors of parent are all on the same topological branch
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
140 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
141
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
142
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
143 **Stabilisation Strategy**
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
144
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
145 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
146
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
147 **Current Support Level**
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
148
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
149 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
150
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
151 O-A4.2: parent is split into multiple topological branches (at least 2 heads)
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
152 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
153
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
154 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
155
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
156 **Stabilisation Strategy**
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
157
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
158 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
159
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
160 (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
161
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
162 **Current Support Level**
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
163
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
164 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
165
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
166 O-M: Parent are Merge (multiple parent)
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
167 ---------------------------------------
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
168
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
169 O-M1: Only one parent is obsolete
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
170 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
171
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
172 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
173 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
174 the other parent).
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
175
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
176 O-M2: both parent are obsolete
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
177 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5489
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
178
8b7036384f77 unstable-list: more entry for orphan SPLIT ME
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5488
diff changeset
179 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
180
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
181 ****************
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
182 Phase-Divergence
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
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
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
185 Basics
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
186 ======
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
187
5493
1a7bb3ab027e unstable-list: add basic section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5492
diff changeset
188
1a7bb3ab027e unstable-list: add basic section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5492
diff changeset
189 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
190 has a public predecessor.
1a7bb3ab027e unstable-list: add basic section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5492
diff changeset
191
5494
ac7cb1b67c9b unstable-list: simplify the basic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5493
diff changeset
192 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
193 public predecessors and the latest evolution of the changesets into a new
5583
72a4aa791d97 unstable-list: some minor updates
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5506
diff changeset
194 changesets, descendants of the public predecessors.
5493
1a7bb3ab027e unstable-list: add basic section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5492
diff changeset
195
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
196 Cause of trouble
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
197 ================
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
198
5495
d3cf24afa620 unstable-list: add cause-of-trouble section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5494
diff changeset
199 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
200 (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
201
d3cf24afa620 unstable-list: add cause-of-trouble section for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5494
diff changeset
202 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
203 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
204 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
205
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
206 Source of Complexity
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
207 ====================
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
208
5497
e7b70fe1297a unstable-list: add source-of-complexity for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5496
diff changeset
209 * 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
210 * 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
211 * 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
212 * 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
213 * rebasing might lead to conflict.
e7b70fe1297a unstable-list: add source-of-complexity for phase-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5496
diff changeset
214
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
215 Details of Sub cases
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
216 ====================
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
217
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
218 .. 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
219 :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
220
5499
fb5a675f9676 unstable-list: mark the subsection as yet to document
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5498
diff changeset
221 #TODO: yet to document
fb5a675f9676 unstable-list: mark the subsection as yet to document
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5498
diff changeset
222
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
223 ******************
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
224 Content-Divergence
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
225 ******************
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
226
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
227 Basics
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
228 ======
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
229
5490
8f9dd2414416 unstable-list: add basic description of content divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5489
diff changeset
230
8f9dd2414416 unstable-list: add basic description of content divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5489
diff changeset
231 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
232 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
233 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
234 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
235
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
236 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
237 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
238 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
239 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
240
8f9dd2414416 unstable-list: add basic description of content divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5489
diff changeset
241 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
242
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
243 Cause of trouble
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
244 ================
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
245
5500
43eb23c28782 unstable-list: add cause-of-trouble for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5499
diff changeset
246 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
247 times.
43eb23c28782 unstable-list: add cause-of-trouble for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5499
diff changeset
248
43eb23c28782 unstable-list: add cause-of-trouble for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5499
diff changeset
249 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
250 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
251 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
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 Source of Complexity
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
254 ====================
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
255
5491
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
256
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
257 Before we perform a 3-way merge between the divergent changesets and common
5583
72a4aa791d97 unstable-list: some minor updates
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5506
diff changeset
258 predecessor (which acts as the 3-way merge base), there are some situations we need to take care of, like:
5491
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
259
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
260 * 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
261 and proceed accordingly
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
262 * they moved on different unrelated branches
5492
76963e896ea6 unstable-list: some cleanup
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5491
diff changeset
263 * 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
264 * one side of divergence is in public phase
5588
5cbb1f356137 unstable-list: add split and fold in content-divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5587
diff changeset
265 * divergent changeset is part of a split or fold
5491
1a238a9313da unstable-list: some details about phase divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5490
diff changeset
266
5585
1bc58c156c89 unstable-list: add a "details of resolution" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5584
diff changeset
267 Details of resolution
1bc58c156c89 unstable-list: add a "details of resolution" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5584
diff changeset
268 =====================
1bc58c156c89 unstable-list: add a "details of resolution" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5584
diff changeset
269
1bc58c156c89 unstable-list: add a "details of resolution" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5584
diff changeset
270 Resolution of content-divergence can be understand by dividing it in stages:
1bc58c156c89 unstable-list: add a "details of resolution" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5584
diff changeset
271
5588
5cbb1f356137 unstable-list: add split and fold in content-divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5587
diff changeset
272 Special case: If one of the divergent changeset is part of a split or fold, we don't handle
5cbb1f356137 unstable-list: add split and fold in content-divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5587
diff changeset
273 it right now. But when we are going to support it, it will probably have its own logic and
5cbb1f356137 unstable-list: add split and fold in content-divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5587
diff changeset
274 seperate from generic resolution.
5cbb1f356137 unstable-list: add split and fold in content-divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5587
diff changeset
275
5cbb1f356137 unstable-list: add split and fold in content-divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5587
diff changeset
276 Generic resolution:
5cbb1f356137 unstable-list: add split and fold in content-divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5587
diff changeset
277
5585
1bc58c156c89 unstable-list: add a "details of resolution" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5584
diff changeset
278 The first stage of solving content-divergence is to find the changeset where the resolution
1bc58c156c89 unstable-list: add a "details of resolution" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5584
diff changeset
279 changeset will be based on (which we call the resolution parent or the target parent) and
1bc58c156c89 unstable-list: add a "details of resolution" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5584
diff changeset
280 relocate the divergent changesets on the resolution parent, if apply.
1bc58c156c89 unstable-list: add a "details of resolution" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5584
diff changeset
281
1bc58c156c89 unstable-list: add a "details of resolution" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5584
diff changeset
282 In second stage, we deal with merging files of two divergent changesets using the 3-way merge.
1bc58c156c89 unstable-list: add a "details of resolution" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5584
diff changeset
283
1bc58c156c89 unstable-list: add a "details of resolution" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5584
diff changeset
284 In third stage, we deal with merging the metadata changes and creating the resultant changeset.
1bc58c156c89 unstable-list: add a "details of resolution" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5584
diff changeset
285
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
286 Details of Sub cases
5506
c408a31d8883 unstable-list: fix title level
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5505
diff changeset
287 ====================
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
288
c7a5133e4a7c unstable-list: add local table of content of each details section
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5504
diff changeset
289 .. 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
290 :local:
5586
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
291
5588
5cbb1f356137 unstable-list: add split and fold in content-divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5587
diff changeset
292 D-S: One of the divergent changeset is part of a split or fold
5cbb1f356137 unstable-list: add split and fold in content-divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5587
diff changeset
293 --------------------------------------------------------------
5cbb1f356137 unstable-list: add split and fold in content-divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5587
diff changeset
294
5cbb1f356137 unstable-list: add split and fold in content-divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5587
diff changeset
295 XXX: yet to decide resolution
5cbb1f356137 unstable-list: add split and fold in content-divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5587
diff changeset
296
5586
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
297 D-A: Finding the resolution parent
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
298 ----------------------------------
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
299
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
300 This section is responsible to decide where the resultant changeset should live. If it's unable to
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
301 find the resolution parent, we abort the content-divergence resolution. Following are the possible
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
302 situations between the two divergent changesets and current support for each situation.
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
303
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
304 D-A1: one of the divergent changeset is public
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
305 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
306
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
307 Set the parent of public changeset as resolution parent.
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
308
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
309 Note: After we resolve content-divergence in this case, the resultant changeset will be
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
310 phase-divergent with the public side; so then we resolve phase-divergence to completely
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
311 resolve the instability.
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
312
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
313 D-A2: both are on the same parent
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
314 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
315
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
316 Set the parent (or its successor, if apply) as resolution parent.
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
317
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
318 D-A3: both are on different parents
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
319 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
320
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
321 D-A3.1: one side moved
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
322 """"""""""""""""""""""
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
323
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
324 Set the parent of moved changeset as resolution parent.
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
325
5784
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
326 Special-case: When parent of moved one is obsolete with a successor
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
327 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
328 By default, evolution will set the successor of obsolete parent as resolution
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
329 parent and will relocate both the divergent cset on it to perform 3-way merge.
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
330 But if the following config is set to True, it will set the obsolete parent as
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
331 resolution parent, so now resolved cset will be orphan, as it will be based on
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
332 the obsolete parent. Some users might not like the evolve to automatically
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
333 resovle this orphan instability as well (while they only wanted to resolve the
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
334 divergence), which is why we are providing this config.
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
335
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
336 `experimental.evolution.divergence-resolution-minimal=False(default)`
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
337
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
338 (The default resolution that automatically evolve the orphan instability as well
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
339 seems the best approach for now, but let's also gather user feedback, then we can decide accordingly)
43a5371fa669 divergence-resolution: add support and doc for a special case in divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5607
diff changeset
340
5586
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
341 D-A3.2: both moved forward; same branch
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
342 """""""""""""""""""""""""""""""""""""""
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
343
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
344 Set the parent of ahead one as resolution parent.
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
345 As most obvious is that, ahead one has the latest changes.
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
346
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
347 D-A3.3: both moved backward; same branch
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
348 """"""""""""""""""""""""""""""""""""""""
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
349
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
350 XXX: yet to decide resolution
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
351
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
352 D-A3.4: both moved opposite; same branch
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
353 """"""""""""""""""""""""""""""""""""""""
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
354
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
355 XXX: yet to decide resolution
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
356
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
357 D-A3.5: both moved; one moved on different unrelated branch
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
358 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
359
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
360 XXX: yet to decide resolution
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
361
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
362 D-A3.6: both moved on two different unrelated branch
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
363 """"""""""""""""""""""""""""""""""""""""""""""""""""
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
364
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
365 XXX: yet to decide resolution
f701c75e53f6 unstable-list: add "finding the resolution parent" section
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5585
diff changeset
366
5587
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
367
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
368 D-B: Merging files of divergent changesets
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
369 ------------------------------------------
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
370
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
371 While merging the files, there are few sub-cases that could arise
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
372 like file content conflict, rename information conflict, multiple newest
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
373 predecessor. Let's see them in detail.
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
374
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
375 D-B1: File content conflict
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
376 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
377
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
378 If there is a conflict in merging content of files we let the user to
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
379 resolve the conflict.
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
380
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
381 D-B2: Rename information conflict
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
382 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
383
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
384 XXX: yet to explore
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
385
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
386 D-B3: Multiple newest predecessor
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
387 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
388
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
389 XXX: yet to explore
c2e71fc0efeb unstable-list: add "merging files" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5586
diff changeset
390
5589
cbc886623dc1 unstable-list: add "merging metadata" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5588
diff changeset
391
cbc886623dc1 unstable-list: add "merging metadata" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5588
diff changeset
392 D-C: Merging metadata changes and create resultant changeset
cbc886623dc1 unstable-list: add "merging metadata" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5588
diff changeset
393 ------------------------------------------------------------
cbc886623dc1 unstable-list: add "merging metadata" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5588
diff changeset
394
cbc886623dc1 unstable-list: add "merging metadata" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5588
diff changeset
395 While merging the metadata, there are few sub-cases that could arise
cbc886623dc1 unstable-list: add "merging metadata" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5588
diff changeset
396 like branch name conflict, commit message conflict, commit author conflict.
cbc886623dc1 unstable-list: add "merging metadata" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5588
diff changeset
397 If everything goes fine, we create the resultant changeset as a resolution of
cbc886623dc1 unstable-list: add "merging metadata" section for content-divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5588
diff changeset
398 content-divergence.
5605
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
399
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
400 D-C1: Branch name conflict
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
401 ^^^^^^^^^^^^^^^^^^^^^^^^^^
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
402
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
403 **Stabilisation Strategy**
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
404
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
405 Merge branch names using the 3-way merge. If unable to merge,
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
406 we prompt the user to select a branch.
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
407
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
408 Possible improvement: If we are solving a long streak of divergence, each
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
409 side having the same branch, we can probably infer the correct resolution
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
410 from previous resolution.
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
411
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
412 **Current Support Level**
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
413
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
414 Good: current implementation is expected to perform the planned stabilisation.
af1d71f3a028 unstable-list: add an item for solving named branch divergence
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5589
diff changeset
415
5606
4c2633a8d4d0 unstable-list: add an item about divergence on changeset description
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5605
diff changeset
416 D-C2: Commit description conflict
4c2633a8d4d0 unstable-list: add an item about divergence on changeset description
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5605
diff changeset
417 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4c2633a8d4d0 unstable-list: add an item about divergence on changeset description
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5605
diff changeset
418
4c2633a8d4d0 unstable-list: add an item about divergence on changeset description
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5605
diff changeset
419 **Stabilisation Strategy**
4c2633a8d4d0 unstable-list: add an item about divergence on changeset description
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5605
diff changeset
420
4c2633a8d4d0 unstable-list: add an item about divergence on changeset description
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5605
diff changeset
421 Merge commit description using text merge tool from user.
4c2633a8d4d0 unstable-list: add an item about divergence on changeset description
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5605
diff changeset
422
4c2633a8d4d0 unstable-list: add an item about divergence on changeset description
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5605
diff changeset
423 Possible improvement: They are currently no way to "interrupt" and resume that
4c2633a8d4d0 unstable-list: add an item about divergence on changeset description
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5605
diff changeset
424 conflict resolution. Having some way to do that would be nice.
4c2633a8d4d0 unstable-list: add an item about divergence on changeset description
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5605
diff changeset
425
4c2633a8d4d0 unstable-list: add an item about divergence on changeset description
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5605
diff changeset
426 **Current Support Level**
4c2633a8d4d0 unstable-list: add an item about divergence on changeset description
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5605
diff changeset
427
4c2633a8d4d0 unstable-list: add an item about divergence on changeset description
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5605
diff changeset
428 Good: current implementation is expected to perform the planned stabilisation.
5607
db1dd9fec06c unstable-list: add an item about author divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5606
diff changeset
429
db1dd9fec06c unstable-list: add an item about author divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5606
diff changeset
430 D-C3: Commit author conflict
db1dd9fec06c unstable-list: add an item about author divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5606
diff changeset
431 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
db1dd9fec06c unstable-list: add an item about author divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5606
diff changeset
432
db1dd9fec06c unstable-list: add an item about author divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5606
diff changeset
433 **Stabilisation Strategy**
db1dd9fec06c unstable-list: add an item about author divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5606
diff changeset
434
db1dd9fec06c unstable-list: add an item about author divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5606
diff changeset
435 Merge authors using 3-way merge. If unable to merge we concatenate
db1dd9fec06c unstable-list: add an item about author divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5606
diff changeset
436 the two, separated by comma. (for e.g. "John Doe, Malcolm X")
db1dd9fec06c unstable-list: add an item about author divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5606
diff changeset
437
db1dd9fec06c unstable-list: add an item about author divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5606
diff changeset
438 **Current Support Level**
db1dd9fec06c unstable-list: add an item about author divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5606
diff changeset
439
db1dd9fec06c unstable-list: add an item about author divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents: 5606
diff changeset
440 Good: current implementation is expected to perform the planned stabilisation.