Mercurial > hg
annotate mercurial/rewriteutil.py @ 50053:5327ae76b740
dirstate: use `dirstate.change_files` to scope the change in `unshelve`
This is the way.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 15 Dec 2022 03:04:58 +0100 |
parents | ea98850a136e |
children | cbcbf63b6dbf |
rev | line source |
---|---|
35242
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
1 # rewriteutil.py - utility functions for rewriting changesets |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
2 # |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
3 # Copyright 2017 Octobus <contact@octobus.net> |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
4 # |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
6 # GNU General Public License version 2 or any later version. |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
7 |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
8 |
45424
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
9 import re |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
10 |
35243
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
11 from .i18n import _ |
46113
59fa3890d40a
node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents:
45853
diff
changeset
|
12 from .node import ( |
59fa3890d40a
node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents:
45853
diff
changeset
|
13 hex, |
59fa3890d40a
node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents:
45853
diff
changeset
|
14 nullrev, |
59fa3890d40a
node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents:
45853
diff
changeset
|
15 ) |
35243
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
16 |
35242
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
17 from . import ( |
35243
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
18 error, |
47069
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
19 node, |
35242
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
20 obsolete, |
45424
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
21 obsutil, |
35242
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
22 revset, |
45424
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
23 scmutil, |
47016
8ad2f43fe37b
rewriteutil: add devel warning if precheck is called with contexts
Martin von Zweigbergk <martinvonz@google.com>
parents:
47015
diff
changeset
|
24 util, |
35242
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
25 ) |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
26 |
43075
57875cf423c9
style: run a patched black on a subset of mercurial
Augie Fackler <augie@google.com>
parents:
40636
diff
changeset
|
27 |
45427
78861610ded8
rewriteutil: relax the sha1 hash references to handle future hash types
Matt Harbison <matt_harbison@yahoo.com>
parents:
45425
diff
changeset
|
28 NODE_RE = re.compile(br'\b[0-9a-f]{6,64}\b') |
45424
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
29 |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
30 |
47069
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
31 def _formatrevs(repo, revs, maxrevs=4): |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
32 """returns a string summarizing revisions in a decent size |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
33 |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
34 If there are few enough revisions, we list them all. Otherwise we display a |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
35 summary of the form: |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
36 |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
37 1ea73414a91b and 5 others |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
38 """ |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
39 tonode = repo.changelog.node |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
40 numrevs = len(revs) |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
41 if numrevs < maxrevs: |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
42 shorts = [node.short(tonode(r)) for r in revs] |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
43 summary = b', '.join(shorts) |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
44 else: |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
45 first = revs.first() |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
46 summary = _(b'%s and %d others') |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
47 summary %= (node.short(tonode(first)), numrevs - 1) |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
48 return summary |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
49 |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
50 |
48991
d4752aeb20f1
precheck: fix false warning about content-divergence creation
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
47787
diff
changeset
|
51 def precheck(repo, revs, action=b'rewrite', check_divergence=True): |
35243
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
52 """check if revs can be rewritten |
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
53 action is used to control the error message. |
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
54 |
48991
d4752aeb20f1
precheck: fix false warning about content-divergence creation
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
47787
diff
changeset
|
55 check_divergence allows skipping the divergence checks in cases like adding |
d4752aeb20f1
precheck: fix false warning about content-divergence creation
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
47787
diff
changeset
|
56 a prune marker (A, ()) to obsstore (which can't be diverging). |
d4752aeb20f1
precheck: fix false warning about content-divergence creation
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
47787
diff
changeset
|
57 |
35243
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
58 Make sure this function is called after taking the lock. |
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
59 """ |
46113
59fa3890d40a
node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents:
45853
diff
changeset
|
60 if nullrev in revs: |
47015
7001f92e0ee9
rewriteutil: replace "null changeset" by "the null revision" in error message
Martin von Zweigbergk <martinvonz@google.com>
parents:
46113
diff
changeset
|
61 msg = _(b"cannot %s the null revision") % action |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
62 hint = _(b"no changeset checked out") |
45853
b4694ef45db5
errors: raise more specific errors from rewriteutil
Martin von Zweigbergk <martinvonz@google.com>
parents:
45711
diff
changeset
|
63 raise error.InputError(msg, hint=hint) |
35243
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
64 |
47016
8ad2f43fe37b
rewriteutil: add devel warning if precheck is called with contexts
Martin von Zweigbergk <martinvonz@google.com>
parents:
47015
diff
changeset
|
65 if any(util.safehasattr(r, 'rev') for r in revs): |
8ad2f43fe37b
rewriteutil: add devel warning if precheck is called with contexts
Martin von Zweigbergk <martinvonz@google.com>
parents:
47015
diff
changeset
|
66 repo.ui.develwarn(b"rewriteutil.precheck called with ctx not revs") |
8ad2f43fe37b
rewriteutil: add devel warning if precheck is called with contexts
Martin von Zweigbergk <martinvonz@google.com>
parents:
47015
diff
changeset
|
67 revs = (r.rev() for r in revs) |
8ad2f43fe37b
rewriteutil: add devel warning if precheck is called with contexts
Martin von Zweigbergk <martinvonz@google.com>
parents:
47015
diff
changeset
|
68 |
35243
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
69 if len(repo[None].parents()) > 1: |
47020
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
70 raise error.StateError( |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
71 _(b"cannot %s changesets while merging") % action |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
72 ) |
35243
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
73 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
74 publicrevs = repo.revs(b'%ld and public()', revs) |
35243
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
75 if publicrevs: |
47069
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
76 summary = _formatrevs(repo, publicrevs) |
5b6dd0d9171b
rewriteutil: give examples of public changesets that can't be rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47020
diff
changeset
|
77 msg = _(b"cannot %s public changesets: %s") % (action, summary) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
78 hint = _(b"see 'hg help phases' for details") |
45853
b4694ef45db5
errors: raise more specific errors from rewriteutil
Martin von Zweigbergk <martinvonz@google.com>
parents:
45711
diff
changeset
|
79 raise error.InputError(msg, hint=hint) |
35243
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
80 |
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
81 newunstable = disallowednewunstable(repo, revs) |
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
82 if newunstable: |
47018
7a90fddb13b0
rewriteutil: point to help about instability when rewriting creates orphan
Martin von Zweigbergk <martinvonz@google.com>
parents:
47016
diff
changeset
|
83 hint = _(b"see 'hg help evolution.instability'") |
7a90fddb13b0
rewriteutil: point to help about instability when rewriting creates orphan
Martin von Zweigbergk <martinvonz@google.com>
parents:
47016
diff
changeset
|
84 raise error.InputError( |
47070
d90f6237b3aa
rewriteutil: say how many commits would become orphan if commit is rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47069
diff
changeset
|
85 _(b"cannot %s changeset, as that will orphan %d descendants") |
d90f6237b3aa
rewriteutil: say how many commits would become orphan if commit is rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47069
diff
changeset
|
86 % (action, len(newunstable)), |
d90f6237b3aa
rewriteutil: say how many commits would become orphan if commit is rewritten
Martin von Zweigbergk <martinvonz@google.com>
parents:
47069
diff
changeset
|
87 hint=hint, |
47018
7a90fddb13b0
rewriteutil: point to help about instability when rewriting creates orphan
Martin von Zweigbergk <martinvonz@google.com>
parents:
47016
diff
changeset
|
88 ) |
35243
490df753894d
rewriteutil: add a precheck function to check if revs can be rewritten
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35242
diff
changeset
|
89 |
48991
d4752aeb20f1
precheck: fix false warning about content-divergence creation
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
47787
diff
changeset
|
90 if not check_divergence: |
d4752aeb20f1
precheck: fix false warning about content-divergence creation
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
47787
diff
changeset
|
91 return |
d4752aeb20f1
precheck: fix false warning about content-divergence creation
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
47787
diff
changeset
|
92 |
47020
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
93 if not obsolete.isenabled(repo, obsolete.allowdivergenceopt): |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
94 new_divergence = _find_new_divergence(repo, revs) |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
95 if new_divergence: |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
96 local_ctx, other_ctx, base_ctx = new_divergence |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
97 msg = _( |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
98 b'cannot %s %s, as that creates content-divergence with %s' |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
99 ) % ( |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
100 action, |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
101 local_ctx, |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
102 other_ctx, |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
103 ) |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
104 if local_ctx.rev() != base_ctx.rev(): |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
105 msg += _(b', from %s') % base_ctx |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
106 if repo.ui.verbose: |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
107 if local_ctx.rev() != base_ctx.rev(): |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
108 msg += _( |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
109 b'\n changeset %s is a successor of ' b'changeset %s' |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
110 ) % (local_ctx, base_ctx) |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
111 msg += _( |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
112 b'\n changeset %s already has a successor in ' |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
113 b'changeset %s\n' |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
114 b' rewriting changeset %s would create ' |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
115 b'"content-divergence"\n' |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
116 b' set experimental.evolution.allowdivergence=True to ' |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
117 b'skip this check' |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
118 ) % (base_ctx, other_ctx, local_ctx) |
47375
8125bcd28a5c
rewriteutil: add pointer to help text when rewrite would cause divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47271
diff
changeset
|
119 raise error.InputError( |
8125bcd28a5c
rewriteutil: add pointer to help text when rewrite would cause divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47271
diff
changeset
|
120 msg, |
8125bcd28a5c
rewriteutil: add pointer to help text when rewrite would cause divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47271
diff
changeset
|
121 hint=_( |
8125bcd28a5c
rewriteutil: add pointer to help text when rewrite would cause divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47271
diff
changeset
|
122 b"see 'hg help evolution.instability' for details on content-divergence" |
8125bcd28a5c
rewriteutil: add pointer to help text when rewrite would cause divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47271
diff
changeset
|
123 ), |
8125bcd28a5c
rewriteutil: add pointer to help text when rewrite would cause divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47271
diff
changeset
|
124 ) |
47020
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
125 else: |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
126 raise error.InputError( |
47271
055f7b9f2307
rewriteutil: add pointer to help text when rewrite would cause divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47070
diff
changeset
|
127 msg, |
055f7b9f2307
rewriteutil: add pointer to help text when rewrite would cause divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47070
diff
changeset
|
128 hint=_( |
055f7b9f2307
rewriteutil: add pointer to help text when rewrite would cause divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47070
diff
changeset
|
129 b"add --verbose for details or see " |
055f7b9f2307
rewriteutil: add pointer to help text when rewrite would cause divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47070
diff
changeset
|
130 b"'hg help evolution.instability'" |
055f7b9f2307
rewriteutil: add pointer to help text when rewrite would cause divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47070
diff
changeset
|
131 ), |
47020
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
132 ) |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
133 |
43075
57875cf423c9
style: run a patched black on a subset of mercurial
Augie Fackler <augie@google.com>
parents:
40636
diff
changeset
|
134 |
35242
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
135 def disallowednewunstable(repo, revs): |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
136 """Checks whether editing the revs will create new unstable changesets and |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
137 are we allowed to create them. |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
138 |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
139 To allow new unstable changesets, set the config: |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
140 `experimental.evolution.allowunstable=True` |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
141 """ |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
142 allowunstable = obsolete.isenabled(repo, obsolete.allowunstableopt) |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
143 if allowunstable: |
27d5c2d2db2b
rewriteutil: add utility function to check if we can create new unstable cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff
changeset
|
144 return revset.baseset() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43075
diff
changeset
|
145 return repo.revs(b"(%ld::) - %ld", revs, revs) |
45122
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
146 |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
147 |
47020
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
148 def _find_new_divergence(repo, revs): |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
149 obsrevs = repo.revs(b'%ld and obsolete()', revs) |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
150 for r in obsrevs: |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
151 div = find_new_divergence_from(repo, repo[r]) |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
152 if div: |
47553
debc29900b97
rewriteutil: look up common predecessor on unfiltered repo
Martin von Zweigbergk <martinvonz@google.com>
parents:
47375
diff
changeset
|
153 return (repo[r], repo[div[0]], repo.unfiltered()[div[1]]) |
47020
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
154 return None |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
155 |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
156 |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
157 def find_new_divergence_from(repo, ctx): |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
158 """return divergent revision if rewriting an obsolete cset (ctx) will |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
159 create divergence |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
160 |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
161 Returns (<other node>, <common ancestor node>) or None |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
162 """ |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
163 if not ctx.obsolete(): |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
164 return None |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
165 # We need to check two cases that can cause divergence: |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
166 # case 1: the rev being rewritten has a non-obsolete successor (easily |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
167 # detected by successorssets) |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
168 sset = obsutil.successorssets(repo, ctx.node()) |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
169 if sset: |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
170 return (sset[0][0], ctx.node()) |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
171 else: |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
172 # case 2: one of the precursors of the rev being revived has a |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
173 # non-obsolete successor (we need divergentsets for this) |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
174 divsets = obsutil.divergentsets(repo, ctx) |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
175 if divsets: |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
176 nsuccset = divsets[0][b'divergentnodes'] |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
177 prec = divsets[0][b'commonpredecessor'] |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
178 return (nsuccset[0], prec) |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
179 return None |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
180 |
ba6881c6a178
rewriteutil: check for divergence
Martin von Zweigbergk <martinvonz@google.com>
parents:
47019
diff
changeset
|
181 |
45122
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
182 def skip_empty_successor(ui, command): |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
183 empty_successor = ui.config(b'rewrite', b'empty-successor') |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
184 if empty_successor == b'skip': |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
185 return True |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
186 elif empty_successor == b'keep': |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
187 return False |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
188 else: |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
189 raise error.ConfigError( |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
190 _( |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
191 b"%s doesn't know how to handle config " |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
192 b"rewrite.empty-successor=%s (only 'skip' and 'keep' are " |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
193 b"supported)" |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
194 ) |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
195 % (command, empty_successor) |
a391d0710f22
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de>
parents:
43077
diff
changeset
|
196 ) |
45424
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
197 |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
198 |
45425
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
199 def update_hash_refs(repo, commitmsg, pending=None): |
45424
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
200 """Replace all obsolete commit hashes in the message with the current hash. |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
201 |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
202 If the obsolete commit was split or is divergent, the hash is not replaced |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
203 as there's no way to know which successor to choose. |
45425
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
204 |
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
205 For commands that update a series of commits in the current transaction, the |
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
206 new obsolete markers can be considered by setting ``pending`` to a mapping |
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
207 of ``pending[oldnode] = [successor_node1, successor_node2,..]``. |
45424
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
208 """ |
45425
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
209 if not pending: |
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
210 pending = {} |
45424
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
211 cache = {} |
45427
78861610ded8
rewriteutil: relax the sha1 hash references to handle future hash types
Matt Harbison <matt_harbison@yahoo.com>
parents:
45425
diff
changeset
|
212 hashes = re.findall(NODE_RE, commitmsg) |
45424
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
213 unfi = repo.unfiltered() |
45427
78861610ded8
rewriteutil: relax the sha1 hash references to handle future hash types
Matt Harbison <matt_harbison@yahoo.com>
parents:
45425
diff
changeset
|
214 for h in hashes: |
47787
48da5c325750
rewriteutil: fix crash when a rewritten message references f{6,64}
Augie Fackler <augie@google.com>
parents:
47553
diff
changeset
|
215 try: |
48da5c325750
rewriteutil: fix crash when a rewritten message references f{6,64}
Augie Fackler <augie@google.com>
parents:
47553
diff
changeset
|
216 fullnode = scmutil.resolvehexnodeidprefix(unfi, h) |
49060
532b649c1deb
rebase: while rewriting desc hashes, ignore ambiguous prefix "hashes"
Kyle Lippincott <spectral@google.com>
parents:
48991
diff
changeset
|
217 except (error.WdirUnsupported, error.AmbiguousPrefixLookupError): |
532b649c1deb
rebase: while rewriting desc hashes, ignore ambiguous prefix "hashes"
Kyle Lippincott <spectral@google.com>
parents:
48991
diff
changeset
|
218 # Someone has an fffff... or some other prefix that's ambiguous in a |
532b649c1deb
rebase: while rewriting desc hashes, ignore ambiguous prefix "hashes"
Kyle Lippincott <spectral@google.com>
parents:
48991
diff
changeset
|
219 # commit message we're rewriting. Don't try rewriting that. |
47787
48da5c325750
rewriteutil: fix crash when a rewritten message references f{6,64}
Augie Fackler <augie@google.com>
parents:
47553
diff
changeset
|
220 continue |
45424
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
221 if fullnode is None: |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
222 continue |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
223 ctx = unfi[fullnode] |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
224 if not ctx.obsolete(): |
45425
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
225 successors = pending.get(fullnode) |
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
226 if successors is None: |
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
227 continue |
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
228 # obsutil.successorssets() returns a list of list of nodes |
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
229 successors = [successors] |
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
230 else: |
f7e293e0475f
rewriteutil: also consider pending obsoletes when updating hashes in messages
Matt Harbison <matt_harbison@yahoo.com>
parents:
45424
diff
changeset
|
231 successors = obsutil.successorssets(repo, ctx.node(), cache=cache) |
45424
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
232 |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
233 # We can't make any assumptions about how to update the hash if the |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
234 # cset in question was split or diverged. |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
235 if len(successors) == 1 and len(successors[0]) == 1: |
45711
3d68b47e461b
rewriteutil: handle dropped commits when updating description hashes
Matt Harbison <matt_harbison@yahoo.com>
parents:
45427
diff
changeset
|
236 successor = successors[0][0] |
3d68b47e461b
rewriteutil: handle dropped commits when updating description hashes
Matt Harbison <matt_harbison@yahoo.com>
parents:
45427
diff
changeset
|
237 if successor is not None: |
46113
59fa3890d40a
node: import symbols explicitly
Joerg Sonnenberger <joerg@bec.de>
parents:
45853
diff
changeset
|
238 newhash = hex(successor) |
45711
3d68b47e461b
rewriteutil: handle dropped commits when updating description hashes
Matt Harbison <matt_harbison@yahoo.com>
parents:
45427
diff
changeset
|
239 commitmsg = commitmsg.replace(h, newhash[: len(h)]) |
3d68b47e461b
rewriteutil: handle dropped commits when updating description hashes
Matt Harbison <matt_harbison@yahoo.com>
parents:
45427
diff
changeset
|
240 else: |
3d68b47e461b
rewriteutil: handle dropped commits when updating description hashes
Matt Harbison <matt_harbison@yahoo.com>
parents:
45427
diff
changeset
|
241 repo.ui.note( |
3d68b47e461b
rewriteutil: handle dropped commits when updating description hashes
Matt Harbison <matt_harbison@yahoo.com>
parents:
45427
diff
changeset
|
242 _( |
3d68b47e461b
rewriteutil: handle dropped commits when updating description hashes
Matt Harbison <matt_harbison@yahoo.com>
parents:
45427
diff
changeset
|
243 b'The stale commit message reference to %s could ' |
3d68b47e461b
rewriteutil: handle dropped commits when updating description hashes
Matt Harbison <matt_harbison@yahoo.com>
parents:
45427
diff
changeset
|
244 b'not be updated\n(The referenced commit was dropped)\n' |
3d68b47e461b
rewriteutil: handle dropped commits when updating description hashes
Matt Harbison <matt_harbison@yahoo.com>
parents:
45427
diff
changeset
|
245 ) |
3d68b47e461b
rewriteutil: handle dropped commits when updating description hashes
Matt Harbison <matt_harbison@yahoo.com>
parents:
45427
diff
changeset
|
246 % h |
3d68b47e461b
rewriteutil: handle dropped commits when updating description hashes
Matt Harbison <matt_harbison@yahoo.com>
parents:
45427
diff
changeset
|
247 ) |
45424
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
248 else: |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
249 repo.ui.note( |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
250 _( |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
251 b'The stale commit message reference to %s could ' |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
252 b'not be updated\n' |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
253 ) |
45427
78861610ded8
rewriteutil: relax the sha1 hash references to handle future hash types
Matt Harbison <matt_harbison@yahoo.com>
parents:
45425
diff
changeset
|
254 % h |
45424
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
255 ) |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
256 |
0a57ef4b3bdb
rewriteutil: extract evolve code used to replace obsolete hashes in commits
Matt Harbison <matt_harbison@yahoo.com>
parents:
45122
diff
changeset
|
257 return commitmsg |