annotate docs/troubles-handling.rst @ 5486:381df06460e8

unstable-list: add list the source of complexity during resolution All I and Sushil could think about.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Fri, 14 Aug 2020 18:10:10 +0200
parents 457d8003e840
children 7c543787d5c6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
1 .. 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
2 .. 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
3
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
4 -----------------------------------------------------------
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
5 Possible troubles in rewriting history and their resolution
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
6 -----------------------------------------------------------
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
7
5483
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
8 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
9 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
10
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
11 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
12 cover through the technical aspects of each "instability" a changeset can get
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
13 into. A aims at building an exhaustive list of each cases and sub-cases and the
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
14 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
15
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
16 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
17 unstable.
e82d336bf31e unstable-list: add an introduction text
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5482
diff changeset
18
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
19 Orphan
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
20 #########
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
21
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
22 Basics
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
23 ******
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
24
5484
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
25 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
26
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
27 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
28 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
29
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
30 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
31 "stabilised" fist.
e3302ad5ad77 unstable-list: add the basic about orphan changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5483
diff changeset
32
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
33 Cause of trouble
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
34 ****************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
35
5485
457d8003e840 unstable-list: add information about when/why orphan appears
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5484
diff changeset
36 Orphan can appears because the use locally rewrite changeset with descendants.
457d8003e840 unstable-list: add information about when/why orphan appears
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5484
diff changeset
37 In this case the orphan are created when the command run.
457d8003e840 unstable-list: add information about when/why orphan appears
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5484
diff changeset
38
457d8003e840 unstable-list: add information about when/why orphan appears
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5484
diff changeset
39 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
40 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
41 obsolescence information of the ancestors is pulled in the local repository.
457d8003e840 unstable-list: add information about when/why orphan appears
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5484
diff changeset
42
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
43 Source of Complexity
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
44 ********************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
45
5486
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
46 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
47 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
48
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
49 * 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
50 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
51 * 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
52 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
53 * 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
54 * 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
55 variants:
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
56 * successors could be linear of spread accross multiple branches,
381df06460e8 unstable-list: add list the source of complexity during resolution
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 5485
diff changeset
57 * 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
58 * 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
59 * 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
60 * 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
61
5482
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
62 Details of Sub cases
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
63 ********************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
64
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
65 Phase-Divergence
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
66 ##################
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
67
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
68 Basics
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
69 ******
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
70
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
71 Cause of trouble
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
72 ****************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
73
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
74 Source of Complexity
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
75 ********************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
76
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
77 Details of Sub cases
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
78 ********************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
79
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
80 Content-Divergence
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
81 ##################
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
82
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
83 Basics
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
84 ******
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
85
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
86 Cause of trouble
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
87 ****************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
88
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
89 Source of Complexity
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
90 ********************
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
91
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
92 Details of Sub cases
3435822cd758 doc: add the bases of a developer doc for instability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
93 ********************