annotate docs/troubles-handling.rst @ 5978:bf48247af25a stable

tests: demonstrate that touch can lose files (issue6416) This commit also includes a test of how copies are handled in the touched merge commit.
author Martin von Zweigbergk <martinvonz@google.com>
date Mon, 05 Oct 2020 09:02:21 -0700
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.