Mercurial > public > mercurial-scm > hg-stable
annotate mercurial/destutil.py @ 28065:6b1fc09c699a
update: change default destination to tipmost descendant (issue4673) (BC)
Bare 'hg update' now brings you to the tipmost descendant (on the same branch).
Leaving the user on the same topological branch. The previous behavior, updating
to the tipmost changeset on the same branch could lead to jump from a
topological branch to another. This was confusing and impractical. As the only
conceivable reason for the old behavior have been address by the recently
introduce message about other heads, we can "safely" change this behavior
All test changes have been reviewed and seen a valid consequences.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Tue, 02 Feb 2016 15:24:11 +0000 |
parents | 72072cfc7e91 |
children | bd74b5e0d2c0 |
rev | line source |
---|---|
26569
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
1 # destutil.py - Mercurial utility function for command destination |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
2 # |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
3 # Copyright Matt Mackall <mpm@selenic.com> and other |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
4 # |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
6 # GNU General Public License version 2 or any later version. |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
7 |
27333
2c60b4b2a0de
destutil: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27262
diff
changeset
|
8 from __future__ import absolute_import |
2c60b4b2a0de
destutil: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27262
diff
changeset
|
9 |
26569
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
10 from .i18n import _ |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
11 from . import ( |
26641
5c57d01fe64e
destupdate: also include bookmark related logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26629
diff
changeset
|
12 bookmarks, |
26569
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
13 error, |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
14 obsolete, |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
15 ) |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
16 |
26720
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
17 def _destupdatevalidate(repo, rev, clean, check): |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
18 """validate that the destination comply to various rules |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
19 |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
20 This exists as its own function to help wrapping from extensions.""" |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
21 wc = repo[None] |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
22 p1 = wc.p1() |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
23 if not clean: |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
24 # Check that the update is linear. |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
25 # |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
26 # Mercurial do not allow update-merge for non linear pattern |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
27 # (that would be technically possible but was considered too confusing |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
28 # for user a long time ago) |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
29 # |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
30 # See mercurial.merge.update for details |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
31 if p1.rev() not in repo.changelog.ancestors([rev], inclusive=True): |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
32 dirty = wc.dirty(missing=True) |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
33 foreground = obsolete.foreground(repo, [p1.node()]) |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
34 if not repo[rev].node() in foreground: |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
35 if dirty: |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
36 msg = _("uncommitted changes") |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
37 hint = _("commit and merge, or update --clean to" |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
38 " discard changes") |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
39 raise error.UpdateAbort(msg, hint=hint) |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
40 elif not check: # destination is not a descendant. |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
41 msg = _("not a linear update") |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
42 hint = _("merge or update --check to force update") |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
43 raise error.UpdateAbort(msg, hint=hint) |
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
44 |
26723
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
45 def _destupdateobs(repo, clean, check): |
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
46 """decide of an update destination from obsolescence markers""" |
26569
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
47 node = None |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
48 wc = repo[None] |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
49 p1 = wc.p1() |
26723
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
50 movemark = None |
26569
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
51 |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
52 if p1.obsolete() and not p1.children(): |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
53 # allow updating to successors |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
54 successors = obsolete.successorssets(repo, p1.node()) |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
55 |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
56 # behavior of certain cases is as follows, |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
57 # |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
58 # divergent changesets: update to highest rev, similar to what |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
59 # is currently done when there are more than one head |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
60 # (i.e. 'tip') |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
61 # |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
62 # replaced changesets: same as divergent except we know there |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
63 # is no conflict |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
64 # |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
65 # pruned changeset: no update is done; though, we could |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
66 # consider updating to the first non-obsolete parent, |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
67 # similar to what is current done for 'hg prune' |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
68 |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
69 if successors: |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
70 # flatten the list here handles both divergent (len > 1) |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
71 # and the usual case (len = 1) |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
72 successors = [n for sub in successors for n in sub] |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
73 |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
74 # get the max revision for the given successors set, |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
75 # i.e. the 'tip' of a set |
2aeeef1dc9a5
update: move default destination computation to a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
diff
changeset
|
76 node = repo.revs('max(%ln)', successors).first() |
26722
6cd643a1d32c
destupdate: move obsolete handling first
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26721
diff
changeset
|
77 if bookmarks.isactivewdirparent(repo): |
6cd643a1d32c
destupdate: move obsolete handling first
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26721
diff
changeset
|
78 movemark = repo['.'].node() |
26723
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
79 return node, movemark, None |
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
80 |
26724
7fc759c0c430
destupdate: extract logic based on bookmarks in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26723
diff
changeset
|
81 def _destupdatebook(repo, clean, check): |
7fc759c0c430
destupdate: extract logic based on bookmarks in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26723
diff
changeset
|
82 """decide on an update destination from active bookmark""" |
7fc759c0c430
destupdate: extract logic based on bookmarks in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26723
diff
changeset
|
83 # we also move the active bookmark, if any |
7fc759c0c430
destupdate: extract logic based on bookmarks in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26723
diff
changeset
|
84 activemark = None |
7fc759c0c430
destupdate: extract logic based on bookmarks in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26723
diff
changeset
|
85 node, movemark = bookmarks.calculateupdate(repo.ui, repo, None) |
7fc759c0c430
destupdate: extract logic based on bookmarks in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26723
diff
changeset
|
86 if node is not None: |
7fc759c0c430
destupdate: extract logic based on bookmarks in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26723
diff
changeset
|
87 activemark = node |
7fc759c0c430
destupdate: extract logic based on bookmarks in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26723
diff
changeset
|
88 return node, movemark, activemark |
7fc759c0c430
destupdate: extract logic based on bookmarks in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26723
diff
changeset
|
89 |
26725
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
90 def _destupdatebranch(repo, clean, check): |
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
91 """decide on an update destination from current branch""" |
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
92 wc = repo[None] |
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
93 movemark = node = None |
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
94 try: |
28065
6b1fc09c699a
update: change default destination to tipmost descendant (issue4673) (BC)
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
28029
diff
changeset
|
95 node = repo.revs('max(.::(head() and branch(%s)))' |
6b1fc09c699a
update: change default destination to tipmost descendant (issue4673) (BC)
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
28029
diff
changeset
|
96 , wc.branch()).first() |
26725
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
97 if bookmarks.isactivewdirparent(repo): |
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
98 movemark = repo['.'].node() |
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
99 except error.RepoLookupError: |
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
100 if wc.branch() == 'default': # no default branch! |
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
101 node = repo.lookup('tip') # update to tip |
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
102 else: |
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
103 raise error.Abort(_("branch %s not found") % wc.branch()) |
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
104 return node, movemark, None |
bde739aced83
destupdate: extract logic based on branch in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26724
diff
changeset
|
105 |
26726
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
106 # order in which each step should be evalutated |
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
107 # steps are run until one finds a destination |
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
108 destupdatesteps = ['evolution', 'bookmark', 'branch'] |
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
109 # mapping to ease extension overriding steps. |
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
110 destupdatestepmap = {'evolution': _destupdateobs, |
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
111 'bookmark': _destupdatebook, |
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
112 'branch': _destupdatebranch, |
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
113 } |
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
114 |
26723
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
115 def destupdate(repo, clean=False, check=False): |
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
116 """destination for bare update operation |
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
117 |
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
118 return (rev, movemark, activemark) |
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
119 |
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
120 - rev: the revision to update to, |
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
121 - movemark: node to move the active bookmark from |
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
122 (cf bookmark.calculate update), |
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
123 - activemark: a bookmark to activate at the end of the update. |
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
124 """ |
26726
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
125 node = movemark = activemark = None |
26723
52d08a93de1f
destupdate: extract logic based on obsolescence marker in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26722
diff
changeset
|
126 |
26726
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
127 for step in destupdatesteps: |
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
128 node, movemark, activemark = destupdatestepmap[step](repo, clean, check) |
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
129 if node is not None: |
8e6649616699
destupdate: have a generic and extensible way to run each step
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26725
diff
changeset
|
130 break |
26628
45b86dbabbda
destupdate: move the check related to the "clean" logic in the function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26587
diff
changeset
|
131 rev = repo[node].rev() |
45b86dbabbda
destupdate: move the check related to the "clean" logic in the function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26587
diff
changeset
|
132 |
26720
6c22a17faa18
destupdate: extract validation logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26714
diff
changeset
|
133 _destupdatevalidate(repo, rev, clean, check) |
26628
45b86dbabbda
destupdate: move the check related to the "clean" logic in the function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26587
diff
changeset
|
134 |
26641
5c57d01fe64e
destupdate: also include bookmark related logic
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26629
diff
changeset
|
135 return rev, movemark, activemark |
26714
9903261dcc81
destutil: move default merge destination into a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26683
diff
changeset
|
136 |
26727
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
137 def _destmergebook(repo): |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
138 """find merge destination in the active bookmark case""" |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
139 node = None |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
140 bmheads = repo.bookmarkheads(repo._activebookmark) |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
141 curhead = repo[repo._activebookmark].node() |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
142 if len(bmheads) == 2: |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
143 if curhead == bmheads[0]: |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
144 node = bmheads[1] |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
145 else: |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
146 node = bmheads[0] |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
147 elif len(bmheads) > 2: |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
148 raise error.Abort(_("multiple matching bookmarks to merge - " |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
149 "please merge with an explicit rev or bookmark"), |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
150 hint=_("run 'hg heads' to see all heads")) |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
151 elif len(bmheads) <= 1: |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
152 raise error.Abort(_("no matching bookmark to merge - " |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
153 "please merge with an explicit rev or bookmark"), |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
154 hint=_("run 'hg heads' to see all heads")) |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
155 assert node is not None |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
156 return node |
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
157 |
26728
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
158 def _destmergebranch(repo): |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
159 """find merge destination based on branch heads""" |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
160 node = None |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
161 branch = repo[None].branch() |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
162 bheads = repo.branchheads(branch) |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
163 nbhs = [bh for bh in bheads if not repo[bh].bookmarks()] |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
164 |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
165 if len(nbhs) > 2: |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
166 raise error.Abort(_("branch '%s' has %d heads - " |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
167 "please merge with an explicit rev") |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
168 % (branch, len(bheads)), |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
169 hint=_("run 'hg heads .' to see heads")) |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
170 |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
171 parent = repo.dirstate.p1() |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
172 if len(nbhs) <= 1: |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
173 if len(bheads) > 1: |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
174 raise error.Abort(_("heads are bookmarked - " |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
175 "please merge with an explicit rev"), |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
176 hint=_("run 'hg heads' to see all heads")) |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
177 if len(repo.heads()) > 1: |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
178 raise error.Abort(_("branch '%s' has one head - " |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
179 "please merge with an explicit rev") |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
180 % branch, |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
181 hint=_("run 'hg heads' to see all heads")) |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
182 msg, hint = _('nothing to merge'), None |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
183 if parent != repo.lookup(branch): |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
184 hint = _("use 'hg update' instead") |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
185 raise error.Abort(msg, hint=hint) |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
186 |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
187 if parent not in bheads: |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
188 raise error.Abort(_('working directory not at a head revision'), |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
189 hint=_("use 'hg update' or merge with an " |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
190 "explicit revision")) |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
191 if parent == nbhs[0]: |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
192 node = nbhs[-1] |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
193 else: |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
194 node = nbhs[0] |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
195 assert node is not None |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
196 return node |
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
197 |
26714
9903261dcc81
destutil: move default merge destination into a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26683
diff
changeset
|
198 def destmerge(repo): |
9903261dcc81
destutil: move default merge destination into a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26683
diff
changeset
|
199 if repo._activebookmark: |
26727
5b7fd48f9868
destmerge: extract logic based on bookmark into its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26726
diff
changeset
|
200 node = _destmergebook(repo) |
26714
9903261dcc81
destutil: move default merge destination into a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26683
diff
changeset
|
201 else: |
26728
e8f1b7285917
destmerge: extract logic based on branch heads in its own function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26727
diff
changeset
|
202 node = _destmergebranch(repo) |
26714
9903261dcc81
destutil: move default merge destination into a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26683
diff
changeset
|
203 return repo[node].rev() |
27262
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
204 |
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
205 histeditdefaultrevset = 'reverse(only(.) and not public() and not ::merge())' |
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
206 |
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
207 def desthistedit(ui, repo): |
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
208 """Default base revision to edit for `hg histedit`.""" |
27559
d13bcc9fd656
destutil: use scmutil.revrange for desthistedit (issue5001)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27333
diff
changeset
|
209 # Avoid cycle: scmutil -> revset -> destutil |
d13bcc9fd656
destutil: use scmutil.revrange for desthistedit (issue5001)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27333
diff
changeset
|
210 from . import scmutil |
d13bcc9fd656
destutil: use scmutil.revrange for desthistedit (issue5001)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27333
diff
changeset
|
211 |
27262
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
212 default = ui.config('histedit', 'defaultrev', histeditdefaultrevset) |
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
213 if default: |
27559
d13bcc9fd656
destutil: use scmutil.revrange for desthistedit (issue5001)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
27333
diff
changeset
|
214 revs = scmutil.revrange(repo, [default]) |
27262
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
215 if revs: |
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
216 # The revset supplied by the user may not be in ascending order nor |
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
217 # take the first revision. So do this manually. |
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
218 revs.sort() |
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
219 return revs.first() |
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
220 |
3d0feb2f978b
histedit: pick an appropriate base changeset by default (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
26728
diff
changeset
|
221 return None |
28029
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
222 |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
223 def _statusotherbook(ui, repo): |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
224 bmheads = repo.bookmarkheads(repo._activebookmark) |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
225 curhead = repo[repo._activebookmark].node() |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
226 if repo.revs('%n and parents()', curhead): |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
227 # we are on the active bookmark |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
228 bmheads = [b for b in bmheads if curhead != b] |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
229 if bmheads: |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
230 msg = _('%i other divergent bookmarks for "%s"\n') |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
231 ui.status(msg % (len(bmheads), repo._activebookmark)) |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
232 |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
233 def _statusotherbranchheads(ui, repo): |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
234 currentbranch = repo.dirstate.branch() |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
235 heads = repo.branchheads(currentbranch) |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
236 l = len(heads) |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
237 if repo.revs('%ln and parents()', heads): |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
238 # we are on a head |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
239 heads = repo.revs('%ln - parents()', heads) |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
240 if heads and l != len(heads): |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
241 ui.status(_('%i other heads for branch "%s"\n') % |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
242 (len(heads), currentbranch)) |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
243 |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
244 def statusotherdests(ui, repo): |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
245 """Print message about other head""" |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
246 # XXX we should probably include a hint: |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
247 # - about what to do |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
248 # - how to see such heads |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
249 if repo._activebookmark: |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
250 _statusotherbook(ui, repo) |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
251 else: |
72072cfc7e91
update: warn about other topological heads on bare update
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27559
diff
changeset
|
252 _statusotherbranchheads(ui, repo) |