author | Martin von Zweigbergk <martinvonz@google.com> |
Mon, 11 Mar 2019 23:57:12 -0700 | |
changeset 4558 | 63148e999562 |
parent 4554 | 093df66127ec |
child 4563 | 8b3781d9a616 |
permissions | -rw-r--r-- |
3461
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
1 |
# Copyright 2011 Peter Arrenbrecht <peter.arrenbrecht@gmail.com> |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
2 |
# Logilab SA <contact@logilab.fr> |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
3 |
# Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
4 |
# Patrick Mezard <patrick@mezard.eu> |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
5 |
# |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
6 |
# This software may be used and distributed according to the terms of the |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
7 |
# GNU General Public License version 2 or any later version. |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
8 |
|
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
9 |
"""logic related to hg evolve command""" |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
10 |
|
3464
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
11 |
import collections |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
12 |
import re |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
13 |
|
3461
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
14 |
from mercurial import ( |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
15 |
bookmarks as bookmarksmod, |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
16 |
cmdutil, |
3579
3a4552b30ba8
compat: use mergetoolopts from commands.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3577
diff
changeset
|
17 |
commands, |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
18 |
context, |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
19 |
copies, |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
20 |
error, |
4382
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
21 |
encoding, |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
22 |
hg, |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
23 |
merge, |
4311
8aa28e68ac44
evolve: detect unresolved conflict during evolve --continue (issue5966)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4297
diff
changeset
|
24 |
mergeutil, |
3977
a0a4f4de9ea3
evolvecmd: import mercurial.node module as nodemod
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3927
diff
changeset
|
25 |
node as nodemod, |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
26 |
obsolete, |
3697
6aff4bb3970d
compat: drop compatibility layer for successorssets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3694
diff
changeset
|
27 |
obsutil, |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
28 |
phases, |
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
29 |
repair, |
3464
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
30 |
scmutil, |
3801
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
31 |
simplemerge, |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
32 |
util, |
3461
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
33 |
) |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
34 |
|
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
35 |
from mercurial.i18n import _ |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
36 |
|
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
37 |
from . import ( |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
38 |
cmdrewrite, |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
39 |
compat, |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
40 |
exthelper, |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
41 |
rewriteutil, |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
42 |
state, |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
43 |
utility, |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
44 |
) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
45 |
|
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
46 |
TROUBLES = compat.TROUBLES |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
47 |
shorttemplate = utility.shorttemplate |
4153
e1f6f9da82c1
utility: add a template alias that will be used in evolve msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4122
diff
changeset
|
48 |
stacktemplate = utility.stacktemplate |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
49 |
_bookmarksupdater = rewriteutil.bookmarksupdater |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
50 |
sha1re = re.compile(r'\b[0-9a-f]{6,40}\b') |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
51 |
|
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
52 |
eh = exthelper.exthelper() |
3579
3a4552b30ba8
compat: use mergetoolopts from commands.py
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3577
diff
changeset
|
53 |
mergetoolopts = commands.mergetoolopts |
3461
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
54 |
|
3821
f67ac33c07d2
evolve: rename help topic evolve.interrupted-evolve to evolve.interrupted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3811
diff
changeset
|
55 |
abortmessage = _("see `hg help evolve.interrupted`\n") |
3796
ededd22e7c7b
evolve: show `hg help evolve.interrupted-evolve` in error when conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3795
diff
changeset
|
56 |
|
3478
4a1ccae58323
evolvecmd: pass evolvestate object to _solve* functions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3477
diff
changeset
|
57 |
def _solveone(ui, repo, ctx, evolvestate, dryrun, confirm, |
4155
cc3a0b13ae57
evolve: use stack alias s# in `hg evolve` msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4154
diff
changeset
|
58 |
progresscb, category, lastsolved=None, stacktmplt=False): |
3461
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
59 |
"""Resolve the troubles affecting one revision |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
60 |
|
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
61 |
returns a tuple (bool, newnode) where, |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
62 |
bool: a boolean value indicating whether the instability was solved |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
63 |
newnode: if bool is True, then the newnode of the resultant commit |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
64 |
formed. newnode can be node, when resolution led to no new |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
65 |
commit. If bool is False, this is ".". |
3461
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
66 |
""" |
4155
cc3a0b13ae57
evolve: use stack alias s# in `hg evolve` msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4154
diff
changeset
|
67 |
displayer = None |
cc3a0b13ae57
evolve: use stack alias s# in `hg evolve` msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4154
diff
changeset
|
68 |
if stacktmplt: |
cc3a0b13ae57
evolve: use stack alias s# in `hg evolve` msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4154
diff
changeset
|
69 |
displayer = compat.changesetdisplayer(ui, repo, |
cc3a0b13ae57
evolve: use stack alias s# in `hg evolve` msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4154
diff
changeset
|
70 |
{'template': stacktemplate}) |
cc3a0b13ae57
evolve: use stack alias s# in `hg evolve` msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4154
diff
changeset
|
71 |
else: |
cc3a0b13ae57
evolve: use stack alias s# in `hg evolve` msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4154
diff
changeset
|
72 |
displayer = compat.changesetdisplayer(ui, repo, |
cc3a0b13ae57
evolve: use stack alias s# in `hg evolve` msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4154
diff
changeset
|
73 |
{'template': shorttemplate}) |
4375
07ccf1686024
evolve: use context managers for locks and transaction
Martin von Zweigbergk <martinvonz@google.com>
parents:
4348
diff
changeset
|
74 |
with repo.wlock(), repo.lock(), repo.transaction("evolve"): |
3461
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
75 |
if 'orphan' == category: |
4154
dd81d7f43857
evolve: extract displayer to _solveone()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4153
diff
changeset
|
76 |
result = _solveunstable(ui, repo, ctx, evolvestate, displayer, |
dd81d7f43857
evolve: extract displayer to _solveone()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4153
diff
changeset
|
77 |
dryrun, confirm, progresscb, |
dd81d7f43857
evolve: extract displayer to _solveone()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4153
diff
changeset
|
78 |
lastsolved=lastsolved) |
3461
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
79 |
elif 'phasedivergent' == category: |
3609
1c8dec54450a
evolve: replace bumped in function name to phasedivergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3608
diff
changeset
|
80 |
result = _solvephasedivergence(ui, repo, ctx, evolvestate, |
4154
dd81d7f43857
evolve: extract displayer to _solveone()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4153
diff
changeset
|
81 |
displayer, dryrun, confirm, |
dd81d7f43857
evolve: extract displayer to _solveone()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4153
diff
changeset
|
82 |
progresscb) |
3461
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
83 |
elif 'contentdivergent' == category: |
4154
dd81d7f43857
evolve: extract displayer to _solveone()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4153
diff
changeset
|
84 |
result = _solvedivergent(ui, repo, ctx, evolvestate, displayer, |
3478
4a1ccae58323
evolvecmd: pass evolvestate object to _solve* functions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3477
diff
changeset
|
85 |
dryrun, confirm, progresscb) |
3461
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
86 |
else: |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
87 |
assert False, "unknown trouble category: %s" % (category) |
6475d2046f87
evolvecmd: introduce a new module to handle `hg evolve` related code
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
88 |
return result |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
89 |
|
4154
dd81d7f43857
evolve: extract displayer to _solveone()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4153
diff
changeset
|
90 |
def _solveunstable(ui, repo, orig, evolvestate, displayer, dryrun=False, |
dd81d7f43857
evolve: extract displayer to _solveone()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4153
diff
changeset
|
91 |
confirm=False, progresscb=None, lastsolved=None): |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
92 |
""" Tries to stabilize the changeset orig which is orphan. |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
93 |
|
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
94 |
returns a tuple (bool, newnode) where, |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
95 |
bool: a boolean value indicating whether the instability was solved |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
96 |
newnode: if bool is True, then the newnode of the resultant commit |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
97 |
formed. newnode can be node, when resolution led to no new |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
98 |
commit. If bool is False, this is ".". |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
99 |
""" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
100 |
pctx = orig.p1() |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
101 |
keepbranch = orig.p1().branch() != orig.branch() |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
102 |
if len(orig.parents()) == 2: |
3545
6aff754c2457
evolve: make sure we consider all cases in if-else
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3543
diff
changeset
|
103 |
p1obs = orig.p1().obsolete() |
6aff754c2457
evolve: make sure we consider all cases in if-else
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3543
diff
changeset
|
104 |
p2obs = orig.p2().obsolete() |
6aff754c2457
evolve: make sure we consider all cases in if-else
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3543
diff
changeset
|
105 |
if not p1obs and p2obs: |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
106 |
pctx = orig.p2() # second parent is obsolete ? |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
107 |
keepbranch = orig.p2().branch() != orig.branch() |
3545
6aff754c2457
evolve: make sure we consider all cases in if-else
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3543
diff
changeset
|
108 |
elif not p2obs and p1obs: |
6aff754c2457
evolve: make sure we consider all cases in if-else
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3543
diff
changeset
|
109 |
pass |
6aff754c2457
evolve: make sure we consider all cases in if-else
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3543
diff
changeset
|
110 |
else: |
3573
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
111 |
# store that we are resolving an orphan merge with both parents |
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
112 |
# obsolete and proceed with first parent |
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
113 |
evolvestate['orphanmerge'] = True |
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
114 |
# we should process the second parent first, so that in case of |
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
115 |
# no-conflicts the first parent is processed later and preserved as |
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
116 |
# first parent |
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
117 |
pctx = orig.p2() |
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
118 |
keepbranch = orig.p2().branch() != orig.branch() |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
119 |
|
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
120 |
if not pctx.obsolete(): |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
121 |
ui.warn(_("cannot solve instability of %s, skipping\n") % orig) |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
122 |
return (False, ".") |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
123 |
obs = pctx |
3697
6aff4bb3970d
compat: drop compatibility layer for successorssets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3694
diff
changeset
|
124 |
newer = obsutil.successorssets(repo, obs.node()) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
125 |
# search of a parent which is not killed |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
126 |
while not newer or newer == [()]: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
127 |
ui.debug("stabilize target %s is plain dead," |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
128 |
" trying to stabilize on its parent\n" % |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
129 |
obs) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
130 |
obs = obs.parents()[0] |
3697
6aff4bb3970d
compat: drop compatibility layer for successorssets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3694
diff
changeset
|
131 |
newer = obsutil.successorssets(repo, obs.node()) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
132 |
if len(newer) > 1: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
133 |
msg = _("skipping %s: divergent rewriting. can't choose " |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
134 |
"destination\n") % obs |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
135 |
ui.write_err(msg) |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
136 |
return (False, ".") |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
137 |
targets = newer[0] |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
138 |
assert targets |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
139 |
if len(targets) > 1: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
140 |
# split target, figure out which one to pick, are they all in line? |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
141 |
targetrevs = [repo[r].rev() for r in targets] |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
142 |
roots = repo.revs('roots(%ld)', targetrevs) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
143 |
heads = repo.revs('heads(%ld)', targetrevs) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
144 |
if len(roots) > 1 or len(heads) > 1: |
3582
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
145 |
cheader = _("ancestor '%s' split over multiple topological" |
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
146 |
" branches.\nchoose an evolve destination:") % orig |
3541
bc47c09c9782
evolve: prompt user to select destination for stabilization in case of split
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3529
diff
changeset
|
147 |
selectedrev = utility.revselectionprompt(ui, repo, list(heads), |
bc47c09c9782
evolve: prompt user to select destination for stabilization in case of split
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3529
diff
changeset
|
148 |
cheader) |
bc47c09c9782
evolve: prompt user to select destination for stabilization in case of split
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3529
diff
changeset
|
149 |
if selectedrev is None: |
3582
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
150 |
msg = _("could not solve instability, " |
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
151 |
"ambiguous destination: " |
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
152 |
"parent split across two branches\n") |
3541
bc47c09c9782
evolve: prompt user to select destination for stabilization in case of split
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3529
diff
changeset
|
153 |
ui.write_err(msg) |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
154 |
return (False, ".") |
3541
bc47c09c9782
evolve: prompt user to select destination for stabilization in case of split
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3529
diff
changeset
|
155 |
target = repo[selectedrev] |
bc47c09c9782
evolve: prompt user to select destination for stabilization in case of split
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3529
diff
changeset
|
156 |
else: |
bc47c09c9782
evolve: prompt user to select destination for stabilization in case of split
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3529
diff
changeset
|
157 |
target = repo[heads.first()] |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
158 |
else: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
159 |
target = targets[0] |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
160 |
target = repo[target] |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
161 |
if not ui.quiet or confirm: |
3501
7c8150697810
color: add some colors to evolve command itself
Boris Feld <boris.feld@octobus.net>
parents:
3495
diff
changeset
|
162 |
repo.ui.write(_('move:'), label='evolve.operation') |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
163 |
displayer.show(orig) |
4122
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
164 |
if lastsolved is None or target != repo[lastsolved]: |
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
165 |
repo.ui.write(_('atop:')) |
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
166 |
displayer.show(target) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
167 |
if confirm and ui.prompt('perform evolve? [Ny]', 'n') != 'y': |
4463
7d54a538dd1e
evolve: unindent some lines caught by flake8
Anton Shestakov <av6@dwimlabs.net>
parents:
4427
diff
changeset
|
168 |
raise error.Abort(_('evolve aborted by user')) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
169 |
if progresscb: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
170 |
progresscb() |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
171 |
todo = 'hg rebase -r %s -d %s\n' % (orig, target) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
172 |
if dryrun: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
173 |
repo.ui.write(todo) |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
174 |
return (False, ".") |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
175 |
else: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
176 |
repo.ui.note(todo) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
177 |
if progresscb: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
178 |
progresscb() |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
179 |
try: |
3638
7bc4a72b8a0b
evolve: add evolvestate as an argument to evolvecmd.relocate()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3636
diff
changeset
|
180 |
newid = relocate(repo, orig, target, evolvestate, pctx, |
7bc4a72b8a0b
evolve: add evolvestate as an argument to evolvecmd.relocate()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3636
diff
changeset
|
181 |
keepbranch, 'orphan') |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
182 |
return (True, newid) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
183 |
except MergeFailure: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
184 |
ops = {'current': orig.node()} |
3479
4b9fc8c85ee4
evolvecmd: use the evolvestate object passed as argument in _solveunstable
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3478
diff
changeset
|
185 |
evolvestate.addopts(ops) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
186 |
evolvestate.save() |
3852
629558d09898
evolve: raise error.InterventionRequired instead of Abort when conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3850
diff
changeset
|
187 |
raise error.InterventionRequired(_("fix conflicts and see `hg help " |
629558d09898
evolve: raise error.InterventionRequired instead of Abort when conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3850
diff
changeset
|
188 |
"evolve.interrupted`")) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
189 |
|
4154
dd81d7f43857
evolve: extract displayer to _solveone()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4153
diff
changeset
|
190 |
def _solvephasedivergence(ui, repo, bumped, evolvestate, displayer, |
dd81d7f43857
evolve: extract displayer to _solveone()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4153
diff
changeset
|
191 |
dryrun=False, confirm=False, progresscb=None): |
3609
1c8dec54450a
evolve: replace bumped in function name to phasedivergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3608
diff
changeset
|
192 |
"""Stabilize a phase divergent changeset |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
193 |
|
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
194 |
returns a tuple (bool, newnode) where, |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
195 |
bool: a boolean value indicating whether the instability was solved |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
196 |
newnode: if bool is True, then the newnode of the resultant commit |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
197 |
formed. newnode can be node, when resolution led to no new |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
198 |
commit. If bool is False, this is ".". |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
199 |
""" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
200 |
repo = repo.unfiltered() |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
201 |
bumped = repo[bumped.rev()] |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
202 |
# For now we deny bumped merge |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
203 |
if len(bumped.parents()) > 1: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
204 |
msg = _('skipping %s : we do not handle merge yet\n') % bumped |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
205 |
ui.write_err(msg) |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
206 |
return (False, ".") |
3506
6b4272bbb65d
evolve: update code for not implicitly converting ctx to revision
Boris Feld <boris.feld@octobus.net>
parents:
3503
diff
changeset
|
207 |
prec = repo.set('last(allprecursors(%d) and public())', bumped.rev()).next() |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
208 |
# For now we deny target merge |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
209 |
if len(prec.parents()) > 1: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
210 |
msg = _('skipping: %s: public version is a merge, ' |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
211 |
'this is not handled yet\n') % prec |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
212 |
ui.write_err(msg) |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
213 |
return (False, ".") |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
214 |
|
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
215 |
if not ui.quiet or confirm: |
3501
7c8150697810
color: add some colors to evolve command itself
Boris Feld <boris.feld@octobus.net>
parents:
3495
diff
changeset
|
216 |
repo.ui.write(_('recreate:'), label='evolve.operation') |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
217 |
displayer.show(bumped) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
218 |
repo.ui.write(_('atop:')) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
219 |
displayer.show(prec) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
220 |
if confirm and ui.prompt('perform evolve? [Ny]', 'n') != 'y': |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
221 |
raise error.Abort(_('evolve aborted by user')) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
222 |
if dryrun: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
223 |
todo = 'hg rebase --rev %s --dest %s;\n' % (bumped, prec.p1()) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
224 |
repo.ui.write(todo) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
225 |
repo.ui.write(('hg update %s;\n' % prec)) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
226 |
repo.ui.write(('hg revert --all --rev %s;\n' % bumped)) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
227 |
repo.ui.write(('hg commit --msg "%s update to %s"\n' % |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
228 |
(TROUBLES['PHASEDIVERGENT'], bumped))) |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
229 |
return (False, ".") |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
230 |
if progresscb: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
231 |
progresscb() |
3622
534af64b0107
evolvecmd: add a detailed comment and some newlines
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3616
diff
changeset
|
232 |
|
534af64b0107
evolvecmd: add a detailed comment and some newlines
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3616
diff
changeset
|
233 |
# Checking for whether the phase-divergent changeset has common parents as |
534af64b0107
evolvecmd: add a detailed comment and some newlines
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3616
diff
changeset
|
234 |
# it's precursors. Phase-divergent changeset and precursor having different |
4054
46cd437fd3d2
pick: fix last references of grab in code
Boris Feld <boris.feld@octobus.net>
parents:
3981
diff
changeset
|
235 |
# parents is a result of when the changeset is rebased, picked, histedit or |
3622
534af64b0107
evolvecmd: add a detailed comment and some newlines
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3616
diff
changeset
|
236 |
# evolved or any other operation which can change parent. In such cases, |
534af64b0107
evolvecmd: add a detailed comment and some newlines
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3616
diff
changeset
|
237 |
# when parents are not same, we first rebase the divergent changeset onto |
534af64b0107
evolvecmd: add a detailed comment and some newlines
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3616
diff
changeset
|
238 |
# parent or precursor and then perform later steps |
3506
6b4272bbb65d
evolve: update code for not implicitly converting ctx to revision
Boris Feld <boris.feld@octobus.net>
parents:
3503
diff
changeset
|
239 |
if not list(repo.set('parents(%d) and parents(%d)', bumped.rev(), prec.rev())): |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
240 |
# Need to rebase the changeset at the right place |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
241 |
repo.ui.status( |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
242 |
_('rebasing to destination parent: %s\n') % prec.p1()) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
243 |
try: |
4466
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
244 |
newnode = relocate(repo, bumped, prec.p1(), evolvestate, |
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
245 |
category='phasedivergent') |
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
246 |
if newnode is not None: |
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
247 |
new = repo[newnode] |
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
248 |
obsolete.createmarkers(repo, [(bumped, (new,))], |
3694
c0d5e0929f8b
compat: from compatibility layer for createmarkers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3676
diff
changeset
|
249 |
operation='evolve') |
4466
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
250 |
bumped = new |
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
251 |
evolvestate['temprevs'].append(newnode) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
252 |
except MergeFailure: |
3628
170b99a9c0b4
evolve: write data to evolvestate in case on conflicts in phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3627
diff
changeset
|
253 |
evolvestate['current'] = bumped.hex() |
3631
8db32b33cdf1
evolve: store the precursor of phase-divergent in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3630
diff
changeset
|
254 |
evolvestate['precursor'] = prec.hex() |
3628
170b99a9c0b4
evolve: write data to evolvestate in case on conflicts in phase-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3627
diff
changeset
|
255 |
evolvestate.save() |
3852
629558d09898
evolve: raise error.InterventionRequired instead of Abort when conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3850
diff
changeset
|
256 |
raise error.InterventionRequired(_("fix conflicts and see `hg help " |
629558d09898
evolve: raise error.InterventionRequired instead of Abort when conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3850
diff
changeset
|
257 |
"evolve.interrupted`")) |
3622
534af64b0107
evolvecmd: add a detailed comment and some newlines
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3616
diff
changeset
|
258 |
|
4466
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
259 |
return _resolvephasedivergent(ui, repo, prec, bumped) |
3632
8d38b88233cb
evolve: move logic to resolve phase-divergence in a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3631
diff
changeset
|
260 |
|
4466
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
261 |
def _resolvephasedivergent(ui, repo, prec, bumped): |
4465
6feeaf00db44
doc: clarify _resolvephasedivergent role and constraint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4464
diff
changeset
|
262 |
"""final step of a phase divergence resolution |
3632
8d38b88233cb
evolve: move logic to resolve phase-divergence in a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3631
diff
changeset
|
263 |
|
4465
6feeaf00db44
doc: clarify _resolvephasedivergent role and constraint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4464
diff
changeset
|
264 |
This will create a new changesets (or nothing when applicable), the two |
6feeaf00db44
doc: clarify _resolvephasedivergent role and constraint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4464
diff
changeset
|
265 |
changesets needs to be on the same parents. |
6feeaf00db44
doc: clarify _resolvephasedivergent role and constraint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4464
diff
changeset
|
266 |
""" |
3632
8d38b88233cb
evolve: move logic to resolve phase-divergence in a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3631
diff
changeset
|
267 |
tr = repo.currenttransaction() |
8d38b88233cb
evolve: move logic to resolve phase-divergence in a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3631
diff
changeset
|
268 |
assert tr is not None |
8d38b88233cb
evolve: move logic to resolve phase-divergence in a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3631
diff
changeset
|
269 |
|
4465
6feeaf00db44
doc: clarify _resolvephasedivergent role and constraint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4464
diff
changeset
|
270 |
cl = repo.changelog |
6feeaf00db44
doc: clarify _resolvephasedivergent role and constraint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4464
diff
changeset
|
271 |
prec_parent = cl.parentrevs(prec.rev()) |
6feeaf00db44
doc: clarify _resolvephasedivergent role and constraint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4464
diff
changeset
|
272 |
bump_parent = cl.parentrevs(bumped.rev()) |
6feeaf00db44
doc: clarify _resolvephasedivergent role and constraint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4464
diff
changeset
|
273 |
assert prec_parent == bump_parent, (prec_parent, bump_parent) |
6feeaf00db44
doc: clarify _resolvephasedivergent role and constraint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4464
diff
changeset
|
274 |
|
3632
8d38b88233cb
evolve: move logic to resolve phase-divergence in a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3631
diff
changeset
|
275 |
bmupdate = _bookmarksupdater(repo, bumped.node(), tr) |
8d38b88233cb
evolve: move logic to resolve phase-divergence in a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3631
diff
changeset
|
276 |
newid = None |
3754
73ee40cbfb53
evolve: return the new replacement node to be stored in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3753
diff
changeset
|
277 |
replacementnode = None |
3632
8d38b88233cb
evolve: move logic to resolve phase-divergence in a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3631
diff
changeset
|
278 |
|
4558
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
279 |
# Create the new commit context. This is done by applying the changes from |
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
280 |
# the precursor to the bumped node onto the precursor. This is effectively |
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
281 |
# like reverting to the bumped node. |
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
282 |
wctx = context.overlayworkingctx(repo) |
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
283 |
wctx.setbase(prec) |
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
284 |
merge.update(repo, bumped.node(), ancestor=prec, mergeancestor=True, |
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
285 |
branchmerge=True, force=False, wc=wctx) |
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
286 |
if not wctx.isempty(): |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
287 |
text = '%s update to %s:\n\n' % (TROUBLES['PHASEDIVERGENT'], prec) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
288 |
text += bumped.description() |
4558
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
289 |
memctx = wctx.tomemctx(text, |
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
290 |
parents=(prec.node(), nodemod.nullid), |
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
291 |
date=bumped.date(), |
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
292 |
extra=bumped.extra(), |
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
293 |
user=bumped.user()) |
63148e999562
evolve: use merge.update() for resolving phase divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
4554
diff
changeset
|
294 |
newid = repo.commitctx(memctx) |
3754
73ee40cbfb53
evolve: return the new replacement node to be stored in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3753
diff
changeset
|
295 |
replacementnode = newid |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
296 |
if newid is None: |
4453
700b8b3a5a54
evolve: clarify output when phase-divergence resolution results in no change
Martin von Zweigbergk <martinvonz@google.com>
parents:
4444
diff
changeset
|
297 |
repo.ui.status(_('no changes to commit\n')) |
4466
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
298 |
obsolete.createmarkers(repo, [(bumped, ())], operation='evolve') |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
299 |
newid = prec.node() |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
300 |
else: |
4453
700b8b3a5a54
evolve: clarify output when phase-divergence resolution results in no change
Martin von Zweigbergk <martinvonz@google.com>
parents:
4444
diff
changeset
|
301 |
repo.ui.status(_('committed as %s\n') % nodemod.short(newid)) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
302 |
phases.retractboundary(repo, tr, bumped.phase(), [newid]) |
4466
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
303 |
obsolete.createmarkers(repo, [(bumped, (repo[newid],))], |
3694
c0d5e0929f8b
compat: from compatibility layer for createmarkers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3676
diff
changeset
|
304 |
flag=obsolete.bumpedfix, operation='evolve') |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
305 |
bmupdate(newid) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
306 |
# reroute the working copy parent to the new changeset |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
307 |
with repo.dirstate.parentchange(): |
3977
a0a4f4de9ea3
evolvecmd: import mercurial.node module as nodemod
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3927
diff
changeset
|
308 |
repo.dirstate.setparents(newid, nodemod.nullid) |
3754
73ee40cbfb53
evolve: return the new replacement node to be stored in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3753
diff
changeset
|
309 |
return (True, replacementnode) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
310 |
|
4154
dd81d7f43857
evolve: extract displayer to _solveone()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4153
diff
changeset
|
311 |
def _solvedivergent(ui, repo, divergent, evolvestate, displayer, dryrun=False, |
3478
4a1ccae58323
evolvecmd: pass evolvestate object to _solve* functions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3477
diff
changeset
|
312 |
confirm=False, progresscb=None): |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
313 |
"""tries to solve content-divergence of a changeset |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
314 |
|
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
315 |
returns a tuple (bool, newnode) where, |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
316 |
bool: a boolean value indicating whether the instability was solved |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
317 |
newnode: if bool is True, then the newnode of the resultant commit |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
318 |
formed. newnode can be node, when resolution led to no new |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
319 |
commit. If bool is False, this is ".". |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
320 |
""" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
321 |
repo = repo.unfiltered() |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
322 |
divergent = repo[divergent.rev()] |
3734
aae54e80c95c
evolve: store divergent nodes in evolvestate when resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3707
diff
changeset
|
323 |
evolvestate['divergent'] = divergent.node() |
4408
02ece0e5865e
evolve: fix the broken behaviour on div resolution in relocation case
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4403
diff
changeset
|
324 |
evolvestate['orig-divergent'] = divergent.node() |
3809
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
325 |
# sometimes we will relocate a node in case of different parents and we can |
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
326 |
# encounter conflicts after relocation is done while solving |
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
327 |
# content-divergence and if the user calls `hg evolve --stop`, we need to |
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
328 |
# strip that relocated commit. However if `--all` is passed, we need to |
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
329 |
# reset this value for each content-divergence resolution which we are doing |
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
330 |
# below. |
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
331 |
evolvestate['relocated'] = None |
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
332 |
evolvestate['relocating'] = False |
3825
b5dfa78073b9
evolve: store the old other divergent node after relocation in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3824
diff
changeset
|
333 |
# in case or relocation we get a new other node, we need to store the old |
b5dfa78073b9
evolve: store the old other divergent node after relocation in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3824
diff
changeset
|
334 |
# other for purposes like `--abort` or `--stop` |
b5dfa78073b9
evolve: store the old other divergent node after relocation in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3824
diff
changeset
|
335 |
evolvestate['old-other'] = None |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
336 |
base, others = divergentdata(divergent) |
3742
d577cef1f044
evolvecmd: add comments and new lines in content-divergence handling logic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3741
diff
changeset
|
337 |
|
d577cef1f044
evolvecmd: add comments and new lines in content-divergence handling logic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3741
diff
changeset
|
338 |
# we don't handle split in content-divergence yet |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
339 |
if len(others) > 1: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
340 |
othersstr = "[%s]" % (','.join([str(i) for i in others])) |
4090
6179a40d27c7
evolve: fix use of "'%d' % ctx"
Martin von Zweigbergk <martinvonz@google.com>
parents:
4054
diff
changeset
|
341 |
msg = _("skipping %s: %s with a changeset that got split" |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
342 |
" into multiple ones:\n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
343 |
"|[%s]\n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
344 |
"| This is not handled by automatic evolution yet\n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
345 |
"| You have to fallback to manual handling with commands " |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
346 |
"such as:\n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
347 |
"| - hg touch -D\n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
348 |
"| - hg prune\n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
349 |
"| \n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
350 |
"| You should contact your local evolution Guru for help.\n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
351 |
) % (divergent, TROUBLES['CONTENTDIVERGENT'], othersstr) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
352 |
ui.write_err(msg) |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
353 |
return (False, ".") |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
354 |
other = others[0] |
3734
aae54e80c95c
evolve: store divergent nodes in evolvestate when resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3707
diff
changeset
|
355 |
evolvestate['other-divergent'] = other.node() |
3788
ae30da2e210d
evolve: store the base of content-divergents in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3787
diff
changeset
|
356 |
evolvestate['base'] = base.node() |
3742
d577cef1f044
evolvecmd: add comments and new lines in content-divergence handling logic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3741
diff
changeset
|
357 |
|
4467
6fc5e162ea84
evolve: refactor the code which swap two nodes (in divergence resolution)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4466
diff
changeset
|
358 |
def swapnodes(div, other): |
6fc5e162ea84
evolve: refactor the code which swap two nodes (in divergence resolution)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4466
diff
changeset
|
359 |
div, other = other, div |
6fc5e162ea84
evolve: refactor the code which swap two nodes (in divergence resolution)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4466
diff
changeset
|
360 |
evolvestate['divergent'] = div.node() |
6fc5e162ea84
evolve: refactor the code which swap two nodes (in divergence resolution)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4466
diff
changeset
|
361 |
evolvestate['other-divergent'] = other.node() |
6fc5e162ea84
evolve: refactor the code which swap two nodes (in divergence resolution)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4466
diff
changeset
|
362 |
return div, other |
4383
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
363 |
# haspubdiv: to keep track if we are solving public content-divergence |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
364 |
haspubdiv = False |
4444
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
365 |
if not (divergent.mutable() and other.mutable()): |
4383
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
366 |
haspubdiv = True |
4444
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
367 |
# for simplicity, we keep public one to local side while merging |
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
368 |
# (as divergent is kept at local side, pinning public -> divergent) |
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
369 |
if divergent.mutable(): |
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
370 |
publicdiv = other |
4467
6fc5e162ea84
evolve: refactor the code which swap two nodes (in divergence resolution)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4466
diff
changeset
|
371 |
divergent, other = swapnodes(divergent, other) |
4444
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
372 |
else: |
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
373 |
publicdiv = divergent |
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
374 |
evolvestate['public-divergent'] = publicdiv.node() |
3742
d577cef1f044
evolvecmd: add comments and new lines in content-divergence handling logic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3741
diff
changeset
|
375 |
# we don't handle merge content-divergent changesets yet |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
376 |
if len(other.parents()) > 1: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
377 |
msg = _("skipping %s: %s changeset can't be " |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
378 |
"a merge (yet)\n") % (divergent, TROUBLES['CONTENTDIVERGENT']) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
379 |
ui.write_err(msg) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
380 |
hint = _("You have to fallback to solving this by hand...\n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
381 |
"| This probably means redoing the merge and using \n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
382 |
"| `hg prune` to kill older version.\n") |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
383 |
ui.write_err(hint) |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
384 |
return (False, ".") |
3742
d577cef1f044
evolvecmd: add comments and new lines in content-divergence handling logic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3741
diff
changeset
|
385 |
|
3805
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
386 |
otherp1 = other.p1().rev() |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
387 |
divp1 = divergent.p1().rev() |
3848
90f1a64875ad
evolve: introduce a resolutionparent variable and store it in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3847
diff
changeset
|
388 |
|
3850
340cf6fbe9e9
evolve: create resolved cset on successors of current parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3848
diff
changeset
|
389 |
# finding single successors of otherp1 and divp1 |
340cf6fbe9e9
evolve: create resolved cset on successors of current parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3848
diff
changeset
|
390 |
try: |
340cf6fbe9e9
evolve: create resolved cset on successors of current parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3848
diff
changeset
|
391 |
otherp1 = utility._singlesuccessor(repo, other.p1()) |
340cf6fbe9e9
evolve: create resolved cset on successors of current parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3848
diff
changeset
|
392 |
except utility.MultipleSuccessorsError: |
340cf6fbe9e9
evolve: create resolved cset on successors of current parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3848
diff
changeset
|
393 |
pass |
340cf6fbe9e9
evolve: create resolved cset on successors of current parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3848
diff
changeset
|
394 |
|
340cf6fbe9e9
evolve: create resolved cset on successors of current parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3848
diff
changeset
|
395 |
try: |
340cf6fbe9e9
evolve: create resolved cset on successors of current parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3848
diff
changeset
|
396 |
divp1 = utility._singlesuccessor(repo, divergent.p1()) |
340cf6fbe9e9
evolve: create resolved cset on successors of current parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3848
diff
changeset
|
397 |
except utility.MultipleSuccessorsError: |
340cf6fbe9e9
evolve: create resolved cset on successors of current parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3848
diff
changeset
|
398 |
pass |
340cf6fbe9e9
evolve: create resolved cset on successors of current parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3848
diff
changeset
|
399 |
|
3848
90f1a64875ad
evolve: introduce a resolutionparent variable and store it in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3847
diff
changeset
|
400 |
# the changeset on which resolution changeset will be based on |
90f1a64875ad
evolve: introduce a resolutionparent variable and store it in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3847
diff
changeset
|
401 |
resolutionparent = repo[divp1].node() |
90f1a64875ad
evolve: introduce a resolutionparent variable and store it in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3847
diff
changeset
|
402 |
|
3805
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
403 |
gca = repo.revs("ancestor(%d, %d)" % (otherp1, divp1)) |
4442
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
404 |
# divonly: non-obsolete csets which are topological ancestor of "divergent" |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
405 |
# but not "other" |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
406 |
divonly = repo.revs("only(%d, %d) - obsolete()" % (divergent.rev(), |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
407 |
other.rev())) |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
408 |
# otheronly: non-obsolete csets which are topological ancestor of "other" |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
409 |
# but not "div" |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
410 |
otheronly = repo.revs("only(%d, %d) - obsolete()" % (other.rev(), |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
411 |
divergent.rev())) |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
412 |
# make it exclusive set |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
413 |
divonly = set(divonly) - {divergent.rev()} |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
414 |
otheronly = set(otheronly) - {other.rev()} |
3805
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
415 |
# is relocation of one of the changeset required |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
416 |
relocatereq = False |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
417 |
|
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
418 |
# testing how both the divergent changesets are arranged, there can be 4 |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
419 |
# possible cases here: |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
420 |
# |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
421 |
# 1) both have the same parents |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
422 |
# 2) both have different parents but greatest common anscestor of them is |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
423 |
# parent of one of them |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
424 |
# 3) both have different parents and gca is not parent of any of them |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
425 |
# 4) one of them is parent of other |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
426 |
# |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
427 |
# we are handling 1) very good now. |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
428 |
# for 2) we will relocate one which is behind to the parent of ahead one and |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
429 |
# then solve the content-divergence the way we solve 1) |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
430 |
# for 3) and 4), we still have to decide |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
431 |
if otherp1 in gca and divp1 in gca: |
4442
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
432 |
if otherp1 == other.p1().rev() and divp1 == divergent.p1().rev(): |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
433 |
# both are on the same parents |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
434 |
pass |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
435 |
else: |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
436 |
# both are not on the same parent but have same parents's succs. |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
437 |
if otheronly and divonly: |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
438 |
# case: we have visible csets on both side diverging from |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
439 |
# tca of "divergent" and "other". We still need to decide what |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
440 |
# to do in this case |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
441 |
pass |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
442 |
if otheronly: |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
443 |
relocatereq = True |
4443
fc2214916f50
evolve: add condition in case of pubdiv to not swap the two div csets
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4442
diff
changeset
|
444 |
if not haspubdiv: |
fc2214916f50
evolve: add condition in case of pubdiv to not swap the two div csets
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4442
diff
changeset
|
445 |
# can't swap when public divergence, as public can't move |
4467
6fc5e162ea84
evolve: refactor the code which swap two nodes (in divergence resolution)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4466
diff
changeset
|
446 |
divergent, other = swapnodes(divergent, other) |
4443
fc2214916f50
evolve: add condition in case of pubdiv to not swap the two div csets
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4442
diff
changeset
|
447 |
resolutionparent = repo[otherp1].node() |
4442
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
448 |
elif divonly: |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
449 |
relocatereq = True |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
450 |
else: |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
451 |
# no extra cset on either side; so not considering relocation |
819bad275701
evolve: add logic to handle a particular case in divergence resolution
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4438
diff
changeset
|
452 |
pass |
3805
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
453 |
elif otherp1 in gca and divp1 not in gca: |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
454 |
relocatereq = True |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
455 |
pass |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
456 |
elif divp1 in gca and otherp1 not in gca: |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
457 |
relocatereq = True |
4444
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
458 |
|
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
459 |
# When public branch is behind to the mutable branch, for now we |
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
460 |
# relocate mutable cset to public one's side in every case. |
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
461 |
# |
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
462 |
# This behaviour might be sub optimal when ancestors of mutable |
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
463 |
# cset has changes its relocated descendant rely on. |
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
464 |
# |
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
465 |
# Otherwise, we are going to rebase the "behind" branch up to the new |
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
466 |
# brancmap level. |
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
467 |
if not haspubdiv: |
4467
6fc5e162ea84
evolve: refactor the code which swap two nodes (in divergence resolution)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4466
diff
changeset
|
468 |
divergent, other = swapnodes(divergent, other) |
4444
ea336a6592cc
evolve: test a common case of public divergence
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4443
diff
changeset
|
469 |
resolutionparent = divergent.p1().node() |
3805
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
470 |
else: |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
471 |
msg = _("skipping %s: have a different parent than %s " |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
472 |
"(not handled yet)\n") % (divergent, other) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
473 |
hint = _("| %(d)s, %(o)s are not based on the same changeset.\n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
474 |
"| With the current state of its implementation, \n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
475 |
"| evolve does not work in that case.\n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
476 |
"| rebase one of them next to the other and run \n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
477 |
"| this command again.\n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
478 |
"| - either: hg rebase --dest 'p1(%(d)s)' -r %(o)s\n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
479 |
"| - or: hg rebase --dest 'p1(%(o)s)' -r %(d)s\n" |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
480 |
) % {'d': divergent, 'o': other} |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
481 |
ui.write_err(msg) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
482 |
ui.write_err(hint) |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
483 |
return (False, ".") |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
484 |
|
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
485 |
if not ui.quiet or confirm: |
3501
7c8150697810
color: add some colors to evolve command itself
Boris Feld <boris.feld@octobus.net>
parents:
3495
diff
changeset
|
486 |
ui.write(_('merge:'), label='evolve.operation') |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
487 |
displayer.show(divergent) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
488 |
ui.write(_('with: ')) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
489 |
displayer.show(other) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
490 |
ui.write(_('base: ')) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
491 |
displayer.show(base) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
492 |
if confirm and ui.prompt(_('perform evolve? [Ny]'), 'n') != 'y': |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
493 |
raise error.Abort(_('evolve aborted by user')) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
494 |
if dryrun: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
495 |
ui.write(('hg update -c %s &&\n' % divergent)) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
496 |
ui.write(('hg merge %s &&\n' % other)) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
497 |
ui.write(('hg commit -m "auto merge resolving conflict between ' |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
498 |
'%s and %s"&&\n' % (divergent, other))) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
499 |
ui.write(('hg up -C %s &&\n' % base)) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
500 |
ui.write(('hg revert --all --rev tip &&\n')) |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
501 |
ui.write(('hg commit -m "`hg log -r %s --template={desc}`";\n' |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
502 |
% divergent)) |
4297
699e25687cc5
issue-6028: resolves 6028 - return (False, ".") instead of (False, '')
James Reynolds <james.glenn.reynolds@gmail.com>
parents:
4269
diff
changeset
|
503 |
return (False, ".") |
3805
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
504 |
|
3848
90f1a64875ad
evolve: introduce a resolutionparent variable and store it in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3847
diff
changeset
|
505 |
evolvestate['resolutionparent'] = resolutionparent |
3805
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
506 |
# relocate the other divergent if required |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
507 |
if relocatereq: |
3809
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
508 |
# relocating will help us understand during the time of conflicts that |
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
509 |
# whether conflicts occur at reloacting or they occured at merging |
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
510 |
# content divergent changesets |
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
511 |
evolvestate['relocating'] = True |
3805
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
512 |
ui.status(_('rebasing "other" content-divergent changeset %s on' |
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
513 |
' %s\n' % (other, divergent.p1()))) |
3811
3273b178c202
evolve: store the evolvestate if relocation results in conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3809
diff
changeset
|
514 |
try: |
3273b178c202
evolve: store the evolvestate if relocation results in conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3809
diff
changeset
|
515 |
newother = relocate(repo, other, divergent.p1(), evolvestate, |
3273b178c202
evolve: store the evolvestate if relocation results in conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3809
diff
changeset
|
516 |
keepbranch=True) |
3273b178c202
evolve: store the evolvestate if relocation results in conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3809
diff
changeset
|
517 |
except MergeFailure: |
3273b178c202
evolve: store the evolvestate if relocation results in conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3809
diff
changeset
|
518 |
evolvestate['current'] = other.node() |
3273b178c202
evolve: store the evolvestate if relocation results in conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3809
diff
changeset
|
519 |
evolvestate.save() |
3853
796334340cad
evolve: make one missed error to align other error messages
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3852
diff
changeset
|
520 |
raise error.InterventionRequired(_("fix conflicts and see `hg help " |
796334340cad
evolve: make one missed error to align other error messages
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3852
diff
changeset
|
521 |
"evolve.interrupted`")) |
3825
b5dfa78073b9
evolve: store the old other divergent node after relocation in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3824
diff
changeset
|
522 |
evolvestate['old-other'] = other.node() |
3805
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
523 |
other = repo[newother] |
3809
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
524 |
evolvestate['relocating'] = False |
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
525 |
evolvestate['relocated'] = other.node() |
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
526 |
evolvestate['temprevs'].append(other.node()) |
f06ff8fee2f6
evolvestate: store info about relocation while resolving content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3808
diff
changeset
|
527 |
evolvestate['other-divergent'] = other.node() |
3805
2410e7063692
evolve: implement resolution of content-divergence when on differet parents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3802
diff
changeset
|
528 |
|
3808
e6c0f45d51ed
evolve: factor out logic to merge content divergent csets in separate fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3807
diff
changeset
|
529 |
_mergecontentdivergents(repo, progresscb, divergent, other, base, |
e6c0f45d51ed
evolve: factor out logic to merge content divergent csets in separate fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3807
diff
changeset
|
530 |
evolvestate) |
4383
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
531 |
res, newnode = _completecontentdivergent(ui, repo, progresscb, divergent, |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
532 |
other, base, evolvestate) |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
533 |
if not haspubdiv: |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
534 |
return (res, newnode) |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
535 |
else: |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
536 |
# when we have content-divergence with a public cset: after completing |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
537 |
# content divergence resolution the resulting node will be phase |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
538 |
# divergent with that same public cset. |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
539 |
# here newnode is phase divergent, lets resolve this divergence. |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
540 |
if not res: |
4416
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
541 |
# resolution was not successful, return |
4383
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
542 |
return (res, newnode) |
4416
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
543 |
if newnode == publicdiv.node(): |
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
544 |
# no changes were found that are different from public cset |
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
545 |
return (res, newnode) |
4383
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
546 |
prec = publicdiv |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
547 |
bumped = repo[newnode] |
4466
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
548 |
return _resolvephasedivergent(ui, repo, prec=prec, bumped=bumped) |
3808
e6c0f45d51ed
evolve: factor out logic to merge content divergent csets in separate fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3807
diff
changeset
|
549 |
|
e6c0f45d51ed
evolve: factor out logic to merge content divergent csets in separate fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3807
diff
changeset
|
550 |
def _mergecontentdivergents(repo, progresscb, divergent, other, base, |
e6c0f45d51ed
evolve: factor out logic to merge content divergent csets in separate fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3807
diff
changeset
|
551 |
evolvestate): |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
552 |
if divergent not in repo[None].parents(): |
3740
07e246deb612
evolve: show cset hash in "update to local conflict" message
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3739
diff
changeset
|
553 |
repo.ui.status(_("updating to \"local\" side of the conflict: %s\n") % |
07e246deb612
evolve: show cset hash in "update to local conflict" message
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3739
diff
changeset
|
554 |
divergent.hex()[:12]) |
3739
0bfc4fe3baf8
evolve: use hg.updaterepo() instead of hg.update() to hide stats
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3738
diff
changeset
|
555 |
hg.updaterepo(repo, divergent.node(), False) |
3742
d577cef1f044
evolvecmd: add comments and new lines in content-divergence handling logic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3741
diff
changeset
|
556 |
# merging the two content-divergent changesets |
3741
ec460882eab7
evolve: show cset hash in "merging conetnt-divergent changeset"
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3740
diff
changeset
|
557 |
repo.ui.status(_("merging \"other\" %s changeset '%s'\n") % |
ec460882eab7
evolve: show cset hash in "merging conetnt-divergent changeset"
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3740
diff
changeset
|
558 |
(TROUBLES['CONTENTDIVERGENT'], other.hex()[:12])) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
559 |
if progresscb: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
560 |
progresscb() |
4473
14437b18b024
evolve: fix divergence resolution when not merging a descendant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4467
diff
changeset
|
561 |
mergeancestor = repo.changelog.isancestor(divergent.node(), other.node()) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
562 |
stats = merge.update(repo, |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
563 |
other.node(), |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
564 |
branchmerge=True, |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
565 |
force=False, |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
566 |
ancestor=base.node(), |
4473
14437b18b024
evolve: fix divergence resolution when not merging a descendant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4467
diff
changeset
|
567 |
mergeancestor=mergeancestor) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
568 |
hg._showstats(repo, stats) |
3742
d577cef1f044
evolvecmd: add comments and new lines in content-divergence handling logic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3741
diff
changeset
|
569 |
|
d577cef1f044
evolvecmd: add comments and new lines in content-divergence handling logic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3741
diff
changeset
|
570 |
# conflicts while merging content-divergent changesets |
3616
f6d629514607
compat: use updateresult API if available
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3609
diff
changeset
|
571 |
if compat.hasconflict(stats): |
3807
03ccdc753582
evolve: commit the transaction if conflicts occur while merging content-div
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3805
diff
changeset
|
572 |
tr = repo.currenttransaction() |
03ccdc753582
evolve: commit the transaction if conflicts occur while merging content-div
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3805
diff
changeset
|
573 |
tr.close() |
3736
4b8c63d14f18
evolve: store the evolvestate file when encountering conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3735
diff
changeset
|
574 |
evolvestate.save() |
3852
629558d09898
evolve: raise error.InterventionRequired instead of Abort when conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3850
diff
changeset
|
575 |
raise error.InterventionRequired(_("fix conflicts and see `hg help " |
629558d09898
evolve: raise error.InterventionRequired instead of Abort when conflicts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3850
diff
changeset
|
576 |
"evolve.interrupted`")) |
3735
bdf7fb6af7b8
evolve: take out logic to complete phase-divergence in separate fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3734
diff
changeset
|
577 |
|
3737
5b0bd82ea914
evolve: add logic to continue interrupted content-divergence resolution
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3736
diff
changeset
|
578 |
def _completecontentdivergent(ui, repo, progresscb, divergent, other, |
3789
13eef43a961f
evolve: pass the base revision in _completecontentdivergent()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3788
diff
changeset
|
579 |
base, evolvestate): |
3735
bdf7fb6af7b8
evolve: take out logic to complete phase-divergence in separate fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3734
diff
changeset
|
580 |
"""completes the content-divergence resolution""" |
3742
d577cef1f044
evolvecmd: add comments and new lines in content-divergence handling logic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3741
diff
changeset
|
581 |
# no conflicts were there in merging content divergent changesets, let's |
d577cef1f044
evolvecmd: add comments and new lines in content-divergence handling logic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3741
diff
changeset
|
582 |
# resume resolution |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
583 |
if progresscb: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
584 |
progresscb() |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
585 |
emtpycommitallowed = repo.ui.backupconfig('ui', 'allowemptycommit') |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
586 |
tr = repo.currenttransaction() |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
587 |
assert tr is not None |
3831
987e335dbe11
evolve: store the obsmarkers to be deleted in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3830
diff
changeset
|
588 |
# whether to store the obsmarker in the evolvestate |
987e335dbe11
evolve: store the obsmarkers to be deleted in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3830
diff
changeset
|
589 |
storemarker = False |
3848
90f1a64875ad
evolve: introduce a resolutionparent variable and store it in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3847
diff
changeset
|
590 |
resparent = evolvestate['resolutionparent'] |
4383
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
591 |
|
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
592 |
# whether we are solving public divergence |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
593 |
haspubdiv = False |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
594 |
if evolvestate.get('public-divergent'): |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
595 |
haspubdiv = True |
4415
29733c2b0fd3
evolve: rename npublicdiv to publicnode
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4414
diff
changeset
|
596 |
publicnode = evolvestate['public-divergent'] |
29733c2b0fd3
evolve: rename npublicdiv to publicnode
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4414
diff
changeset
|
597 |
publicdiv = repo[publicnode] |
4416
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
598 |
othernode = evolvestate['other-divergent'] |
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
599 |
otherdiv = repo[othernode] |
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
600 |
|
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
601 |
with repo.dirstate.parentchange(): |
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
602 |
repo.dirstate.setparents(publicnode, nodemod.nullid) |
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
603 |
dirstatedance(repo, divergent, publicnode, None) |
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
604 |
# check if node to be committed has changes same as public one |
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
605 |
s = publicdiv.status() |
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
606 |
if not (s.added or s.removed or s.deleted or s.modified): |
4438
a6bdb02a1902
evolve: warn user if cset desc is being lost
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4431
diff
changeset
|
607 |
# warn user if metadata is being lost |
a6bdb02a1902
evolve: warn user if cset desc is being lost
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4431
diff
changeset
|
608 |
if otherdiv.description() != publicdiv.description(): |
a6bdb02a1902
evolve: warn user if cset desc is being lost
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4431
diff
changeset
|
609 |
msg = _('content-divergent changesets differ by descriptions ' |
a6bdb02a1902
evolve: warn user if cset desc is being lost
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4431
diff
changeset
|
610 |
'only, discarding %s\n') % str(otherdiv) |
a6bdb02a1902
evolve: warn user if cset desc is being lost
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4431
diff
changeset
|
611 |
repo.ui.warn(msg) |
4416
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
612 |
# no changes, create markers to resolve divergence |
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
613 |
obsolete.createmarkers(repo, [(otherdiv, (publicdiv,))], |
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
614 |
operation='evolve') |
b2a8e67b0933
evolve: handle a case in pubic-div when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4415
diff
changeset
|
615 |
return (True, publicnode) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
616 |
try: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
617 |
with repo.dirstate.parentchange(): |
3977
a0a4f4de9ea3
evolvecmd: import mercurial.node module as nodemod
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3927
diff
changeset
|
618 |
repo.dirstate.setparents(resparent, nodemod.nullid) |
3846
f9dad99a90d5
evolve: create a new commit instead of amending one of the divergents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3845
diff
changeset
|
619 |
|
3848
90f1a64875ad
evolve: introduce a resolutionparent variable and store it in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3847
diff
changeset
|
620 |
dirstatedance(repo, divergent, resparent, None) |
3742
d577cef1f044
evolvecmd: add comments and new lines in content-divergence handling logic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3741
diff
changeset
|
621 |
|
3829
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
622 |
# merge the branches |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
623 |
mergebranches(repo, divergent, other, base) |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
624 |
# merge the commit messages |
3878
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
625 |
desc = mergecommitmessages(ui, base.description(), |
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
626 |
divergent.description(), |
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
627 |
other.description()) |
3801
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
628 |
|
3792
bb7d1616407f
evolve: return the new node formed only as the replacement
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3790
diff
changeset
|
629 |
# new node if any formed as the replacement |
bb7d1616407f
evolve: return the new node formed only as the replacement
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3790
diff
changeset
|
630 |
newnode = None |
3801
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
631 |
|
3879
1fa3bf6e9e93
evolvecmd: introduce fn to be wrapped by extensions resolving content-div
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3878
diff
changeset
|
632 |
mergehook(repo, base, divergent, other) |
1fa3bf6e9e93
evolvecmd: introduce fn to be wrapped by extensions resolving content-div
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3878
diff
changeset
|
633 |
|
4483
7978230faa32
evolve: make sure div resolution don't replace the initial author (issue6113)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4463
diff
changeset
|
634 |
newnode = repo.commit(text=desc, user=other.user()) |
3846
f9dad99a90d5
evolve: create a new commit instead of amending one of the divergents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3845
diff
changeset
|
635 |
if newnode == divergent.node() or newnode is None: |
3831
987e335dbe11
evolve: store the obsmarkers to be deleted in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3830
diff
changeset
|
636 |
# no changes |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
637 |
new = divergent |
3831
987e335dbe11
evolve: store the obsmarkers to be deleted in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3830
diff
changeset
|
638 |
storemarker = True |
3846
f9dad99a90d5
evolve: create a new commit instead of amending one of the divergents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3845
diff
changeset
|
639 |
repo.ui.status(_("nothing changed\n")) |
f9dad99a90d5
evolve: create a new commit instead of amending one of the divergents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3845
diff
changeset
|
640 |
hg.updaterepo(repo, divergent.rev(), False) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
641 |
else: |
3846
f9dad99a90d5
evolve: create a new commit instead of amending one of the divergents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3845
diff
changeset
|
642 |
new = repo[newnode] |
3792
bb7d1616407f
evolve: return the new node formed only as the replacement
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3790
diff
changeset
|
643 |
newnode = new.node() |
3846
f9dad99a90d5
evolve: create a new commit instead of amending one of the divergents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3845
diff
changeset
|
644 |
hg.updaterepo(repo, new.rev(), False) |
4383
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
645 |
if haspubdiv and publicdiv == divergent: |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
646 |
bypassphase(repo, (divergent, new), operation='evolve') |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
647 |
else: |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
648 |
obsolete.createmarkers(repo, [(divergent, (new,))], |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
649 |
operation='evolve') |
3742
d577cef1f044
evolvecmd: add comments and new lines in content-divergence handling logic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3741
diff
changeset
|
650 |
|
d577cef1f044
evolvecmd: add comments and new lines in content-divergence handling logic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3741
diff
changeset
|
651 |
# creating markers and moving phases post-resolution |
4383
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
652 |
if haspubdiv and publicdiv == other: |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
653 |
bypassphase(repo, (other, new), operation='evolve') |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
654 |
else: |
3343eac099ec
evolve: add logic to resolve content-divergence with a public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4382
diff
changeset
|
655 |
obsolete.createmarkers(repo, [(other, (new,))], operation='evolve') |
3831
987e335dbe11
evolve: store the obsmarkers to be deleted in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3830
diff
changeset
|
656 |
if storemarker: |
987e335dbe11
evolve: store the obsmarkers to be deleted in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3830
diff
changeset
|
657 |
# storing the marker in the evolvestate |
987e335dbe11
evolve: store the obsmarkers to be deleted in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3830
diff
changeset
|
658 |
# we just store the precursors and successor pair for now, we might |
987e335dbe11
evolve: store the obsmarkers to be deleted in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3830
diff
changeset
|
659 |
# want to store more data and serialize obsmarker in a better way in |
987e335dbe11
evolve: store the obsmarkers to be deleted in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3830
diff
changeset
|
660 |
# future |
987e335dbe11
evolve: store the obsmarkers to be deleted in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3830
diff
changeset
|
661 |
evolvestate['obsmarkers'].append((other.node(), new.node())) |
3846
f9dad99a90d5
evolve: create a new commit instead of amending one of the divergents
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3845
diff
changeset
|
662 |
|
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
663 |
phases.retractboundary(repo, tr, other.phase(), [new.node()]) |
3792
bb7d1616407f
evolve: return the new node formed only as the replacement
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3790
diff
changeset
|
664 |
return (True, newnode) |
3462
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
665 |
finally: |
e147c18ed064
evolvecmd: move more functions from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3461
diff
changeset
|
666 |
repo.ui.restoreconfig(emtpycommitallowed) |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
667 |
|
4382
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
668 |
def bypassphase(repo, relation, flag=0, metadata=None, operation='evolve'): |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
669 |
"""function to create a single obsmarker relation even for public csets |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
670 |
where relation should be a single pair (prec, succ)""" |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
671 |
|
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
672 |
# prepare metadata |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
673 |
if metadata is None: |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
674 |
metadata = {} |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
675 |
if 'user' not in metadata: |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
676 |
luser = repo.ui.config('devel', 'user.obsmarker') or repo.ui.username() |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
677 |
metadata['user'] = encoding.fromlocal(luser) |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
678 |
# Operation metadata handling |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
679 |
useoperation = repo.ui.configbool('experimental', |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
680 |
'evolution.track-operation') |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
681 |
if useoperation and operation: |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
682 |
metadata['operation'] = operation |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
683 |
|
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
684 |
# Effect flag metadata handling |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
685 |
saveeffectflag = repo.ui.configbool('experimental', |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
686 |
'evolution.effect-flags') |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
687 |
with repo.transaction('add-obsolescence-marker') as tr: |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
688 |
prec, succ = relation |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
689 |
nprec = prec.node() |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
690 |
npare = None |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
691 |
nsucs = [succ.node()] |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
692 |
if not nsucs: |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
693 |
npare = tuple(p.node() for p in prec.parents()) |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
694 |
if nprec in nsucs: |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
695 |
raise error.Abort(_("changeset %s cannot obsolete itself") % prec) |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
696 |
|
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
697 |
if saveeffectflag: |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
698 |
# The effect flag is saved in a versioned field name for |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
699 |
# future evolution |
4431
f109917f5c28
evolvecmd: compatibility with older geteffectflag() that took a tuple
Anton Shestakov <av6@dwimlabs.net>
parents:
4428
diff
changeset
|
700 |
try: |
f109917f5c28
evolvecmd: compatibility with older geteffectflag() that took a tuple
Anton Shestakov <av6@dwimlabs.net>
parents:
4428
diff
changeset
|
701 |
effectflag = obsutil.geteffectflag(prec, (succ,)) |
f109917f5c28
evolvecmd: compatibility with older geteffectflag() that took a tuple
Anton Shestakov <av6@dwimlabs.net>
parents:
4428
diff
changeset
|
702 |
except TypeError: |
f109917f5c28
evolvecmd: compatibility with older geteffectflag() that took a tuple
Anton Shestakov <av6@dwimlabs.net>
parents:
4428
diff
changeset
|
703 |
# hg <= 4.7 |
f109917f5c28
evolvecmd: compatibility with older geteffectflag() that took a tuple
Anton Shestakov <av6@dwimlabs.net>
parents:
4428
diff
changeset
|
704 |
effectflag = obsutil.geteffectflag((prec, (succ,))) |
4382
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
705 |
metadata[obsutil.EFFECTFLAGFIELD] = "%d" % effectflag |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
706 |
|
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
707 |
# create markers |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
708 |
repo.obsstore.create(tr, nprec, nsucs, flag, parents=npare, |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
709 |
metadata=metadata, ui=repo.ui) |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
710 |
repo.filteredrevcache.clear() |
e6ba7e324015
evolve: introduce function to create a obsmarker relation even for public cset
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4378
diff
changeset
|
711 |
|
3847
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
712 |
def dirstatedance(repo, oldparent, newparent, match): |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
713 |
"""utility function to fix the dirstate when we change parents from |
4427
9e2ee7dc5e34
evolve: fix a typo from directory to dirty
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4426
diff
changeset
|
714 |
oldparent to newparent with a dirty working directory using |
3847
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
715 |
repo.dirstate.setparents() |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
716 |
|
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
717 |
Lets refer oldparent as Pold |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
718 |
newparent as Pnew |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
719 |
|
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
720 |
Now when we are on oldparent with a dirty working directory, there are three |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
721 |
types of files which we are concerned about. They are files having modified, |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
722 |
added and removed status. |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
723 |
|
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
724 |
Lets refer modified files as Fm |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
725 |
added files as Fa |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
726 |
removed files as Fr |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
727 |
|
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
728 |
Now, between Pold and Pnew, files can be modified, files can be added, files |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
729 |
can be removed. |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
730 |
|
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
731 |
Lets refer modification of a file between Pold to Pnew as Cm |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
732 |
addition of a file between Pold to Pnew as Ca |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
733 |
removal of a file between Pold to Pnew as Cr |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
734 |
|
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
735 |
Now let's play combinations and permutations: |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
736 |
|
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
737 |
|---------------------------------------------------------------| |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
738 |
| Type of file | Changes between | End status with Pnew as | |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
739 |
| in wdir | Pold -> Pnew | wdir parent | |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
740 |
|--------------|------------------|-----------------------------| |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
741 |
| | | | |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
742 |
| Fm | Cm | Modified or clean | |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
743 |
|--------------|------------------|-----------------------------| |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
744 |
| Fm | Cr | Added | |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
745 |
|--------------|------------------|-----------------------------| |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
746 |
| Fm | Ca | Not possible (1) | |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
747 |
|--------------|------------------|-----------------------------| |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
748 |
| Fa | Ca | Modified or clean | |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
749 |
|--------------|------------------|-----------------------------| |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
750 |
| Fa | Cm | Not possible (2) | |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
751 |
|--------------|------------------|-----------------------------| |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
752 |
| Fa | Cr | Not possible (2) | |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
753 |
|--------------|------------------|-----------------------------| |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
754 |
| Fr | Cr | File should be untracked (3)| |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
755 |
|--------------|------------------|-----------------------------| |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
756 |
| Fr | Ca | Not possible (4) | |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
757 |
|--------------|------------------|-----------------------------| |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
758 |
| Fr | Cm | Removed | |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
759 |
|--------------|------------------|-----------------------------| |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
760 |
|
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
761 |
(1): File is modified in wdir, it means file was present in Pold, so |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
762 |
addition of that file between Pold to Pnew is not possible |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
763 |
|
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
764 |
(2): File was added in wdir, it means file was not present in Pold, so |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
765 |
deletion or modification of that file from Pold to Pnew is not possible |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
766 |
|
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
767 |
(3): File should be dropped from the dirstate, Pnew has it removed, so no |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
768 |
need to mark that removed again |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
769 |
|
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
770 |
(4): File was removed in wdir, it means file was present in Pold, so |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
771 |
addition of that file between Pold to Pnew is not possible |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
772 |
|
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
773 |
""" |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
774 |
|
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
775 |
# falling back to an existing function, in future we should have logic in |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
776 |
# this function only |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
777 |
cmdrewrite._uncommitdirstate(repo, oldparent, match, True) |
8bad32e1e6c1
evolve: introduce a dirstatedance() fn to fix dirstate after parent change
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3846
diff
changeset
|
778 |
|
3879
1fa3bf6e9e93
evolvecmd: introduce fn to be wrapped by extensions resolving content-div
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3878
diff
changeset
|
779 |
def mergehook(repo, base, divergent, other): |
1fa3bf6e9e93
evolvecmd: introduce fn to be wrapped by extensions resolving content-div
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3878
diff
changeset
|
780 |
"""function which extensions can wrap and merge data introduced by them |
1fa3bf6e9e93
evolvecmd: introduce fn to be wrapped by extensions resolving content-div
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3878
diff
changeset
|
781 |
while resolving content-divergence""" |
1fa3bf6e9e93
evolvecmd: introduce fn to be wrapped by extensions resolving content-div
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3878
diff
changeset
|
782 |
pass |
1fa3bf6e9e93
evolvecmd: introduce fn to be wrapped by extensions resolving content-div
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3878
diff
changeset
|
783 |
|
3829
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
784 |
def mergebranches(repo, divergent, other, base): |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
785 |
"""merges the branch information for content-divergent changesets and sets |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
786 |
the dirstate branch accordingly |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
787 |
If unable to merge, prompts user to select a branch |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
788 |
|
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
789 |
If the branch name is different from the branch of divergent changeset, it |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
790 |
sets the current branch using repo.dirstate.setbranch() |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
791 |
""" |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
792 |
divbranch = divergent.branch() |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
793 |
basebranch = base.branch() |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
794 |
othbranch = other.branch() |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
795 |
# content divergent changes were on different branches, ask user to |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
796 |
# select one |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
797 |
if divbranch != othbranch: |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
798 |
|
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
799 |
if basebranch == othbranch and basebranch != divbranch: |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
800 |
# we will be amending the divergent changeset so branch will be |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
801 |
# preserved |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
802 |
pass |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
803 |
elif basebranch == divbranch and basebranch != othbranch: |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
804 |
repo.dirstate.setbranch(othbranch) |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
805 |
else: |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
806 |
# all the three branches are different |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
807 |
index = repo.ui.promptchoice(_("content divergent changesets on " |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
808 |
"different branches.\nchoose branch" |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
809 |
" for the resolution changeset. (a) " |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
810 |
"%s or (b) %s or (c) %s? $$ &a $$ &b" |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
811 |
" $$ &c") % |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
812 |
(basebranch, divbranch, othbranch), 0) |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
813 |
|
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
814 |
if index == 0: |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
815 |
repo.dirstate.setbranch(basebranch) |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
816 |
elif index == 1: |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
817 |
pass |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
818 |
elif index == 2: |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
819 |
repo.dirstate.setbranch(othbranch) |
cb45a7173e5b
evolve: factor out logic to merge branches in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3827
diff
changeset
|
820 |
|
3878
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
821 |
def mergecommitmessages(ui, basedesc, divdesc, othdesc): |
3801
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
822 |
"""merges the commit messages and return the new merged message and whether |
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
823 |
there were conflicts or not while merging the messages""" |
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
824 |
|
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
825 |
merger = simplemerge.Merge3Text(basedesc, divdesc, othdesc) |
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
826 |
mdesc = [] |
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
827 |
kwargs = {} |
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
828 |
kwargs['name_base'] = 'base' |
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
829 |
kwargs['base_marker'] = '|||||||' |
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
830 |
for line in merger.merge_lines(name_a='divergent', name_b='other', |
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
831 |
**kwargs): |
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
832 |
mdesc.append(line) |
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
833 |
|
3878
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
834 |
desc = ''.join(mdesc) |
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
835 |
if merger.conflicts: |
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
836 |
|
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
837 |
prefixes = ("HG: Conflicts while merging changeset description of" |
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
838 |
" content-divergent changesets.\nHG: Resolve conflicts" |
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
839 |
" in commit messages to continue.\n\n") |
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
840 |
|
4257
4a8f59b69d37
compat: drop 4.3 compatiblity code for `ui.edit` method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4249
diff
changeset
|
841 |
resolveddesc = ui.edit(prefixes + desc, ui.username(), action='desc') |
3878
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
842 |
# make sure we remove the prefixes part from final commit message |
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
843 |
if prefixes in resolveddesc: |
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
844 |
# hack, we should find something better |
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
845 |
resolveddesc = resolveddesc[len(prefixes):] |
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
846 |
desc = resolveddesc |
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
847 |
|
dc2b53b3573f
evolvecmd: move remaining logic to merge commit desc to existing utility fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3856
diff
changeset
|
848 |
return desc |
3801
ee78135b2f45
evolve: merge commit messages while resolving content-divergence (issue5877)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3800
diff
changeset
|
849 |
|
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
850 |
class MergeFailure(error.Abort): |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
851 |
pass |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
852 |
|
3469
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
853 |
def _orderrevs(repo, revs): |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
854 |
"""Compute an ordering to solve instability for the given revs |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
855 |
|
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
856 |
revs is a list of unstable revisions. |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
857 |
|
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
858 |
Returns the same revisions ordered to solve their instability from the |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
859 |
bottom to the top of the stack that the stabilization process will produce |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
860 |
eventually. |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
861 |
|
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
862 |
This ensures the minimal number of stabilizations, as we can stabilize each |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
863 |
revision on its final stabilized destination. |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
864 |
""" |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
865 |
# Step 1: Build the dependency graph |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
866 |
dependencies, rdependencies = utility.builddependencies(repo, revs) |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
867 |
# Step 2: Build the ordering |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
868 |
# Remove the revisions with no dependency(A) and add them to the ordering. |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
869 |
# Removing these revisions leads to new revisions with no dependency (the |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
870 |
# one depending on A) that we can remove from the dependency graph and add |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
871 |
# to the ordering. We progress in a similar fashion until the ordering is |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
872 |
# built |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
873 |
solvablerevs = collections.deque([r for r in sorted(dependencies.keys()) |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
874 |
if not dependencies[r]]) |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
875 |
ordering = [] |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
876 |
while solvablerevs: |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
877 |
rev = solvablerevs.popleft() |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
878 |
for dependent in rdependencies[rev]: |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
879 |
dependencies[dependent].remove(rev) |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
880 |
if not dependencies[dependent]: |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
881 |
solvablerevs.append(dependent) |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
882 |
del dependencies[rev] |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
883 |
ordering.append(rev) |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
884 |
|
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
885 |
ordering.extend(sorted(dependencies)) |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
886 |
return ordering |
e97bfd529e72
evolve: move _orderrevs() function evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3466
diff
changeset
|
887 |
|
3638
7bc4a72b8a0b
evolve: add evolvestate as an argument to evolvecmd.relocate()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3636
diff
changeset
|
888 |
def relocate(repo, orig, dest, evolvestate, pctx=None, keepbranch=False, |
7bc4a72b8a0b
evolve: add evolvestate as an argument to evolvecmd.relocate()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3636
diff
changeset
|
889 |
category=None): |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
890 |
"""rewrites the orig rev on dest rev |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
891 |
|
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
892 |
returns the node of new commit which is formed |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
893 |
""" |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
894 |
if orig.rev() == dest.rev(): |
4269
d2599da04bb5
evolve: update the abort to a ProgrammingError
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4265
diff
changeset
|
895 |
msg = _('tried to relocate a node on top of itself') |
d2599da04bb5
evolve: update the abort to a ProgrammingError
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4265
diff
changeset
|
896 |
hint = _("This shouldn't happen. If you still need to move changesets, " |
d2599da04bb5
evolve: update the abort to a ProgrammingError
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4265
diff
changeset
|
897 |
"please do so manually with nothing to rebase - working " |
d2599da04bb5
evolve: update the abort to a ProgrammingError
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4265
diff
changeset
|
898 |
"directory parent is also destination") |
d2599da04bb5
evolve: update the abort to a ProgrammingError
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4265
diff
changeset
|
899 |
raise error.ProgrammingError(msg, hint=hint) |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
900 |
|
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
901 |
if pctx is None: |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
902 |
if len(orig.parents()) == 2: |
4269
d2599da04bb5
evolve: update the abort to a ProgrammingError
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4265
diff
changeset
|
903 |
msg = _("tried to relocate a merge commit without specifying which " |
d2599da04bb5
evolve: update the abort to a ProgrammingError
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4265
diff
changeset
|
904 |
"parent should be moved") |
d2599da04bb5
evolve: update the abort to a ProgrammingError
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4265
diff
changeset
|
905 |
hint = _("Specify the parent by passing in pctx") |
d2599da04bb5
evolve: update the abort to a ProgrammingError
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4265
diff
changeset
|
906 |
raise error.ProgrammingError(msg, hint) |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
907 |
pctx = orig.p1() |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
908 |
|
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
909 |
commitmsg = orig.description() |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
910 |
|
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
911 |
cache = {} |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
912 |
sha1s = re.findall(sha1re, commitmsg) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
913 |
unfi = repo.unfiltered() |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
914 |
for sha1 in sha1s: |
3676
cded30ad25e4
compat: rename resolvepartialhexnodeid to resolvehexnodeidprefix
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3674
diff
changeset
|
915 |
if util.safehasattr(scmutil, 'resolvehexnodeidprefix'): # > hg-4.6 |
cded30ad25e4
compat: rename resolvepartialhexnodeid to resolvehexnodeidprefix
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3674
diff
changeset
|
916 |
fullnode = scmutil.resolvehexnodeidprefix(unfi, sha1) |
3674
51adc7e6a617
compat: fallback to compatible partial lookup prior to 4.6
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3666
diff
changeset
|
917 |
else: |
51adc7e6a617
compat: fallback to compatible partial lookup prior to 4.6
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3666
diff
changeset
|
918 |
fullnode = unfi.changelog.index.partialmatch(sha1) |
3665
0f0f31351d6d
compat: avoid using partial node ID in lookup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3653
diff
changeset
|
919 |
if fullnode is None: |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
920 |
continue |
3665
0f0f31351d6d
compat: avoid using partial node ID in lookup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3653
diff
changeset
|
921 |
ctx = unfi[fullnode] |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
922 |
if not ctx.obsolete(): |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
923 |
continue |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
924 |
|
3697
6aff4bb3970d
compat: drop compatibility layer for successorssets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3694
diff
changeset
|
925 |
successors = obsutil.successorssets(repo, ctx.node(), cache) |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
926 |
|
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
927 |
# We can't make any assumptions about how to update the hash if the |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
928 |
# cset in question was split or diverged. |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
929 |
if len(successors) == 1 and len(successors[0]) == 1: |
3977
a0a4f4de9ea3
evolvecmd: import mercurial.node module as nodemod
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3927
diff
changeset
|
930 |
newsha1 = nodemod.hex(successors[0][0]) |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
931 |
commitmsg = commitmsg.replace(sha1, newsha1[:len(sha1)]) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
932 |
else: |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
933 |
repo.ui.note(_('The stale commit message reference to %s could ' |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
934 |
'not be updated\n') % sha1) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
935 |
|
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
936 |
tr = repo.currenttransaction() |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
937 |
assert tr is not None |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
938 |
try: |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
939 |
r = _evolvemerge(repo, orig, dest, pctx, keepbranch) |
3616
f6d629514607
compat: use updateresult API if available
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3609
diff
changeset
|
940 |
if compat.hasconflict(r): # some conflict |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
941 |
raise error.Abort(_('unresolved merge conflicts ' |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
942 |
'(see hg help resolve)')) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
943 |
nodenew = _relocatecommit(repo, orig, commitmsg) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
944 |
except error.Abort as exc: |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
945 |
with repo.dirstate.parentchange(): |
3978
fb8e44c70798
evolve: set the second parent if we get conflicts while evolving
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3977
diff
changeset
|
946 |
repo.setparents(dest.node(), orig.node()) |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
947 |
repo.dirstate.write(tr) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
948 |
# fix up dirstate for copies and renames |
3700
2577fdc3a458
compat: drop compatibility layer for duplicatecopies
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3699
diff
changeset
|
949 |
copies.duplicatecopies(repo, repo[None], dest.rev(), orig.p1().rev()) |
4426
7d97e08d13a0
evolve: fix the dirstate after setting parents with dirty wdir (issue5930)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4420
diff
changeset
|
950 |
dirstatedance(repo, dest, orig.node(), None) |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
951 |
|
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
952 |
class LocalMergeFailure(MergeFailure, exc.__class__): |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
953 |
pass |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
954 |
exc.__class__ = LocalMergeFailure |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
955 |
tr.close() # to keep changes in this transaction (e.g. dirstate) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
956 |
raise |
3639
95a767b2769e
evolve: add evolvestate as an argument to _finalizerelocate()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3638
diff
changeset
|
957 |
_finalizerelocate(repo, orig, dest, nodenew, tr, category, evolvestate) |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
958 |
return nodenew |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
959 |
|
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
960 |
def _relocatecommit(repo, orig, commitmsg): |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
961 |
if commitmsg is None: |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
962 |
commitmsg = orig.description() |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
963 |
extra = dict(orig.extra()) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
964 |
if 'branch' in extra: |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
965 |
del extra['branch'] |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
966 |
extra['rebase_source'] = orig.hex() |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
967 |
|
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
968 |
backup = repo.ui.backupconfig('phases', 'new-commit') |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
969 |
try: |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
970 |
targetphase = max(orig.phase(), phases.draft) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
971 |
repo.ui.setconfig('phases', 'new-commit', targetphase, 'evolve') |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
972 |
# Commit might fail if unresolved files exist |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
973 |
nodenew = repo.commit(text=commitmsg, user=orig.user(), |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
974 |
date=orig.date(), extra=extra) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
975 |
finally: |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
976 |
repo.ui.restoreconfig(backup) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
977 |
return nodenew |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
978 |
|
3639
95a767b2769e
evolve: add evolvestate as an argument to _finalizerelocate()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3638
diff
changeset
|
979 |
def _finalizerelocate(repo, orig, dest, nodenew, tr, category, evolvestate): |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
980 |
destbookmarks = repo.nodebookmarks(dest.node()) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
981 |
nodesrc = orig.node() |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
982 |
oldbookmarks = repo.nodebookmarks(nodesrc) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
983 |
bmchanges = [] |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
984 |
|
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
985 |
if nodenew is not None: |
3694
c0d5e0929f8b
compat: from compatibility layer for createmarkers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3676
diff
changeset
|
986 |
obsolete.createmarkers(repo, [(repo[nodesrc], (repo[nodenew],))], |
c0d5e0929f8b
compat: from compatibility layer for createmarkers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3676
diff
changeset
|
987 |
operation='evolve') |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
988 |
for book in oldbookmarks: |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
989 |
bmchanges.append((book, nodenew)) |
3653
d9682c41ea2f
evolve: restore bookmarks correctly after `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3649
diff
changeset
|
990 |
evolvestate['bookmarkchanges'].append((book, nodesrc)) |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
991 |
else: |
3636
92a2d3217de9
evolve: show a message when evolution leads to no changes to commit
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3635
diff
changeset
|
992 |
if category == 'orphan': |
92a2d3217de9
evolve: show a message when evolution leads to no changes to commit
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3635
diff
changeset
|
993 |
repo.ui.status(_("evolution of %d:%s created no changes " |
92a2d3217de9
evolve: show a message when evolution leads to no changes to commit
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3635
diff
changeset
|
994 |
"to commit\n") % (orig.rev(), orig)) |
3694
c0d5e0929f8b
compat: from compatibility layer for createmarkers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3676
diff
changeset
|
995 |
obsolete.createmarkers(repo, [(repo[nodesrc], ())], operation='evolve') |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
996 |
# Behave like rebase, move bookmarks to dest |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
997 |
for book in oldbookmarks: |
3653
d9682c41ea2f
evolve: restore bookmarks correctly after `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3649
diff
changeset
|
998 |
evolvestate['bookmarkchanges'].append((book, nodesrc)) |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
999 |
bmchanges.append((book, dest.node())) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1000 |
for book in destbookmarks: # restore bookmark that rebase move |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1001 |
bmchanges.append((book, dest.node())) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1002 |
if bmchanges: |
3699
67d6cc7e0979
compat: drop compatibility layer for bookmark.applychanges
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3698
diff
changeset
|
1003 |
repo._bookmarks.applychanges(repo, tr, bmchanges) |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1004 |
|
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1005 |
def _evolvemerge(repo, orig, dest, pctx, keepbranch): |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1006 |
"""Used by the evolve function to merge dest on top of pctx. |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1007 |
return the same tuple as merge.graft""" |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1008 |
if repo['.'].rev() != dest.rev(): |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1009 |
merge.update(repo, |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1010 |
dest, |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1011 |
branchmerge=False, |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1012 |
force=True) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1013 |
if repo._activebookmark: |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1014 |
repo.ui.status(_("(leaving bookmark %s)\n") % repo._activebookmark) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1015 |
bookmarksmod.deactivate(repo) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1016 |
if keepbranch: |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1017 |
repo.dirstate.setbranch(orig.branch()) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1018 |
if util.safehasattr(repo, 'currenttopic'): |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1019 |
# uurrgs |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1020 |
# there no other topic setter yet |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1021 |
if not orig.topic() and repo.vfs.exists('topic'): |
4463
7d54a538dd1e
evolve: unindent some lines caught by flake8
Anton Shestakov <av6@dwimlabs.net>
parents:
4427
diff
changeset
|
1022 |
repo.vfs.unlink('topic') |
3463
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1023 |
else: |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1024 |
with repo.vfs.open('topic', 'w') as f: |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1025 |
f.write(orig.topic()) |
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1026 |
|
f994c480cea9
evolvecmd: move more chunks of code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3462
diff
changeset
|
1027 |
return merge.graft(repo, orig, pctx, ['destination', 'evolving'], True) |
3464
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1028 |
|
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1029 |
instabilities_map = { |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1030 |
'contentdivergent': "content-divergent", |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1031 |
'phasedivergent': "phase-divergent" |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1032 |
} |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1033 |
|
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1034 |
def _selectrevs(repo, allopt, revopt, anyopt, targetcat): |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1035 |
"""select troubles in repo matching according to given options""" |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1036 |
revs = set() |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1037 |
if allopt or revopt: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1038 |
revs = repo.revs("%s()" % targetcat) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1039 |
if revopt: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1040 |
revs = scmutil.revrange(repo, revopt) & revs |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1041 |
elif not anyopt: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1042 |
topic = getattr(repo, 'currenttopic', '') |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1043 |
if topic: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1044 |
revs = repo.revs('topic(%s)', topic) & revs |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1045 |
elif targetcat == 'orphan': |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1046 |
revs = _aspiringdescendant(repo, |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1047 |
repo.revs('(.::) - obsolete()::')) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1048 |
revs = set(revs) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1049 |
if targetcat == 'contentdivergent': |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1050 |
# Pick one divergent per group of divergents |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1051 |
revs = _dedupedivergents(repo, revs) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1052 |
elif anyopt: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1053 |
revs = repo.revs('first(%s())' % (targetcat)) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1054 |
elif targetcat == 'orphan': |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1055 |
revs = set(_aspiringchildren(repo, repo.revs('(.::) - obsolete()::'))) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1056 |
if 1 < len(revs): |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1057 |
msg = "multiple evolve candidates" |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1058 |
hint = (_("select one of %s with --rev") |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1059 |
% ', '.join([str(repo[r]) for r in sorted(revs)])) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1060 |
raise error.Abort(msg, hint=hint) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1061 |
elif instabilities_map.get(targetcat, targetcat) in repo['.'].instabilities(): |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1062 |
revs = set([repo['.'].rev()]) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1063 |
return revs |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1064 |
|
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1065 |
def _dedupedivergents(repo, revs): |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1066 |
"""Dedupe the divergents revs in revs to get one from each group with the |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1067 |
lowest revision numbers |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1068 |
""" |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1069 |
repo = repo.unfiltered() |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1070 |
res = set() |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1071 |
# To not reevaluate divergents of the same group once one is encountered |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1072 |
discarded = set() |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1073 |
for rev in revs: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1074 |
if rev in discarded: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1075 |
continue |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1076 |
divergent = repo[rev] |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1077 |
base, others = divergentdata(divergent) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1078 |
othersrevs = [o.rev() for o in others] |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1079 |
res.add(min([divergent.rev()] + othersrevs)) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1080 |
discarded.update(othersrevs) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1081 |
return res |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1082 |
|
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1083 |
def divergentdata(ctx): |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1084 |
"""return base, other part of a conflict |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1085 |
|
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1086 |
This only return the first one. |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1087 |
|
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1088 |
XXX this woobly function won't survive XXX |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1089 |
""" |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1090 |
repo = ctx._repo.unfiltered() |
3506
6b4272bbb65d
evolve: update code for not implicitly converting ctx to revision
Boris Feld <boris.feld@octobus.net>
parents:
3503
diff
changeset
|
1091 |
for base in repo.set('reverse(allprecursors(%d))', ctx.rev()): |
3697
6aff4bb3970d
compat: drop compatibility layer for successorssets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3694
diff
changeset
|
1092 |
newer = obsutil.successorssets(ctx._repo, base.node()) |
3464
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1093 |
# drop filter and solution including the original ctx |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1094 |
newer = [n for n in newer if n and ctx.node() not in n] |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1095 |
if newer: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1096 |
return base, tuple(ctx._repo[o] for o in newer[0]) |
3582
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
1097 |
raise error.Abort(_("base of divergent changeset %s not found") % ctx, |
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
1098 |
hint=_('this case is not yet handled')) |
3464
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1099 |
|
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1100 |
def _aspiringdescendant(repo, revs): |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1101 |
"""Return a list of changectx which can be stabilized on top of pctx or |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1102 |
one of its descendants recursively. Empty list if none can be found.""" |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1103 |
target = set(revs) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1104 |
result = set(target) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1105 |
paths = collections.defaultdict(set) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1106 |
for r in repo.revs('orphan() - %ld', revs): |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1107 |
for d in _possibledestination(repo, r): |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1108 |
paths[d].add(r) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1109 |
|
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1110 |
result = set(target) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1111 |
tovisit = list(revs) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1112 |
while tovisit: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1113 |
base = tovisit.pop() |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1114 |
for unstable in paths[base]: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1115 |
if unstable not in result: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1116 |
tovisit.append(unstable) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1117 |
result.add(unstable) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1118 |
return sorted(result - target) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1119 |
|
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1120 |
def _aspiringchildren(repo, revs): |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1121 |
"""Return a list of changectx which can be stabilized on top of pctx or |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1122 |
one of its descendants. Empty list if none can be found.""" |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1123 |
target = set(revs) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1124 |
result = [] |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1125 |
for r in repo.revs('orphan() - %ld', revs): |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1126 |
dest = _possibledestination(repo, r) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1127 |
if target & dest: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1128 |
result.append(r) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1129 |
return result |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1130 |
|
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1131 |
def _possibledestination(repo, rev): |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1132 |
"""return all changesets that may be a new parent for REV""" |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1133 |
tonode = repo.changelog.node |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1134 |
parents = repo.changelog.parentrevs |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1135 |
torev = repo.changelog.rev |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1136 |
dest = set() |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1137 |
tovisit = list(parents(rev)) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1138 |
while tovisit: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1139 |
r = tovisit.pop() |
4230
e796835fe6b3
evolvecmd: _possibledestination() skip visiting empty parent
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4209
diff
changeset
|
1140 |
if r == -1: |
e796835fe6b3
evolvecmd: _possibledestination() skip visiting empty parent
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4209
diff
changeset
|
1141 |
continue |
3697
6aff4bb3970d
compat: drop compatibility layer for successorssets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3694
diff
changeset
|
1142 |
succsets = obsutil.successorssets(repo, tonode(r)) |
3464
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1143 |
if not succsets: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1144 |
tovisit.extend(parents(r)) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1145 |
else: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1146 |
# We should probably pick only one destination from split |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1147 |
# (case where '1 < len(ss)'), This could be the currently tipmost |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1148 |
# but logic is less clear when result of the split are now on |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1149 |
# multiple branches. |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1150 |
for ss in succsets: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1151 |
for n in ss: |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1152 |
dest.add(torev(n)) |
908d2b5dfa7e
evolvecmd: move more code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3463
diff
changeset
|
1153 |
return dest |
3465
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1154 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1155 |
def _handlenotrouble(ui, repo, allopt, revopt, anyopt, targetcat): |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1156 |
"""Used by the evolve function to display an error message when |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1157 |
no troubles can be resolved""" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1158 |
troublecategories = ['phasedivergent', 'contentdivergent', 'orphan'] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1159 |
unselectedcategories = [c for c in troublecategories if c != targetcat] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1160 |
msg = None |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1161 |
hint = None |
3649
4fcf815916f5
evolve: do not exit 1 when there are no troubled changesets (issue5823)
Kyle Lippincott <spectral@google.com>
parents:
3643
diff
changeset
|
1162 |
retoverride = None |
3465
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1163 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1164 |
troubled = { |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1165 |
"orphan": repo.revs("orphan()"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1166 |
"contentdivergent": repo.revs("contentdivergent()"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1167 |
"phasedivergent": repo.revs("phasedivergent()"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1168 |
"all": repo.revs("troubled()"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1169 |
} |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1170 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1171 |
hintmap = { |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1172 |
'phasedivergent': _("do you want to use --phase-divergent"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1173 |
'phasedivergent+contentdivergent': _("do you want to use " |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1174 |
"--phase-divergent or" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1175 |
" --content-divergent"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1176 |
'phasedivergent+orphan': _("do you want to use --phase-divergent" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1177 |
" or --orphan"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1178 |
'contentdivergent': _("do you want to use --content-divergent"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1179 |
'contentdivergent+orphan': _("do you want to use --content-divergent" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1180 |
" or --orphan"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1181 |
'orphan': _("do you want to use --orphan"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1182 |
'any+phasedivergent': _("do you want to use --any (or --rev) and" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1183 |
" --phase-divergent"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1184 |
'any+phasedivergent+contentdivergent': _("do you want to use --any" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1185 |
" (or --rev) and" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1186 |
" --phase-divergent or" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1187 |
" --content-divergent"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1188 |
'any+phasedivergent+orphan': _("do you want to use --any (or --rev)" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1189 |
" and --phase-divergent or --orphan"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1190 |
'any+contentdivergent': _("do you want to use --any (or --rev) and" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1191 |
" --content-divergent"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1192 |
'any+contentdivergent+orphan': _("do you want to use --any (or --rev)" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1193 |
" and --content-divergent or " |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1194 |
"--orphan"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1195 |
'any+orphan': _("do you want to use --any (or --rev)" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1196 |
"and --orphan"), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1197 |
} |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1198 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1199 |
if revopt: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1200 |
revs = scmutil.revrange(repo, revopt) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1201 |
if not revs: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1202 |
msg = _("set of specified revisions is empty") |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1203 |
else: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1204 |
msg = _("no %s changesets in specified revisions") % targetcat |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1205 |
othertroubles = [] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1206 |
for cat in unselectedcategories: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1207 |
if revs & troubled[cat]: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1208 |
othertroubles.append(cat) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1209 |
if othertroubles: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1210 |
hint = hintmap['+'.join(othertroubles)] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1211 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1212 |
elif anyopt: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1213 |
msg = _("no %s changesets to evolve") % targetcat |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1214 |
othertroubles = [] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1215 |
for cat in unselectedcategories: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1216 |
if troubled[cat]: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1217 |
othertroubles.append(cat) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1218 |
if othertroubles: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1219 |
hint = hintmap['+'.join(othertroubles)] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1220 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1221 |
else: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1222 |
# evolve without any option = relative to the current wdir |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1223 |
if targetcat == 'orphan': |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1224 |
msg = _("nothing to evolve on current working copy parent") |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1225 |
else: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1226 |
msg = _("current working copy parent is not %s") % targetcat |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1227 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1228 |
p1 = repo['.'].rev() |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1229 |
othertroubles = [] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1230 |
for cat in unselectedcategories: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1231 |
if p1 in troubled[cat]: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1232 |
othertroubles.append(cat) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1233 |
if othertroubles: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1234 |
hint = hintmap['+'.join(othertroubles)] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1235 |
else: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1236 |
length = len(troubled[targetcat]) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1237 |
if length: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1238 |
hint = _("%d other %s in the repository, do you want --any " |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1239 |
"or --rev") % (length, targetcat) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1240 |
else: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1241 |
othertroubles = [] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1242 |
for cat in unselectedcategories: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1243 |
if troubled[cat]: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1244 |
othertroubles.append(cat) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1245 |
if othertroubles: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1246 |
hint = hintmap['any+' + ('+'.join(othertroubles))] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1247 |
else: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1248 |
msg = _("no troubled changesets") |
3649
4fcf815916f5
evolve: do not exit 1 when there are no troubled changesets (issue5823)
Kyle Lippincott <spectral@google.com>
parents:
3643
diff
changeset
|
1249 |
# Exit with a 0 (success) status in this case. |
4fcf815916f5
evolve: do not exit 1 when there are no troubled changesets (issue5823)
Kyle Lippincott <spectral@google.com>
parents:
3643
diff
changeset
|
1250 |
retoverride = 0 |
3465
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1251 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1252 |
assert msg is not None |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1253 |
ui.write_err("%s\n" % msg) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1254 |
if hint: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1255 |
ui.write_err("(%s)\n" % hint) |
3649
4fcf815916f5
evolve: do not exit 1 when there are no troubled changesets (issue5823)
Kyle Lippincott <spectral@google.com>
parents:
3643
diff
changeset
|
1256 |
ret = 2 |
3465
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1257 |
else: |
3649
4fcf815916f5
evolve: do not exit 1 when there are no troubled changesets (issue5823)
Kyle Lippincott <spectral@google.com>
parents:
3643
diff
changeset
|
1258 |
ret = 1 |
4fcf815916f5
evolve: do not exit 1 when there are no troubled changesets (issue5823)
Kyle Lippincott <spectral@google.com>
parents:
3643
diff
changeset
|
1259 |
|
4fcf815916f5
evolve: do not exit 1 when there are no troubled changesets (issue5823)
Kyle Lippincott <spectral@google.com>
parents:
3643
diff
changeset
|
1260 |
if retoverride is not None: |
4fcf815916f5
evolve: do not exit 1 when there are no troubled changesets (issue5823)
Kyle Lippincott <spectral@google.com>
parents:
3643
diff
changeset
|
1261 |
return retoverride |
4fcf815916f5
evolve: do not exit 1 when there are no troubled changesets (issue5823)
Kyle Lippincott <spectral@google.com>
parents:
3643
diff
changeset
|
1262 |
return ret |
3465
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1263 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1264 |
def _preparelistctxs(items, condition): |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1265 |
return [item.hex() for item in items if condition(item)] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1266 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1267 |
def _formatctx(fm, ctx): |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1268 |
fm.data(node=ctx.hex()) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1269 |
fm.data(desc=ctx.description()) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1270 |
fm.data(date=ctx.date()) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1271 |
fm.data(user=ctx.user()) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1272 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1273 |
def listtroubles(ui, repo, troublecategories, **opts): |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1274 |
"""Print all the troubles for the repo (or given revset)""" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1275 |
troublecategories = troublecategories or ['contentdivergent', 'orphan', 'phasedivergent'] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1276 |
showunstable = 'orphan' in troublecategories |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1277 |
showbumped = 'phasedivergent' in troublecategories |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1278 |
showdivergent = 'contentdivergent' in troublecategories |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1279 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1280 |
revs = repo.revs('+'.join("%s()" % t for t in troublecategories)) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1281 |
if opts.get('rev'): |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1282 |
revs = scmutil.revrange(repo, opts.get('rev')) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1283 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1284 |
fm = ui.formatter('evolvelist', opts) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1285 |
for rev in revs: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1286 |
ctx = repo[rev] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1287 |
unpars = _preparelistctxs(ctx.parents(), lambda p: p.orphan()) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1288 |
obspars = _preparelistctxs(ctx.parents(), lambda p: p.obsolete()) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1289 |
imprecs = _preparelistctxs(repo.set("allprecursors(%n)", ctx.node()), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1290 |
lambda p: not p.mutable()) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1291 |
dsets = divergentsets(repo, ctx) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1292 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1293 |
fm.startitem() |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1294 |
# plain formatter section |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1295 |
hashlen, desclen = 12, 60 |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1296 |
desc = ctx.description() |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1297 |
if desc: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1298 |
desc = desc.splitlines()[0] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1299 |
desc = (desc[:desclen] + '...') if len(desc) > desclen else desc |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1300 |
fm.plain('%s: ' % ctx.hex()[:hashlen]) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1301 |
fm.plain('%s\n' % desc) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1302 |
fm.data(node=ctx.hex(), rev=ctx.rev(), desc=desc, phase=ctx.phasestr()) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1303 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1304 |
for unpar in unpars if showunstable else []: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1305 |
fm.plain(' %s: %s (%s parent)\n' % (TROUBLES['ORPHAN'], |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1306 |
unpar[:hashlen], |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1307 |
TROUBLES['ORPHAN'])) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1308 |
for obspar in obspars if showunstable else []: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1309 |
fm.plain(' %s: %s (obsolete parent)\n' % (TROUBLES['ORPHAN'], |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1310 |
obspar[:hashlen])) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1311 |
for imprec in imprecs if showbumped else []: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1312 |
fm.plain(' %s: %s (immutable precursor)\n' % |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1313 |
(TROUBLES['PHASEDIVERGENT'], imprec[:hashlen])) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1314 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1315 |
if dsets and showdivergent: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1316 |
for dset in dsets: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1317 |
fm.plain(' %s: ' % TROUBLES['CONTENTDIVERGENT']) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1318 |
first = True |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1319 |
for n in dset['divergentnodes']: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1320 |
t = "%s (%s)" if first else " %s (%s)" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1321 |
first = False |
3977
a0a4f4de9ea3
evolvecmd: import mercurial.node module as nodemod
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3927
diff
changeset
|
1322 |
fm.plain(t % (nodemod.hex(n)[:hashlen], repo[n].phasestr())) |
a0a4f4de9ea3
evolvecmd: import mercurial.node module as nodemod
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3927
diff
changeset
|
1323 |
comprec = nodemod.hex(dset['commonprecursor'])[:hashlen] |
3465
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1324 |
fm.plain(" (precursor %s)\n" % comprec) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1325 |
fm.plain("\n") |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1326 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1327 |
# templater-friendly section |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1328 |
_formatctx(fm, ctx) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1329 |
troubles = [] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1330 |
for unpar in unpars: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1331 |
troubles.append({'troubletype': TROUBLES['ORPHAN'], |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1332 |
'sourcenode': unpar, 'sourcetype': 'orphanparent'}) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1333 |
for obspar in obspars: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1334 |
troubles.append({'troubletype': TROUBLES['ORPHAN'], |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1335 |
'sourcenode': obspar, |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1336 |
'sourcetype': 'obsoleteparent'}) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1337 |
for imprec in imprecs: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1338 |
troubles.append({'troubletype': TROUBLES['PHASEDIVERGENT'], |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1339 |
'sourcenode': imprec, |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1340 |
'sourcetype': 'immutableprecursor'}) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1341 |
for dset in dsets: |
3977
a0a4f4de9ea3
evolvecmd: import mercurial.node module as nodemod
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3927
diff
changeset
|
1342 |
divnodes = [{'node': nodemod.hex(n), |
3465
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1343 |
'phase': repo[n].phasestr(), |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1344 |
} for n in dset['divergentnodes']] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1345 |
troubles.append({'troubletype': TROUBLES['CONTENTDIVERGENT'], |
3977
a0a4f4de9ea3
evolvecmd: import mercurial.node module as nodemod
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3927
diff
changeset
|
1346 |
'commonprecursor': nodemod.hex(dset['commonprecursor']), |
3465
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1347 |
'divergentnodes': divnodes}) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1348 |
fm.data(troubles=troubles) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1349 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1350 |
fm.end() |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1351 |
|
3466
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1352 |
def _checkevolveopts(repo, opts): |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1353 |
""" check the options passed to `hg evolve` and warn for deprecation warning |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1354 |
if any """ |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1355 |
|
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1356 |
if opts['continue']: |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1357 |
if opts['any']: |
3582
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
1358 |
raise error.Abort(_('cannot specify both "--any" and "--continue"')) |
3466
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1359 |
if opts['all']: |
3582
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
1360 |
raise error.Abort(_('cannot specify both "--all" and "--continue"')) |
3577
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1361 |
if opts['rev']: |
3582
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
1362 |
raise error.Abort(_('cannot specify both "--rev" and "--continue"')) |
3577
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1363 |
if opts['stop']: |
3582
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
1364 |
raise error.Abort(_('cannot specify both "--stop" and' |
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
1365 |
' "--continue"')) |
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1366 |
if opts['abort']: |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1367 |
raise error.Abort(_('cannot specify both "--abort" and' |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1368 |
' "--continue"')) |
3577
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1369 |
|
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1370 |
if opts['stop']: |
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1371 |
if opts['any']: |
3582
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
1372 |
raise error.Abort(_('cannot specify both "--any" and "--stop"')) |
3577
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1373 |
if opts['all']: |
3582
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
1374 |
raise error.Abort(_('cannot specify both "--all" and "--stop"')) |
3577
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1375 |
if opts['rev']: |
3582
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
1376 |
raise error.Abort(_('cannot specify both "--rev" and "--stop"')) |
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1377 |
if opts['abort']: |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1378 |
raise error.Abort(_('cannot specify both "--abort" and "--stop"')) |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1379 |
|
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1380 |
if opts['abort']: |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1381 |
if opts['any']: |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1382 |
raise error.Abort(_('cannot specify both "--any" and "--abort"')) |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1383 |
if opts['all']: |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1384 |
raise error.Abort(_('cannot specify both "--all" and "--abort"')) |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1385 |
if opts['rev']: |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1386 |
raise error.Abort(_('cannot specify both "--rev" and "--abort"')) |
3466
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1387 |
|
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1388 |
if opts['rev']: |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1389 |
if opts['any']: |
3582
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
1390 |
raise error.Abort(_('cannot specify both "--rev" and "--any"')) |
3466
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1391 |
if opts['all']: |
3582
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
1392 |
raise error.Abort(_('cannot specify both "--rev" and "--all"')) |
3466
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1393 |
|
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1394 |
# Backward compatibility |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1395 |
if opts['unstable']: |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1396 |
msg = ("'evolve --unstable' is deprecated, " |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1397 |
"use 'evolve --orphan'") |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1398 |
repo.ui.deprecwarn(msg, '4.4') |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1399 |
|
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1400 |
opts['orphan'] = opts['divergent'] |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1401 |
|
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1402 |
if opts['divergent']: |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1403 |
msg = ("'evolve --divergent' is deprecated, " |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1404 |
"use 'evolve --content-divergent'") |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1405 |
repo.ui.deprecwarn(msg, '4.4') |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1406 |
|
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1407 |
opts['content_divergent'] = opts['divergent'] |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1408 |
|
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1409 |
if opts['bumped']: |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1410 |
msg = ("'evolve --bumped' is deprecated, " |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1411 |
"use 'evolve --phase-divergent'") |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1412 |
repo.ui.deprecwarn(msg, '4.4') |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1413 |
|
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1414 |
opts['phase_divergent'] = opts['bumped'] |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1415 |
|
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1416 |
return opts |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1417 |
|
3774
4736d0bb81bf
evolve: add an `--update` flag to `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3772
diff
changeset
|
1418 |
def _cleanup(ui, repo, startnode, showprogress, shouldupdate): |
3466
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1419 |
if showprogress: |
4341
d1aab9d82f5b
evolve: adapt for deprecated ui.progress()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4320
diff
changeset
|
1420 |
compat.progress(ui, _('evolve'), None) |
3774
4736d0bb81bf
evolve: add an `--update` flag to `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3772
diff
changeset
|
1421 |
|
4736d0bb81bf
evolve: add an `--update` flag to `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3772
diff
changeset
|
1422 |
if not shouldupdate: |
4377
c2f9de28415a
evolve: document the "if not shouldupdate" block
Martin von Zweigbergk <martinvonz@google.com>
parents:
4376
diff
changeset
|
1423 |
# Move back to startnode, or to its successor if the start node is |
c2f9de28415a
evolve: document the "if not shouldupdate" block
Martin von Zweigbergk <martinvonz@google.com>
parents:
4376
diff
changeset
|
1424 |
# obsolete (perhaps made obsolete by the current `hg evolve`) |
3774
4736d0bb81bf
evolve: add an `--update` flag to `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3772
diff
changeset
|
1425 |
unfi = repo.unfiltered() |
4736d0bb81bf
evolve: add an `--update` flag to `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3772
diff
changeset
|
1426 |
succ = utility._singlesuccessor(repo, unfi[startnode]) |
4736d0bb81bf
evolve: add an `--update` flag to `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3772
diff
changeset
|
1427 |
hg.updaterepo(repo, repo[succ].node(), False) |
4376
0fbf895ce160
evolve: make "startnode" consistently be a node, not a context
Martin von Zweigbergk <martinvonz@google.com>
parents:
4375
diff
changeset
|
1428 |
if repo['.'].node() != startnode: |
3466
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1429 |
ui.status(_('working directory is now at %s\n') % repo['.']) |
0a8e3130ad00
evolvecmd: move more core from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3465
diff
changeset
|
1430 |
|
3465
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1431 |
def divergentsets(repo, ctx): |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1432 |
"""Compute sets of commits divergent with a given one""" |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1433 |
cache = {} |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1434 |
base = {} |
4258
697ec7c2f325
compat: drop 4.3 compatiblity code for `obsutil.allprecursors` function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4257
diff
changeset
|
1435 |
for n in obsutil.allpredecessors(repo.obsstore, [ctx.node()]): |
3465
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1436 |
if n == ctx.node(): |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1437 |
# a node can't be a base for divergence with itself |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1438 |
continue |
3697
6aff4bb3970d
compat: drop compatibility layer for successorssets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3694
diff
changeset
|
1439 |
nsuccsets = obsutil.successorssets(repo, n, cache) |
3465
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1440 |
for nsuccset in nsuccsets: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1441 |
if ctx.node() in nsuccset: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1442 |
# we are only interested in *other* successor sets |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1443 |
continue |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1444 |
if tuple(nsuccset) in base: |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1445 |
# we already know the latest base for this divergency |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1446 |
continue |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1447 |
base[tuple(nsuccset)] = n |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1448 |
divergence = [] |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1449 |
for divset, b in base.iteritems(): |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1450 |
divergence.append({ |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1451 |
'divergentnodes': divset, |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1452 |
'commonprecursor': b |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1453 |
}) |
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1454 |
|
ffe566999920
evolvecmd: move code from __init__.py to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3464
diff
changeset
|
1455 |
return divergence |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1456 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1457 |
@eh.command( |
4191
5c734be63c3e
evolve: adapt for changed @command decorator
Martin von Zweigbergk <martinvonz@google.com>
parents:
4180
diff
changeset
|
1458 |
'evolve|stabilize|solve', |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1459 |
[('n', 'dry-run', False, |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1460 |
_('do not perform actions, just print what would be done')), |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1461 |
('', 'confirm', False, |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1462 |
_('ask for confirmation before performing the action')), |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1463 |
('A', 'any', False, |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1464 |
_('also consider troubled changesets unrelated to current working ' |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1465 |
'directory')), |
4183
536c67823962
commands: adjust metavariables as appropriate
Anton Shestakov <av6@dwimlabs.net>
parents:
4180
diff
changeset
|
1466 |
('r', 'rev', [], _('solves troubles of these revisions'), _('REV')), |
4179
2020c254fe66
evolvecmd: mark flags with old instability names as deprecated
Anton Shestakov <av6@dwimlabs.net>
parents:
4155
diff
changeset
|
1467 |
('', 'bumped', False, _('solves only bumped changesets (DEPRECATED)')), |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1468 |
('', 'phase-divergent', False, _('solves only phase-divergent changesets')), |
4179
2020c254fe66
evolvecmd: mark flags with old instability names as deprecated
Anton Shestakov <av6@dwimlabs.net>
parents:
4155
diff
changeset
|
1469 |
('', 'divergent', False, _('solves only divergent changesets (DEPRECATED)')), |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1470 |
('', 'content-divergent', False, _('solves only content-divergent changesets')), |
4179
2020c254fe66
evolvecmd: mark flags with old instability names as deprecated
Anton Shestakov <av6@dwimlabs.net>
parents:
4155
diff
changeset
|
1471 |
('', 'unstable', False, _('solves only unstable changesets (DEPRECATED)')), |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1472 |
('', 'orphan', False, _('solves only orphan changesets (default)')), |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1473 |
('a', 'all', False, _('evolve all troubled changesets related to the ' |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1474 |
'current working directory and its descendants')), |
3774
4736d0bb81bf
evolve: add an `--update` flag to `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3772
diff
changeset
|
1475 |
('', 'update', True, _('update to the head of evolved changesets')), |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1476 |
('c', 'continue', False, _('continue an interrupted evolution')), |
3577
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1477 |
('', 'stop', False, _('stop the interrupted evolution')), |
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1478 |
('', 'abort', False, _('abort the interrupted evolution')), |
3640
5a127bc27419
evolve: internationalize the entry of --list in hg evolve help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3639
diff
changeset
|
1479 |
('l', 'list', False, _('provide details on troubled changesets' |
5a127bc27419
evolve: internationalize the entry of --list in hg evolve help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3639
diff
changeset
|
1480 |
' in the repo')), |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1481 |
] + mergetoolopts, |
4191
5c734be63c3e
evolve: adapt for changed @command decorator
Martin von Zweigbergk <martinvonz@google.com>
parents:
4180
diff
changeset
|
1482 |
_('[OPTIONS]...'), |
5c734be63c3e
evolve: adapt for changed @command decorator
Martin von Zweigbergk <martinvonz@google.com>
parents:
4180
diff
changeset
|
1483 |
helpbasic=True |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1484 |
) |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1485 |
def evolve(ui, repo, **opts): |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1486 |
"""solve troubled changesets in your repository |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1487 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1488 |
Modifying history can lead to various types of troubled changesets: |
4180
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1489 |
orphan, phase-divergent, or content-divergent. The evolve command resolves |
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1490 |
your troubles by executing one of the following actions: |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1491 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1492 |
- update working copy to a successor |
4180
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1493 |
- rebase an orphan changeset |
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1494 |
- extract the desired changes from a phase-divergent changeset |
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1495 |
- fuse content-divergent changesets back together |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1496 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1497 |
If you pass no arguments, evolve works in automatic mode: it will execute a |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1498 |
single action to reduce instability related to your working copy. There are |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1499 |
two cases for this action. First, if the parent of your working copy is |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1500 |
obsolete, evolve updates to the parent's successor. Second, if the working |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1501 |
copy parent is not obsolete but has obsolete predecessors, then evolve |
4180
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1502 |
determines if there is an orphan changeset that can be rebased onto the |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1503 |
working copy parent in order to reduce instability. |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1504 |
If so, evolve rebases that changeset. If not, evolve refuses to guess your |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1505 |
intention, and gives a hint about what you might want to do next. |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1506 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1507 |
Any time evolve creates a changeset, it updates the working copy to the new |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1508 |
changeset. (Currently, every successful evolve operation involves an update |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1509 |
as well; this may change in future.) |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1510 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1511 |
Automatic mode only handles common use cases. For example, it avoids taking |
4180
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1512 |
action in the case of ambiguity, and it ignores orphan changesets that are |
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1513 |
not related to your working copy. |
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1514 |
It also refuses to solve phase-divergent or content-divergent changesets |
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1515 |
unless you explicitly request such behavior (see below). |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1516 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1517 |
Eliminating all instability around your working copy may require multiple |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1518 |
invocations of :hg:`evolve`. Alternately, use ``--all`` to recursively |
4180
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1519 |
select and evolve all orphan changesets that can be rebased onto the |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1520 |
working copy parent. |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1521 |
This is more powerful than successive invocations, since ``--all`` handles |
4180
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1522 |
ambiguous cases (e.g. orphan changesets with multiple children) by evolving |
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1523 |
all branches. |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1524 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1525 |
When your repository cannot be handled by automatic mode, you might need to |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1526 |
use ``--rev`` to specify a changeset to evolve. For example, if you have |
4180
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1527 |
an orphan changeset that is not related to the working copy parent, |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1528 |
you could use ``--rev`` to evolve it. Or, if some changeset has multiple |
4180
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1529 |
orphan children, evolve in automatic mode refuses to guess which one to |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1530 |
evolve; you have to use ``--rev`` in that case. |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1531 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1532 |
Alternately, ``--any`` makes evolve search for the next evolvable changeset |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1533 |
regardless of whether it is related to the working copy parent. |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1534 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1535 |
You can supply multiple revisions to evolve multiple troubled changesets |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1536 |
in a single invocation. In revset terms, ``--any`` is equivalent to ``--rev |
4180
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1537 |
first(orphan())``. ``--rev`` and ``--all`` are mutually exclusive, as are |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1538 |
``--rev`` and ``--any``. |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1539 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1540 |
``hg evolve --any --all`` is useful for cleaning up instability across all |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1541 |
branches, letting evolve figure out the appropriate order and destination. |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1542 |
|
4180
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1543 |
When you have troubled changesets that are not orphan, :hg:`evolve` refuses |
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1544 |
to consider them unless you specify the category of trouble you |
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1545 |
wish to resolve, with ``--phase-divergent`` or ``--content-divergent``. |
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1546 |
These options are currently mutually exclusive with each other and with |
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1547 |
``--orphan`` (the default). You can combine ``--phase-divergent`` or |
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1548 |
``--content-divergent`` with ``--rev``, ``--all``, or ``--any``. |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1549 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1550 |
You can also use the evolve command to list the troubles affecting your |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1551 |
repository by using the --list flag. You can choose to display only some |
4180
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1552 |
categories of troubles with the --orphan, --content-divergent or |
96525b95d083
evolvecmd: use modern vocabulary in help text for evolve
Anton Shestakov <av6@dwimlabs.net>
parents:
4179
diff
changeset
|
1553 |
--phase-divergent flags. |
3795
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1554 |
|
3821
f67ac33c07d2
evolve: rename help topic evolve.interrupted-evolve to evolve.interrupted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3811
diff
changeset
|
1555 |
Interrupted |
f67ac33c07d2
evolve: rename help topic evolve.interrupted-evolve to evolve.interrupted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3811
diff
changeset
|
1556 |
=========== |
3795
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1557 |
|
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1558 |
The `hg evolve` command is an all purpose tool that solve all kind of |
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1559 |
instabilities in your repository. Sometimes, instability resolution will lead |
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1560 |
to merge conflict that cannot be solved without a human intervention (same as |
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1561 |
`hg merge`). This can lead to an "interrupted state" where human assistance is |
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1562 |
requested. There are three things which you can do when you face a similar |
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1563 |
situation: |
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1564 |
|
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1565 |
- `hg evolve --continue`: |
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1566 |
fix all the conflicts using `hg resolve` and then run this to continue the |
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1567 |
interrupted evolve |
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1568 |
|
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1569 |
- `hg evolve --stop`: |
4265
4d62095d9fe6
evolve: fix a documentation typo
Eric Spishak-Thomas <spishak@google.com>
parents:
4235
diff
changeset
|
1570 |
stops the current interrupted evolve, keeping all the successful steps, |
3795
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1571 |
but delaying to resolution of the remaining step for later. |
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1572 |
|
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1573 |
- `hg evolve --abort`: |
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1574 |
aborts the interrupted evolve and undoes all the resolution which have |
b8b4ff86feb8
evolve: add a help topic `Interrupted-Evolve`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3794
diff
changeset
|
1575 |
happened |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1576 |
""" |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1577 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1578 |
opts = _checkevolveopts(repo, opts) |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1579 |
# Options |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1580 |
contopt = opts['continue'] |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1581 |
anyopt = opts['any'] |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1582 |
allopt = opts['all'] |
4376
0fbf895ce160
evolve: make "startnode" consistently be a node, not a context
Martin von Zweigbergk <martinvonz@google.com>
parents:
4375
diff
changeset
|
1583 |
startnode = repo['.'].node() |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1584 |
dryrunopt = opts['dry_run'] |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1585 |
confirmopt = opts['confirm'] |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1586 |
revopt = opts['rev'] |
3577
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1587 |
stopopt = opts['stop'] |
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1588 |
abortopt = opts['abort'] |
3774
4736d0bb81bf
evolve: add an `--update` flag to `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3772
diff
changeset
|
1589 |
shouldupdate = opts['update'] |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1590 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1591 |
troublecategories = ['phase_divergent', 'content_divergent', 'orphan'] |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1592 |
specifiedcategories = [t.replace('_', '') |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1593 |
for t in troublecategories |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1594 |
if opts[t]] |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1595 |
if opts['list']: |
3701
29c413a7dfb5
compat: drop compatibility layer for pager
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3700
diff
changeset
|
1596 |
ui.pager('evolve') |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1597 |
listtroubles(ui, repo, specifiedcategories, **opts) |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1598 |
return |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1599 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1600 |
targetcat = 'orphan' |
4420
6a20e0e9b957
evolve: make sure user can recover from conflict (issue6053)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4348
diff
changeset
|
1601 |
has_some_opts = bool(revopt or anyopt or allopt or contopt or stopopt or abortopt) |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1602 |
if 1 < len(specifiedcategories): |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1603 |
msg = _('cannot specify more than one trouble category to solve (yet)') |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1604 |
raise error.Abort(msg) |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1605 |
elif len(specifiedcategories) == 1: |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1606 |
targetcat = specifiedcategories[0] |
4420
6a20e0e9b957
evolve: make sure user can recover from conflict (issue6053)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4348
diff
changeset
|
1607 |
elif repo['.'].obsolete() and not has_some_opts: |
4347
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1608 |
# if no args and parent is obsolete, update to successors |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1609 |
return solveobswdp(ui, repo, opts) |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1610 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1611 |
ui.setconfig('ui', 'forcemerge', opts.get('tool', ''), 'evolve') |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1612 |
troubled = set(repo.revs('troubled()')) |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1613 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1614 |
# Progress handling |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1615 |
seen = 1 |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1616 |
count = allopt and len(troubled) or 1 |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1617 |
showprogress = allopt |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1618 |
|
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1619 |
def progresscb(): |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1620 |
if revopt or allopt: |
4341
d1aab9d82f5b
evolve: adapt for deprecated ui.progress()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4320
diff
changeset
|
1621 |
compat.progress(ui, _('evolve'), seen, unit=_('changesets'), total=count) |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1622 |
|
3477
713e26a647f5
evolve: create a state object in all case
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3470
diff
changeset
|
1623 |
evolvestate = state.cmdstate(repo) |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1624 |
# Continuation handling |
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1625 |
if contopt: |
3556
b0438c9101ad
evolve: load evolvestate before passing to continueevolve()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3555
diff
changeset
|
1626 |
if not evolvestate: |
3582
8d93f76aa04d
evolvecmd: show some internationalization love
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3579
diff
changeset
|
1627 |
raise error.Abort(_('no interrupted evolve to continue')) |
3556
b0438c9101ad
evolve: load evolvestate before passing to continueevolve()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3555
diff
changeset
|
1628 |
evolvestate.load() |
3557
77a400149758
evolve: move deletion of evolvestate out of continueevolve() function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3556
diff
changeset
|
1629 |
continueevolve(ui, repo, evolvestate, progresscb) |
3558
cec6e21b3bcf
evolve: de-duplicate some function calls
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3557
diff
changeset
|
1630 |
if evolvestate['command'] != 'evolve': |
cec6e21b3bcf
evolve: de-duplicate some function calls
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3557
diff
changeset
|
1631 |
evolvestate.delete() |
cec6e21b3bcf
evolve: de-duplicate some function calls
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3557
diff
changeset
|
1632 |
return |
cec6e21b3bcf
evolve: de-duplicate some function calls
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3557
diff
changeset
|
1633 |
startnode = repo.unfiltered()[evolvestate['startnode']] |
4505
cc2bbe2701a3
evolve: store --update flag state in evolvestate file
Anton Shestakov <av6@dwimlabs.net>
parents:
4500
diff
changeset
|
1634 |
if 'update' in evolvestate: |
cc2bbe2701a3
evolve: store --update flag state in evolvestate file
Anton Shestakov <av6@dwimlabs.net>
parents:
4500
diff
changeset
|
1635 |
shouldupdate = evolvestate['update'] |
3557
77a400149758
evolve: move deletion of evolvestate out of continueevolve() function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3556
diff
changeset
|
1636 |
evolvestate.delete() |
3577
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1637 |
elif stopopt: |
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1638 |
if not evolvestate: |
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1639 |
raise error.Abort(_('no interrupted evolve to stop')) |
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1640 |
evolvestate.load() |
3824
a8f509981d30
evolve: factor out logic for --stop flag in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3822
diff
changeset
|
1641 |
stopevolve(ui, repo, evolvestate) |
3577
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1642 |
evolvestate.delete() |
279d8b610ac5
evolve: add a `--stop` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3573
diff
changeset
|
1643 |
return |
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1644 |
elif abortopt: |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1645 |
if not evolvestate: |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1646 |
raise error.Abort(_('no interrupted evolve to stop')) |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1647 |
evolvestate.load() |
3776
2d450974bb1c
evolve: fix `hg abort` when hg next --evolve leads to conflicts (issue5897)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3707
diff
changeset
|
1648 |
# `hg next --evolve` in play |
2d450974bb1c
evolve: fix `hg abort` when hg next --evolve leads to conflicts (issue5897)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3707
diff
changeset
|
1649 |
if evolvestate['command'] != 'evolve': |
2d450974bb1c
evolve: fix `hg abort` when hg next --evolve leads to conflicts (issue5897)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3707
diff
changeset
|
1650 |
pctx = repo['.'] |
2d450974bb1c
evolve: fix `hg abort` when hg next --evolve leads to conflicts (issue5897)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3707
diff
changeset
|
1651 |
hg.updaterepo(repo, pctx.node(), True) |
2d450974bb1c
evolve: fix `hg abort` when hg next --evolve leads to conflicts (issue5897)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3707
diff
changeset
|
1652 |
ui.status(_('evolve aborted\n')) |
2d450974bb1c
evolve: fix `hg abort` when hg next --evolve leads to conflicts (issue5897)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3707
diff
changeset
|
1653 |
ui.status(_('working directory is now at %s\n') |
2d450974bb1c
evolve: fix `hg abort` when hg next --evolve leads to conflicts (issue5897)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3707
diff
changeset
|
1654 |
% pctx.hex()[:12]) |
3981
b4d0245c7f40
evolve: delete evolvestate after aborting interrupted `next --evolve`
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3978
diff
changeset
|
1655 |
evolvestate.delete() |
3776
2d450974bb1c
evolve: fix `hg abort` when hg next --evolve leads to conflicts (issue5897)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3707
diff
changeset
|
1656 |
return 0 |
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1657 |
return abortevolve(ui, repo, evolvestate) |
3555
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1658 |
else: |
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1659 |
cmdutil.bailifchanged(repo) |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1660 |
|
3555
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1661 |
revs = _selectrevs(repo, allopt, revopt, anyopt, targetcat) |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1662 |
|
4348
398c33b17d76
evolve: make sure we don't stop after evolution of obsparent (issue5881)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4347
diff
changeset
|
1663 |
# Case: when wdir parent is obsolete and args passed. |
398c33b17d76
evolve: make sure we don't stop after evolution of obsparent (issue5881)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4347
diff
changeset
|
1664 |
# Handling it here otherwise `revs` set would change, after |
398c33b17d76
evolve: make sure we don't stop after evolution of obsparent (issue5881)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4347
diff
changeset
|
1665 |
# performing update to successor of obsolete wdir parent. |
398c33b17d76
evolve: make sure we don't stop after evolution of obsparent (issue5881)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4347
diff
changeset
|
1666 |
# (in case when user passes a revset related to wdir parent '.::') |
398c33b17d76
evolve: make sure we don't stop after evolution of obsparent (issue5881)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4347
diff
changeset
|
1667 |
if repo['.'].obsolete(): |
398c33b17d76
evolve: make sure we don't stop after evolution of obsparent (issue5881)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4347
diff
changeset
|
1668 |
result = solveobswdp(ui, repo, opts) |
398c33b17d76
evolve: make sure we don't stop after evolution of obsparent (issue5881)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4347
diff
changeset
|
1669 |
if result != 0 or result is True: |
398c33b17d76
evolve: make sure we don't stop after evolution of obsparent (issue5881)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4347
diff
changeset
|
1670 |
return result |
398c33b17d76
evolve: make sure we don't stop after evolution of obsparent (issue5881)
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4347
diff
changeset
|
1671 |
|
3555
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1672 |
if not revs: |
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1673 |
return _handlenotrouble(ui, repo, allopt, revopt, anyopt, targetcat) |
3470
ece5cd58147d
evolve: move the evolve command to evolvecmd.py
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3469
diff
changeset
|
1674 |
|
3555
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1675 |
# For the progress bar to show |
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1676 |
count = len(revs) |
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1677 |
# Order the revisions |
3845
5c964ebe4d4b
evolve: always order the revs to be evolved
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3843
diff
changeset
|
1678 |
revs = _orderrevs(repo, revs) |
3480
1799fc777f30
evolve: store the target category in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3479
diff
changeset
|
1679 |
|
3555
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1680 |
# cbor does not know how to serialize sets, using list for skippedrevs |
3627
31569df48c82
evolve: explicitly turn revs to list before storing into evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3624
diff
changeset
|
1681 |
stateopts = {'category': targetcat, 'replacements': {}, |
31569df48c82
evolve: explicitly turn revs to list before storing into evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3624
diff
changeset
|
1682 |
'revs': list(revs), 'confirm': confirmopt, |
4376
0fbf895ce160
evolve: make "startnode" consistently be a node, not a context
Martin von Zweigbergk <martinvonz@google.com>
parents:
4375
diff
changeset
|
1683 |
'startnode': startnode, 'skippedrevs': [], |
3653
d9682c41ea2f
evolve: restore bookmarks correctly after `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3649
diff
changeset
|
1684 |
'command': 'evolve', 'orphanmerge': False, |
4505
cc2bbe2701a3
evolve: store --update flag state in evolvestate file
Anton Shestakov <av6@dwimlabs.net>
parents:
4500
diff
changeset
|
1685 |
'bookmarkchanges': [], 'temprevs': [], 'obsmarkers': [], |
cc2bbe2701a3
evolve: store --update flag state in evolvestate file
Anton Shestakov <av6@dwimlabs.net>
parents:
4500
diff
changeset
|
1686 |
'update': shouldupdate} |
3555
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1687 |
evolvestate.addopts(stateopts) |
4122
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
1688 |
# lastsolved: keep track of successor of last troubled cset we evolved |
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
1689 |
# to confirm that if atop msg should be suppressed to remove redundancy |
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
1690 |
lastsolved = None |
4155
cc3a0b13ae57
evolve: use stack alias s# in `hg evolve` msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4154
diff
changeset
|
1691 |
|
cc3a0b13ae57
evolve: use stack alias s# in `hg evolve` msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4154
diff
changeset
|
1692 |
activetopic = getattr(repo, 'currenttopic', '') |
3555
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1693 |
for rev in revs: |
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1694 |
curctx = repo[rev] |
4209
aa9f33078157
evolve: check if we should use stack template for each item in the stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4191
diff
changeset
|
1695 |
revtopic = getattr(curctx, 'topic', lambda: '')() |
aa9f33078157
evolve: check if we should use stack template for each item in the stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4191
diff
changeset
|
1696 |
topicidx = getattr(curctx, 'topicidx', lambda: None)() |
aa9f33078157
evolve: check if we should use stack template for each item in the stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4191
diff
changeset
|
1697 |
stacktmplt = False |
4249
0d9697367fff
evolve: modify and move the comment to appropriate position
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4243
diff
changeset
|
1698 |
# check if revision being evolved is in active topic to make sure |
0d9697367fff
evolve: modify and move the comment to appropriate position
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4243
diff
changeset
|
1699 |
# that we can use stack aliases s# in evolve msgs. |
4209
aa9f33078157
evolve: check if we should use stack template for each item in the stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4191
diff
changeset
|
1700 |
if activetopic and (activetopic == revtopic) and topicidx is not None: |
aa9f33078157
evolve: check if we should use stack template for each item in the stack
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4191
diff
changeset
|
1701 |
stacktmplt = True |
3555
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1702 |
progresscb() |
4122
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
1703 |
ret = _solveone(ui, repo, curctx, evolvestate, dryrunopt, |
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
1704 |
confirmopt, progresscb, targetcat, |
4155
cc3a0b13ae57
evolve: use stack alias s# in `hg evolve` msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4154
diff
changeset
|
1705 |
lastsolved=lastsolved, stacktmplt=stacktmplt) |
3555
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1706 |
seen += 1 |
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1707 |
if ret[0]: |
3753
a558c8adc5af
evolve: don't make values of replacements dict lists
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3742
diff
changeset
|
1708 |
evolvestate['replacements'][curctx.node()] = ret[1] |
4122
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
1709 |
lastsolved = ret[1] |
3555
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1710 |
else: |
60e132e20b14
evolve: move the handling for non-continue part in else conditional
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3554
diff
changeset
|
1711 |
evolvestate['skippedrevs'].append(curctx.node()) |
3573
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
1712 |
|
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
1713 |
if evolvestate['orphanmerge']: |
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
1714 |
# we were processing an orphan merge with both parents obsolete, |
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
1715 |
# stabilized for second parent, re-stabilize for the first parent |
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
1716 |
ret = _solveone(ui, repo, repo[ret[1]], evolvestate, dryrunopt, |
4155
cc3a0b13ae57
evolve: use stack alias s# in `hg evolve` msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4154
diff
changeset
|
1717 |
confirmopt, progresscb, targetcat, |
cc3a0b13ae57
evolve: use stack alias s# in `hg evolve` msgs
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4154
diff
changeset
|
1718 |
stacktmplt=stacktmplt) |
3573
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
1719 |
if ret[0]: |
3753
a558c8adc5af
evolve: don't make values of replacements dict lists
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3742
diff
changeset
|
1720 |
evolvestate['replacements'][curctx.node()] = ret[1] |
4344
e5282131a78d
evolve: cover the orphanmerge part missed by lastsolved
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4341
diff
changeset
|
1721 |
lastsolved = ret[1] |
3573
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
1722 |
else: |
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
1723 |
evolvestate['skippedrevs'].append(curctx.node()) |
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
1724 |
|
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
1725 |
evolvestate['orphanmerge'] = False |
d53277cdc1e7
evolve: handle stabilization of merge changeset with both parents obsoleted
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3571
diff
changeset
|
1726 |
|
3558
cec6e21b3bcf
evolve: de-duplicate some function calls
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3557
diff
changeset
|
1727 |
progresscb() |
3774
4736d0bb81bf
evolve: add an `--update` flag to `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3772
diff
changeset
|
1728 |
_cleanup(ui, repo, startnode, showprogress, shouldupdate) |
3554
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1729 |
|
4347
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1730 |
def solveobswdp(ui, repo, opts): |
4378
0b97d4bea7e0
evolve: add description of function solveobswdp
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4377
diff
changeset
|
1731 |
"""this function updates to the successor of obsolete wdir parent""" |
4347
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1732 |
oldid = repo['.'].node() |
4376
0fbf895ce160
evolve: make "startnode" consistently be a node, not a context
Martin von Zweigbergk <martinvonz@google.com>
parents:
4375
diff
changeset
|
1733 |
startctx = repo['.'] |
4347
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1734 |
dryrunopt = opts.get('dry_run', False) |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1735 |
displayer = compat.changesetdisplayer(ui, repo, |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1736 |
{'template': shorttemplate}) |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1737 |
try: |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1738 |
ctx = repo[utility._singlesuccessor(repo, repo['.'])] |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1739 |
except utility.MultipleSuccessorsError as exc: |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1740 |
repo.ui.write_err(_('parent is obsolete with multiple' |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1741 |
' successors:\n')) |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1742 |
for ln in exc.successorssets: |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1743 |
for n in ln: |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1744 |
displayer.show(repo[n]) |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1745 |
return 2 |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1746 |
|
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1747 |
ui.status(_('update:')) |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1748 |
if not ui.quiet: |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1749 |
displayer.show(ctx) |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1750 |
|
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1751 |
if dryrunopt: |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1752 |
return 0 |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1753 |
res = hg.update(repo, ctx.rev()) |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1754 |
newid = ctx.node() |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1755 |
|
4376
0fbf895ce160
evolve: make "startnode" consistently be a node, not a context
Martin von Zweigbergk <martinvonz@google.com>
parents:
4375
diff
changeset
|
1756 |
if ctx != startctx: |
4347
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1757 |
with repo.wlock(), repo.lock(), repo.transaction('evolve') as tr: |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1758 |
bmupdater = rewriteutil.bookmarksupdater(repo, oldid, tr) |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1759 |
bmupdater(newid) |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1760 |
ui.status(_('working directory is now at %s\n') % ctx) |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1761 |
return res |
59745d6d626d
evolve: extract "update" code into its own function
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4344
diff
changeset
|
1762 |
|
3824
a8f509981d30
evolve: factor out logic for --stop flag in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3822
diff
changeset
|
1763 |
def stopevolve(ui, repo, evolvestate): |
a8f509981d30
evolve: factor out logic for --stop flag in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3822
diff
changeset
|
1764 |
"""logic for handling of `hg evolve --stop`""" |
3826
8e8bd5bb2f90
evolve: declare updated and pctx variables in stopevolve()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3825
diff
changeset
|
1765 |
updated = False |
8e8bd5bb2f90
evolve: declare updated and pctx variables in stopevolve()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3825
diff
changeset
|
1766 |
pctx = None |
4235
e30119dfd626
style: fix various flake8 warning
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4230
diff
changeset
|
1767 |
if (evolvestate['command'] == 'evolve' |
e30119dfd626
style: fix various flake8 warning
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4230
diff
changeset
|
1768 |
and evolvestate['category'] == 'contentdivergent' |
e30119dfd626
style: fix various flake8 warning
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4230
diff
changeset
|
1769 |
and evolvestate['relocated']): |
3827
82c72eb37f85
evolve: strip the relocation commit on `hg evolve --stop`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3826
diff
changeset
|
1770 |
oldother = evolvestate['old-other'] |
82c72eb37f85
evolve: strip the relocation commit on `hg evolve --stop`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3826
diff
changeset
|
1771 |
if oldother: |
82c72eb37f85
evolve: strip the relocation commit on `hg evolve --stop`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3826
diff
changeset
|
1772 |
with repo.wlock(), repo.lock(): |
82c72eb37f85
evolve: strip the relocation commit on `hg evolve --stop`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3826
diff
changeset
|
1773 |
repo = repo.unfiltered() |
82c72eb37f85
evolve: strip the relocation commit on `hg evolve --stop`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3826
diff
changeset
|
1774 |
hg.updaterepo(repo, oldother, True) |
82c72eb37f85
evolve: strip the relocation commit on `hg evolve --stop`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3826
diff
changeset
|
1775 |
strips = [evolvestate['relocated']] |
82c72eb37f85
evolve: strip the relocation commit on `hg evolve --stop`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3826
diff
changeset
|
1776 |
repair.strip(ui, repo, strips, False) |
82c72eb37f85
evolve: strip the relocation commit on `hg evolve --stop`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3826
diff
changeset
|
1777 |
updated = True |
82c72eb37f85
evolve: strip the relocation commit on `hg evolve --stop`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3826
diff
changeset
|
1778 |
pctx = repo[oldother] |
3826
8e8bd5bb2f90
evolve: declare updated and pctx variables in stopevolve()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3825
diff
changeset
|
1779 |
if not updated: |
8e8bd5bb2f90
evolve: declare updated and pctx variables in stopevolve()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3825
diff
changeset
|
1780 |
pctx = repo['.'] |
8e8bd5bb2f90
evolve: declare updated and pctx variables in stopevolve()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3825
diff
changeset
|
1781 |
hg.updaterepo(repo, pctx.node(), True) |
3824
a8f509981d30
evolve: factor out logic for --stop flag in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3822
diff
changeset
|
1782 |
ui.status(_('stopped the interrupted evolve\n')) |
a8f509981d30
evolve: factor out logic for --stop flag in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3822
diff
changeset
|
1783 |
ui.status(_('working directory is now at %s\n') % pctx) |
a8f509981d30
evolve: factor out logic for --stop flag in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3822
diff
changeset
|
1784 |
|
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1785 |
def abortevolve(ui, repo, evolvestate): |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1786 |
""" logic for handling of `hg evolve --abort`""" |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1787 |
|
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1788 |
with repo.wlock(), repo.lock(): |
3757
2bc60fcac354
evolve: make `--abort` strip the temporary revs created during resolution
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3756
diff
changeset
|
1789 |
repo = repo.unfiltered() |
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1790 |
evolvedctx = [] |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1791 |
# boolean value to say whether we should strip or not |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1792 |
cleanup = True |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1793 |
startnode = evolvestate['startnode'] |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1794 |
for old, new in evolvestate['replacements'].iteritems(): |
3755
a19703c6d2bb
evolve: check for None before adding in set of revisions to strip
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3754
diff
changeset
|
1795 |
if new: |
a19703c6d2bb
evolve: check for None before adding in set of revisions to strip
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3754
diff
changeset
|
1796 |
evolvedctx.append(repo[new]) |
3757
2bc60fcac354
evolve: make `--abort` strip the temporary revs created during resolution
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3756
diff
changeset
|
1797 |
for temp in evolvestate['temprevs']: |
2bc60fcac354
evolve: make `--abort` strip the temporary revs created during resolution
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3756
diff
changeset
|
1798 |
if temp: |
2bc60fcac354
evolve: make `--abort` strip the temporary revs created during resolution
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3756
diff
changeset
|
1799 |
evolvedctx.append(repo[temp]) |
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1800 |
evolvedrevs = [c.rev() for c in evolvedctx] |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1801 |
|
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1802 |
# checking if phase changed of any of the evolved rev |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1803 |
immutable = [c for c in evolvedctx if not c.mutable()] |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1804 |
if immutable: |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1805 |
repo.ui.warn(_("cannot clean up public changesets: %s\n") |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1806 |
% ', '.join(str(c) for c in immutable), |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1807 |
hint=_("see 'hg help phases' for details")) |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1808 |
cleanup = False |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1809 |
|
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1810 |
# checking no new changesets are created on evolved revs |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1811 |
descendants = set() |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1812 |
if evolvedrevs: |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1813 |
descendants = set(repo.changelog.descendants(evolvedrevs)) |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1814 |
if descendants - set(evolvedrevs): |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1815 |
repo.ui.warn(_("warning: new changesets detected on destination " |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1816 |
"branch\n")) |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1817 |
cleanup = False |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1818 |
|
3832
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1819 |
# finding the indices of the obsmarkers to be stripped and stripping |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1820 |
# them |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1821 |
if evolvestate['obsmarkers']: |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1822 |
stripmarkers = set() |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1823 |
for m in evolvestate['obsmarkers']: |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1824 |
m = (m[0], m[1]) |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1825 |
stripmarkers.add(m) |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1826 |
indices = [] |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1827 |
allmarkers = obsutil.getmarkers(repo) |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1828 |
for i, m in enumerate(allmarkers): |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1829 |
marker = (m.prednode(), m.succnodes()[0]) |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1830 |
if marker in stripmarkers: |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1831 |
indices.append(i) |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1832 |
|
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1833 |
repair.deleteobsmarkers(repo.obsstore, indices) |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1834 |
repo.ui.debug('deleted %d obsmarkers\n' % len(indices)) |
fb821ed44f86
evolve: strip the extra obsmarkers if any on `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3831
diff
changeset
|
1835 |
|
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1836 |
if cleanup: |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1837 |
if evolvedrevs: |
3643
01108d67523f
style: fix a couple of pyflakes complains
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3642
diff
changeset
|
1838 |
strippoints = [c.node() |
01108d67523f
style: fix a couple of pyflakes complains
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3642
diff
changeset
|
1839 |
for c in repo.set('roots(%ld)', evolvedrevs)] |
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1840 |
|
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1841 |
# updating the working directory |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1842 |
hg.updaterepo(repo, startnode, True) |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1843 |
|
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1844 |
# Strip from the first evolved revision |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1845 |
if evolvedrevs: |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1846 |
# no backup of evolved cset versions needed |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1847 |
repair.strip(repo.ui, repo, strippoints, False) |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1848 |
|
3653
d9682c41ea2f
evolve: restore bookmarks correctly after `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3649
diff
changeset
|
1849 |
tr = None |
d9682c41ea2f
evolve: restore bookmarks correctly after `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3649
diff
changeset
|
1850 |
try: |
d9682c41ea2f
evolve: restore bookmarks correctly after `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3649
diff
changeset
|
1851 |
tr = repo.transaction('evolve') |
d9682c41ea2f
evolve: restore bookmarks correctly after `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3649
diff
changeset
|
1852 |
# restoring bookmarks at there original place |
d9682c41ea2f
evolve: restore bookmarks correctly after `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3649
diff
changeset
|
1853 |
bmchanges = evolvestate['bookmarkchanges'] |
d9682c41ea2f
evolve: restore bookmarks correctly after `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3649
diff
changeset
|
1854 |
if bmchanges: |
3699
67d6cc7e0979
compat: drop compatibility layer for bookmark.applychanges
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3698
diff
changeset
|
1855 |
repo._bookmarks.applychanges(repo, tr, bmchanges) |
3653
d9682c41ea2f
evolve: restore bookmarks correctly after `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3649
diff
changeset
|
1856 |
tr.close() |
d9682c41ea2f
evolve: restore bookmarks correctly after `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3649
diff
changeset
|
1857 |
finally: |
d9682c41ea2f
evolve: restore bookmarks correctly after `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3649
diff
changeset
|
1858 |
tr.release() |
d9682c41ea2f
evolve: restore bookmarks correctly after `hg evolve --abort`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3649
diff
changeset
|
1859 |
|
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1860 |
evolvestate.delete() |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1861 |
ui.status(_('evolve aborted\n')) |
3643
01108d67523f
style: fix a couple of pyflakes complains
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3642
diff
changeset
|
1862 |
ui.status(_('working directory is now at %s\n') |
3977
a0a4f4de9ea3
evolvecmd: import mercurial.node module as nodemod
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3927
diff
changeset
|
1863 |
% nodemod.hex(startnode)[:12]) |
3642
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1864 |
else: |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1865 |
raise error.Abort(_("unable to abort interrupted evolve, use 'hg " |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1866 |
"evolve --stop' to stop evolve")) |
319b1f0f4de2
evolve: add a `--abort` flag for `hg evolve` command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3640
diff
changeset
|
1867 |
|
3554
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1868 |
def continueevolve(ui, repo, evolvestate, progresscb): |
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1869 |
"""logic for handling of `hg evolve --continue`""" |
3629
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
1870 |
|
3554
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1871 |
with repo.wlock(), repo.lock(): |
4311
8aa28e68ac44
evolve: detect unresolved conflict during evolve --continue (issue5966)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4297
diff
changeset
|
1872 |
ms = merge.mergestate.read(repo) |
8aa28e68ac44
evolve: detect unresolved conflict during evolve --continue (issue5966)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4297
diff
changeset
|
1873 |
mergeutil.checkunresolved(ms) |
4235
e30119dfd626
style: fix various flake8 warning
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4230
diff
changeset
|
1874 |
if (evolvestate['command'] == 'next' |
e30119dfd626
style: fix various flake8 warning
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4230
diff
changeset
|
1875 |
or evolvestate['category'] == 'orphan'): |
3629
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
1876 |
_completeorphan(ui, repo, evolvestate) |
3633
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1877 |
elif evolvestate['category'] == 'phasedivergent': |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1878 |
_completephasedivergent(ui, repo, evolvestate) |
3737
5b0bd82ea914
evolve: add logic to continue interrupted content-divergence resolution
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3736
diff
changeset
|
1879 |
elif evolvestate['category'] == 'contentdivergent': |
3822
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1880 |
_continuecontentdivergent(ui, repo, evolvestate, progresscb) |
3554
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1881 |
else: |
3629
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
1882 |
repo.ui.status(_("continuing interrupted '%s' resolution is not yet" |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
1883 |
" supported\n") % evolvestate['category']) |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
1884 |
return |
3554
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1885 |
|
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1886 |
# make sure we are continuing evolve and not `hg next --evolve` |
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1887 |
if evolvestate['command'] == 'evolve': |
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1888 |
category = evolvestate['category'] |
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1889 |
confirm = evolvestate['confirm'] |
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1890 |
unfi = repo.unfiltered() |
4122
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
1891 |
# lastsolved: keep track of successor of last troubled cset we |
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
1892 |
# evolved to confirm that if atop msg should be suppressed to remove |
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
1893 |
# redundancy |
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
1894 |
lastsolved = None |
4221
db70de7c1698
evolve: use stack template in --continue case also
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4219
diff
changeset
|
1895 |
activetopic = getattr(repo, 'currenttopic', '') |
3554
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1896 |
for rev in evolvestate['revs']: |
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1897 |
# XXX: prevent this lookup by storing nodes instead of revnums |
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1898 |
curctx = unfi[rev] |
4221
db70de7c1698
evolve: use stack template in --continue case also
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4219
diff
changeset
|
1899 |
|
db70de7c1698
evolve: use stack template in --continue case also
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4219
diff
changeset
|
1900 |
# check if we can use stack template |
db70de7c1698
evolve: use stack template in --continue case also
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4219
diff
changeset
|
1901 |
revtopic = getattr(curctx, 'topic', lambda: '')() |
db70de7c1698
evolve: use stack template in --continue case also
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4219
diff
changeset
|
1902 |
topicidx = getattr(curctx, 'topicidx', lambda: None)() |
db70de7c1698
evolve: use stack template in --continue case also
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4219
diff
changeset
|
1903 |
stacktmplt = False |
4236
259d57b906a4
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
diff
changeset
|
1904 |
if (activetopic and (activetopic == revtopic) |
259d57b906a4
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
diff
changeset
|
1905 |
and topicidx is not None): |
4221
db70de7c1698
evolve: use stack template in --continue case also
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4219
diff
changeset
|
1906 |
stacktmplt = True |
db70de7c1698
evolve: use stack template in --continue case also
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4219
diff
changeset
|
1907 |
|
4235
e30119dfd626
style: fix various flake8 warning
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4230
diff
changeset
|
1908 |
if (curctx.node() not in evolvestate['replacements'] |
e30119dfd626
style: fix various flake8 warning
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4230
diff
changeset
|
1909 |
and curctx.node() not in evolvestate['skippedrevs']): |
3554
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1910 |
newnode = _solveone(ui, repo, curctx, evolvestate, False, |
4122
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
1911 |
confirm, progresscb, category, |
4221
db70de7c1698
evolve: use stack template in --continue case also
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4219
diff
changeset
|
1912 |
lastsolved=lastsolved, |
db70de7c1698
evolve: use stack template in --continue case also
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4219
diff
changeset
|
1913 |
stacktmplt=stacktmplt) |
3554
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1914 |
if newnode[0]: |
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1915 |
evolvestate['replacements'][curctx.node()] = newnode[1] |
4122
4eb3877540f1
evovle: remove redundancy in evolve output
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4090
diff
changeset
|
1916 |
lastsolved = newnode[1] |
3554
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1917 |
else: |
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1918 |
evolvestate['skippedrevs'].append(curctx.node()) |
f045fafd3484
evolve: move the logic of continuation handling of `hg evolve` in own fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3545
diff
changeset
|
1919 |
return |
3629
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
1920 |
|
3822
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1921 |
def _continuecontentdivergent(ui, repo, evolvestate, progresscb): |
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1922 |
"""function to continue the interrupted content-divergence resolution.""" |
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1923 |
tr = None |
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1924 |
try: |
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1925 |
tr = repo.transaction('evolve') |
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1926 |
divergent = evolvestate['divergent'] |
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1927 |
base = evolvestate['base'] |
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1928 |
repo = repo.unfiltered() |
3881
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1929 |
if evolvestate['relocating']: |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1930 |
newother = _completerelocation(ui, repo, evolvestate) |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1931 |
current = repo[evolvestate['current']] |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1932 |
obsolete.createmarkers(repo, [(current, (repo[newother],))], |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1933 |
operation='evolve') |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1934 |
evolvestate['relocating'] = False |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1935 |
evolvestate['relocated'] = newother |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1936 |
evolvestate['temprevs'].append(newother) |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1937 |
evolvestate['other-divergent'] = newother |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1938 |
# continue the resolution by merging the content-divergence |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1939 |
_mergecontentdivergents(repo, progresscb, |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1940 |
repo[divergent], |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1941 |
repo[newother], |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1942 |
repo[base], |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1943 |
evolvestate) |
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1944 |
|
9cf45b94f977
evolve: continue conflicted relocation content-divergence
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3879
diff
changeset
|
1945 |
other = evolvestate['other-divergent'] |
3822
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1946 |
ret = _completecontentdivergent(ui, repo, progresscb, |
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1947 |
repo[divergent], |
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1948 |
repo[other], |
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1949 |
repo[base], |
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1950 |
evolvestate) |
4408
02ece0e5865e
evolve: fix the broken behaviour on div resolution in relocation case
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4403
diff
changeset
|
1951 |
origdivergent = evolvestate['orig-divergent'] |
02ece0e5865e
evolve: fix the broken behaviour on div resolution in relocation case
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4403
diff
changeset
|
1952 |
evolvestate['replacements'][origdivergent] = ret[1] |
4384
8993fd4805d0
evolve: update the public divergence resolution logic to cover --continue case
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4383
diff
changeset
|
1953 |
# logic to continue the public content-divergent |
4415
29733c2b0fd3
evolve: rename npublicdiv to publicnode
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4414
diff
changeset
|
1954 |
publicnode = evolvestate.get('public-divergent') |
29733c2b0fd3
evolve: rename npublicdiv to publicnode
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4414
diff
changeset
|
1955 |
if publicnode: |
4384
8993fd4805d0
evolve: update the public divergence resolution logic to cover --continue case
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4383
diff
changeset
|
1956 |
res, newnode = ret |
8993fd4805d0
evolve: update the public divergence resolution logic to cover --continue case
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4383
diff
changeset
|
1957 |
if not res: |
4414
29645d5ba3d9
evolve: in pubdiv resolution make sure that transaction get closed
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4413
diff
changeset
|
1958 |
# no need to proceed for phase divergence resolution step |
29645d5ba3d9
evolve: in pubdiv resolution make sure that transaction get closed
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4413
diff
changeset
|
1959 |
pass |
4417
b86413cfca4a
evolve: cover continue case in pubdiv when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4416
diff
changeset
|
1960 |
elif newnode == publicnode: |
b86413cfca4a
evolve: cover continue case in pubdiv when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4416
diff
changeset
|
1961 |
# merging had the same changes as public changeset and |
b86413cfca4a
evolve: cover continue case in pubdiv when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4416
diff
changeset
|
1962 |
# divergence has been resolved by creating markers |
b86413cfca4a
evolve: cover continue case in pubdiv when merging results in same as public
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4416
diff
changeset
|
1963 |
pass |
4414
29645d5ba3d9
evolve: in pubdiv resolution make sure that transaction get closed
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4413
diff
changeset
|
1964 |
else: |
4415
29733c2b0fd3
evolve: rename npublicdiv to publicnode
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4414
diff
changeset
|
1965 |
prec = repo[publicnode] |
4414
29645d5ba3d9
evolve: in pubdiv resolution make sure that transaction get closed
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4413
diff
changeset
|
1966 |
bumped = repo[newnode] |
4466
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
1967 |
ret = _resolvephasedivergent(ui, repo, prec=prec, bumped=bumped) |
3822
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1968 |
tr.close() |
4384
8993fd4805d0
evolve: update the public divergence resolution logic to cover --continue case
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4383
diff
changeset
|
1969 |
return ret |
3822
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1970 |
finally: |
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1971 |
tr.release() |
cb060c408b41
evolve: move logic to continue interrupted content-div resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3821
diff
changeset
|
1972 |
|
3633
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1973 |
def _completephasedivergent(ui, repo, evolvestate): |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1974 |
"""function to complete the interrupted phase-divergence resolution. |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1975 |
|
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1976 |
First completes the relocation of the commit and then process resolving |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1977 |
phase-divergence""" |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1978 |
|
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1979 |
tr = None |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1980 |
try: |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1981 |
# need to start transaction for bookmark changes |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1982 |
tr = repo.transaction('evolve') |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1983 |
node = _completerelocation(ui, repo, evolvestate) |
3772
6240579fd0c0
evolve: fix storage of replacements and temprevs node in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3760
diff
changeset
|
1984 |
evolvestate['temprevs'].append(node) |
3633
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1985 |
# resolving conflicts can lead to empty wdir and node can be None in |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1986 |
# those cases |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1987 |
ctx = repo[evolvestate['current']] |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1988 |
newctx = repo[node] if node is not None else repo['.'] |
3694
c0d5e0929f8b
compat: from compatibility layer for createmarkers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3676
diff
changeset
|
1989 |
obsolete.createmarkers(repo, [(ctx, (newctx,))], operation='evolve') |
3633
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1990 |
|
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1991 |
# now continuing the phase-divergence resolution part |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1992 |
prec = repo[evolvestate['precursor']] |
4466
cc4506838589
evolve: remove tmpctx arg from _resolvephasedivergent()
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4465
diff
changeset
|
1993 |
retvalue = _resolvephasedivergent(ui, repo, prec, newctx) |
3772
6240579fd0c0
evolve: fix storage of replacements and temprevs node in evolvestate
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3760
diff
changeset
|
1994 |
evolvestate['replacements'][ctx.node()] = retvalue[1] |
3633
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1995 |
tr.close() |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1996 |
finally: |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1997 |
tr.release() |
ed3032ee53eb
evolve: handle interrupted phase-divergence resolution gracefully
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3632
diff
changeset
|
1998 |
|
3629
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
1999 |
def _completeorphan(ui, repo, evolvestate): |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2000 |
"""function to complete the interrupted orphan resolution""" |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2001 |
|
3630
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2002 |
node = _completerelocation(ui, repo, evolvestate) |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2003 |
# resolving conflicts can lead to empty wdir and node can be None in |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2004 |
# those cases |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2005 |
ctx = repo[evolvestate['current']] |
3636
92a2d3217de9
evolve: show a message when evolution leads to no changes to commit
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3635
diff
changeset
|
2006 |
if node is None: |
92a2d3217de9
evolve: show a message when evolution leads to no changes to commit
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3635
diff
changeset
|
2007 |
repo.ui.status(_("evolution of %d:%s created no changes" |
92a2d3217de9
evolve: show a message when evolution leads to no changes to commit
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3635
diff
changeset
|
2008 |
" to commit\n") % (ctx.rev(), ctx)) |
3630
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2009 |
newctx = repo[node] if node is not None else repo['.'] |
3694
c0d5e0929f8b
compat: from compatibility layer for createmarkers
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3676
diff
changeset
|
2010 |
obsolete.createmarkers(repo, [(ctx, (newctx,))], operation='evolve') |
3630
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2011 |
|
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2012 |
# make sure we are continuing evolve and not `hg next --evolve` |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2013 |
if evolvestate['command'] == 'evolve': |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2014 |
evolvestate['replacements'][ctx.node()] = node |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2015 |
if evolvestate['orphanmerge']: |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2016 |
# processing a merge changeset with both parents obsoleted, |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2017 |
# stabilized on second parent, insert in front of list to |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2018 |
# re-process to stabilize on first parent |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2019 |
evolvestate['revs'].insert(0, repo[node].rev()) |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2020 |
evolvestate['orphanmerge'] = False |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2021 |
|
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2022 |
def _completerelocation(ui, repo, evolvestate): |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2023 |
"""function to complete the interrupted relocation of a commit |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2024 |
return the new node formed |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2025 |
""" |
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2026 |
|
3629
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2027 |
orig = repo[evolvestate['current']] |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2028 |
ctx = orig |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2029 |
source = ctx.extra().get('source') |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2030 |
extra = {} |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2031 |
if source: |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2032 |
extra['source'] = source |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2033 |
extra['intermediate-source'] = ctx.hex() |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2034 |
else: |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2035 |
extra['source'] = ctx.hex() |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2036 |
user = ctx.user() |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2037 |
date = ctx.date() |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2038 |
message = ctx.description() |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2039 |
ui.status(_('evolving %d:%s "%s"\n') % (ctx.rev(), ctx, |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2040 |
message.split('\n', 1)[0])) |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2041 |
targetphase = max(ctx.phase(), phases.draft) |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2042 |
overrides = {('phases', 'new-commit'): targetphase} |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2043 |
|
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2044 |
ctxparents = orig.parents() |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2045 |
if len(ctxparents) == 2: |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2046 |
currentp1 = repo.dirstate.parents()[0] |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2047 |
p1obs = ctxparents[0].obsolete() |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2048 |
p2obs = ctxparents[1].obsolete() |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2049 |
# asumming that the parent of current wdir is successor of one |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2050 |
# of p1 or p2 of the original changeset |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2051 |
if p1obs and not p2obs: |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2052 |
# p1 is obsolete and p2 is not obsolete, current working |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2053 |
# directory parent should be successor of p1, so we should |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2054 |
# set dirstate parents to (succ of p1, p2) |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2055 |
with repo.dirstate.parentchange(): |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2056 |
repo.dirstate.setparents(currentp1, |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2057 |
ctxparents[1].node()) |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2058 |
elif p2obs and not p1obs: |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2059 |
# p2 is obsolete and p1 is not obsolete, current working |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2060 |
# directory parent should be successor of p2, so we should |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2061 |
# set dirstate parents to (succ of p2, p1) |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2062 |
with repo.dirstate.parentchange(): |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2063 |
repo.dirstate.setparents(ctxparents[0].node(), |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2064 |
currentp1) |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2065 |
|
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2066 |
else: |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2067 |
# both the parents were obsoleted, if orphanmerge is set, we |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2068 |
# are processing the second parent first (to keep parent order) |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2069 |
if evolvestate.get('orphanmerge'): |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2070 |
with repo.dirstate.parentchange(): |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2071 |
repo.dirstate.setparents(ctxparents[0].node(), |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2072 |
currentp1) |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2073 |
pass |
3978
fb8e44c70798
evolve: set the second parent if we get conflicts while evolving
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3977
diff
changeset
|
2074 |
else: |
fb8e44c70798
evolve: set the second parent if we get conflicts while evolving
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3977
diff
changeset
|
2075 |
with repo.dirstate.parentchange(): |
fb8e44c70798
evolve: set the second parent if we get conflicts while evolving
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
3977
diff
changeset
|
2076 |
repo.dirstate.setparents(repo.dirstate.parents()[0], nodemod.nullid) |
3629
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2077 |
|
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2078 |
with repo.ui.configoverride(overrides, 'evolve-continue'): |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2079 |
node = repo.commit(text=message, user=user, |
f23946bf6625
evolve: move logic to complete interrupted orphan resolution to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3628
diff
changeset
|
2080 |
date=date, extra=extra) |
3630
2789c0ec2ad7
evolve: move logic to complete interrupted relocation to new fn
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3629
diff
changeset
|
2081 |
return node |