author | Martin von Zweigbergk <martinvonz@google.com> |
Wed, 03 Jul 2019 11:13:47 -0700 | |
changeset 4714 | c51fc0ae7a7e |
parent 4710 | 0e0731406efd |
child 4723 | 41885988921e |
permissions | -rw-r--r-- |
2756
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
1 |
# Module dedicated to host utility code dedicated to changeset rewrite |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
2 |
# |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
3 |
# Copyright 2017 Octobus <contact@octobus.net> |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
4 |
# |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
5 |
# This software may be used and distributed according to the terms of the |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
6 |
# GNU General Public License version 2 or any later version. |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
7 |
|
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
8 |
# Status: Stabilization of the API in progress |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
9 |
# |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
10 |
# The content of this module should move into core incrementally once we are |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
11 |
# happy one piece of it (and hopefully, able to reuse it in other core |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
12 |
# commands). |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
13 |
|
2757
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
14 |
from mercurial import ( |
2759
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
15 |
cmdutil, |
2762
610581a2fb74
commands: move split to the 'evocommands' module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2759
diff
changeset
|
16 |
commands, |
2759
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
17 |
context, |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
18 |
copies, |
2758
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
19 |
error, |
2762
610581a2fb74
commands: move split to the 'evocommands' module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2759
diff
changeset
|
20 |
hg, |
2759
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
21 |
lock as lockmod, |
2780
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
22 |
node, |
2757
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
23 |
obsolete, |
2758
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
24 |
phases, |
2757
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
25 |
revset, |
3506
6b4272bbb65d
evolve: update code for not implicitly converting ctx to revision
Boris Feld <boris.feld@octobus.net>
parents:
3298
diff
changeset
|
26 |
util, |
2757
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
27 |
) |
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
28 |
|
2758
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
29 |
from mercurial.i18n import _ |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
30 |
|
2756
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
31 |
from . import ( |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
32 |
compat, |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
33 |
) |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
34 |
|
2780
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
35 |
def _formatrevs(repo, revs, maxrevs=4): |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
36 |
"""return a string summarising revision in a descent size |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
37 |
|
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
38 |
If there is few enough revision, we list them otherwise we display a |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
39 |
summary in the form: |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
40 |
|
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
41 |
1ea73414a91b and 5 others |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
42 |
""" |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
43 |
tonode = repo.changelog.node |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
44 |
numrevs = len(revs) |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
45 |
if numrevs < maxrevs: |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
46 |
shorts = [node.short(tonode(r)) for r in revs] |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
47 |
summary = ', '.join(shorts) |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
48 |
else: |
3151
41c72b6e8568
compat: drop compat code for smartrevs.first
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2785
diff
changeset
|
49 |
first = revs.first() |
2780
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
50 |
summary = _('%s and %d others') |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
51 |
summary %= (node.short(tonode(first)), numrevs - 1) |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
52 |
return summary |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
53 |
|
2777
7d86d88b2fa8
rewriteutil: add a precheck function to validate rewrite beforehand
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2765
diff
changeset
|
54 |
def precheck(repo, revs, action='rewrite'): |
7d86d88b2fa8
rewriteutil: add a precheck function to validate rewrite beforehand
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2765
diff
changeset
|
55 |
"""check if <revs> can be rewritten |
7d86d88b2fa8
rewriteutil: add a precheck function to validate rewrite beforehand
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2765
diff
changeset
|
56 |
|
7d86d88b2fa8
rewriteutil: add a precheck function to validate rewrite beforehand
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2765
diff
changeset
|
57 |
<action> can be used to control the commit message. |
7d86d88b2fa8
rewriteutil: add a precheck function to validate rewrite beforehand
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2765
diff
changeset
|
58 |
""" |
2785
b5a48e4aeec6
precheck: handle rewrite attempt of nullrev
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2784
diff
changeset
|
59 |
if node.nullrev in revs: |
b5a48e4aeec6
precheck: handle rewrite attempt of nullrev
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2784
diff
changeset
|
60 |
msg = _("cannot %s the null revision") % (action) |
b5a48e4aeec6
precheck: handle rewrite attempt of nullrev
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2784
diff
changeset
|
61 |
hint = _("no changeset checked out") |
b5a48e4aeec6
precheck: handle rewrite attempt of nullrev
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2784
diff
changeset
|
62 |
raise error.Abort(msg, hint=hint) |
3506
6b4272bbb65d
evolve: update code for not implicitly converting ctx to revision
Boris Feld <boris.feld@octobus.net>
parents:
3298
diff
changeset
|
63 |
if any(util.safehasattr(r, 'rev') for r in revs): |
6b4272bbb65d
evolve: update code for not implicitly converting ctx to revision
Boris Feld <boris.feld@octobus.net>
parents:
3298
diff
changeset
|
64 |
msg = "rewriteutil.precheck called with ctx not revs" |
6b4272bbb65d
evolve: update code for not implicitly converting ctx to revision
Boris Feld <boris.feld@octobus.net>
parents:
3298
diff
changeset
|
65 |
repo.ui.develwarn(msg) |
6b4272bbb65d
evolve: update code for not implicitly converting ctx to revision
Boris Feld <boris.feld@octobus.net>
parents:
3298
diff
changeset
|
66 |
revs = (r.rev() for r in revs) |
2780
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
67 |
publicrevs = repo.revs('%ld and public()', revs) |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
68 |
if publicrevs: |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
69 |
summary = _formatrevs(repo, publicrevs) |
58e4b51ee902
prefetc: point at the offending changeset when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2779
diff
changeset
|
70 |
msg = _("cannot %s public changesets: %s") % (action, summary) |
2779
f51efb2bb8c9
precheck: point to 'phase' help when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2778
diff
changeset
|
71 |
hint = _("see 'hg help phases' for details") |
f51efb2bb8c9
precheck: point to 'phase' help when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2778
diff
changeset
|
72 |
raise error.Abort(msg, hint=hint) |
2781
78b0c6053139
precheck: also check for unstability creation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2780
diff
changeset
|
73 |
newunstable = disallowednewunstable(repo, revs) |
78b0c6053139
precheck: also check for unstability creation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2780
diff
changeset
|
74 |
if newunstable: |
2784
d17d193c4145
precheck: update the orphan message to something me generic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2783
diff
changeset
|
75 |
msg = _("%s will orphan %i descendants") |
d17d193c4145
precheck: update the orphan message to something me generic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2783
diff
changeset
|
76 |
msg %= (action, len(newunstable)) |
2783
3e9c3119410a
precheck: point to the instability doc when aborting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2781
diff
changeset
|
77 |
hint = _("see 'hg help evolution.instability'") |
2781
78b0c6053139
precheck: also check for unstability creation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2780
diff
changeset
|
78 |
raise error.Abort(msg, hint=hint) |
2777
7d86d88b2fa8
rewriteutil: add a precheck function to validate rewrite beforehand
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2765
diff
changeset
|
79 |
|
2756
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
80 |
def bookmarksupdater(repo, oldid, tr): |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
81 |
"""Return a callable update(newid) updating the current bookmark |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
82 |
and bookmarks bound to oldid to newid. |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
83 |
""" |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
84 |
def updatebookmarks(newid): |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
85 |
oldbookmarks = repo.nodebookmarks(oldid) |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
86 |
bmchanges = [(b, newid) for b in oldbookmarks] |
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
87 |
if bmchanges: |
3699
67d6cc7e0979
compat: drop compatibility layer for bookmark.applychanges
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3506
diff
changeset
|
88 |
repo._bookmarks.applychanges(repo, tr, bmchanges) |
2756
f4dd6e6d4c73
rewriteutil: create a rewriteutil module to host utility function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff
changeset
|
89 |
return updatebookmarks |
2757
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
90 |
|
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
91 |
def disallowednewunstable(repo, revs): |
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
92 |
"""Check that editing <revs> will not create disallowed unstable |
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
93 |
|
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
94 |
(unstable creation is controled by some special config). |
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
95 |
""" |
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
96 |
allowunstable = obsolete.isenabled(repo, obsolete.allowunstableopt) |
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
97 |
if allowunstable: |
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
98 |
return revset.baseset() |
2878c8a686ab
rewriteutil: move disallowednewunstable in the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2756
diff
changeset
|
99 |
return repo.revs("(%ld::) - %ld", revs, revs) |
2758
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
100 |
|
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
101 |
def foldcheck(repo, revs): |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
102 |
"""check that <revs> can be folded""" |
2777
7d86d88b2fa8
rewriteutil: add a precheck function to validate rewrite beforehand
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2765
diff
changeset
|
103 |
precheck(repo, revs, action='fold') |
2758
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
104 |
roots = repo.revs('roots(%ld)', revs) |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
105 |
if len(roots) > 1: |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
106 |
raise error.Abort(_("cannot fold non-linear revisions " |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
107 |
"(multiple roots given)")) |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
108 |
root = repo[roots.first()] |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
109 |
if root.phase() <= phases.public: |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
110 |
raise error.Abort(_("cannot fold public revisions")) |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
111 |
heads = repo.revs('heads(%ld)', revs) |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
112 |
if len(heads) > 1: |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
113 |
raise error.Abort(_("cannot fold non-linear revisions " |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
114 |
"(multiple heads given)")) |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
115 |
head = repo[heads.first()] |
684feae20be5
rewriteutil: move 'foldcheck' to the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2757
diff
changeset
|
116 |
return root, head |
2759
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
117 |
|
2765
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
118 |
def deletebookmark(repo, repomarks, bookmarks): |
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
119 |
wlock = lock = tr = None |
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
120 |
try: |
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
121 |
wlock = repo.wlock() |
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
122 |
lock = repo.lock() |
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
123 |
tr = repo.transaction('prune') |
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
124 |
bmchanges = [] |
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
125 |
for bookmark in bookmarks: |
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
126 |
bmchanges.append((bookmark, None)) |
3699
67d6cc7e0979
compat: drop compatibility layer for bookmark.applychanges
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3506
diff
changeset
|
127 |
repo._bookmarks.applychanges(repo, tr, bmchanges) |
2765
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
128 |
tr.close() |
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
129 |
for bookmark in sorted(bookmarks): |
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
130 |
repo.ui.write(_("bookmark '%s' deleted\n") % bookmark) |
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
131 |
finally: |
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
132 |
lockmod.release(tr, lock, wlock) |
8a2e1aac6b41
rewriteutil: move 'deletebookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2764
diff
changeset
|
133 |
|
2762
610581a2fb74
commands: move split to the 'evocommands' module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2759
diff
changeset
|
134 |
def presplitupdate(repo, ui, prev, ctx): |
610581a2fb74
commands: move split to the 'evocommands' module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2759
diff
changeset
|
135 |
"""prepare the working directory for a split (for topic hooking) |
610581a2fb74
commands: move split to the 'evocommands' module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2759
diff
changeset
|
136 |
""" |
610581a2fb74
commands: move split to the 'evocommands' module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2759
diff
changeset
|
137 |
hg.update(repo, prev) |
3751
a1a0cfbffd30
evolve: pass revisions as strings to commands.*()
Martin von Zweigbergk <martinvonz@google.com>
parents:
3699
diff
changeset
|
138 |
commands.revert(ui, repo, rev=ctx.hex(), all=True) |
2762
610581a2fb74
commands: move split to the 'evocommands' module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2759
diff
changeset
|
139 |
|
2764
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
140 |
def reachablefrombookmark(repo, revs, bookmarks): |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
141 |
"""filter revisions and bookmarks reachable from the given bookmark |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
142 |
yoinked from mq.py |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
143 |
""" |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
144 |
repomarks = repo._bookmarks |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
145 |
if not bookmarks.issubset(repomarks): |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
146 |
raise error.Abort(_("bookmark '%s' not found") % |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
147 |
','.join(sorted(bookmarks - set(repomarks.keys())))) |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
148 |
|
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
149 |
# If the requested bookmark is not the only one pointing to a |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
150 |
# a revision we have to only delete the bookmark and not strip |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
151 |
# anything. revsets cannot detect that case. |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
152 |
nodetobookmarks = {} |
4714
c51fc0ae7a7e
py3: switch from iteritems() to items()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4710
diff
changeset
|
153 |
for mark, bnode in repomarks.items(): |
2764
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
154 |
nodetobookmarks.setdefault(bnode, []).append(mark) |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
155 |
for marks in nodetobookmarks.values(): |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
156 |
if bookmarks.issuperset(marks): |
3767
115caa4e5278
evolve: add compat for repair.stripbmrevset which is moved to scmutil
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3751
diff
changeset
|
157 |
rsrevs = compat.bmrevset(repo, marks[0]) |
2764
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
158 |
revs = set(revs) |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
159 |
revs.update(set(rsrevs)) |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
160 |
revs = sorted(revs) |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
161 |
return repomarks, revs |
a4a6f4128be5
rewriteutil: move 'reachablefrombookmark' to the module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
162 |
|
2759
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
163 |
def rewrite(repo, old, updates, head, newbases, commitopts): |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
164 |
"""Return (nodeid, created) where nodeid is the identifier of the |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
165 |
changeset generated by the rewrite process, and created is True if |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
166 |
nodeid was actually created. If created is False, nodeid |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
167 |
references a changeset existing before the rewrite call. |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
168 |
""" |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
169 |
wlock = lock = tr = None |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
170 |
try: |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
171 |
wlock = repo.wlock() |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
172 |
lock = repo.lock() |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
173 |
tr = repo.transaction('rewrite') |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
174 |
base = old.p1() |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
175 |
updatebookmarks = bookmarksupdater(repo, old.node(), tr) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
176 |
|
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
177 |
# commit a new version of the old changeset, including the update |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
178 |
# collect all files which might be affected |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
179 |
files = set(old.files()) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
180 |
for u in updates: |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
181 |
files.update(u.files()) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
182 |
|
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
183 |
# Recompute copies (avoid recording a -> b -> a) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
184 |
copied = copies.pathcopies(base, head) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
185 |
|
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
186 |
# prune files which were reverted by the updates |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
187 |
def samefile(f): |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
188 |
if f in head.manifest(): |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
189 |
a = head.filectx(f) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
190 |
if f in base.manifest(): |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
191 |
b = base.filectx(f) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
192 |
return (a.data() == b.data() |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
193 |
and a.flags() == b.flags()) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
194 |
else: |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
195 |
return False |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
196 |
else: |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
197 |
return f not in base.manifest() |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
198 |
files = [f for f in files if not samefile(f)] |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
199 |
# commit version of these files as defined by head |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
200 |
headmf = head.manifest() |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
201 |
|
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
202 |
def filectxfn(repo, ctx, path): |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
203 |
if path in headmf: |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
204 |
fctx = head[path] |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
205 |
flags = fctx.flags() |
3298
f4b06f44d274
memfilectx: changectx argument is not mandatory
Boris Feld <boris.feld@octobus.net>
parents:
3151
diff
changeset
|
206 |
mctx = compat.memfilectx(repo, ctx, fctx, flags, copied, path) |
2759
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
207 |
return mctx |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
208 |
return None |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
209 |
|
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
210 |
message = cmdutil.logmessage(repo.ui, commitopts) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
211 |
if not message: |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
212 |
message = old.description() |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
213 |
|
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
214 |
user = commitopts.get('user') or old.user() |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
215 |
# TODO: In case not date is given, we should take the old commit date |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
216 |
# if we are working one one changeset or mimic the fold behavior about |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
217 |
# date |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
218 |
date = commitopts.get('date') or None |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
219 |
extra = dict(commitopts.get('extra', old.extra())) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
220 |
extra['branch'] = head.branch() |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
221 |
|
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
222 |
new = context.memctx(repo, |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
223 |
parents=newbases, |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
224 |
text=message, |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
225 |
files=files, |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
226 |
filectxfn=filectxfn, |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
227 |
user=user, |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
228 |
date=date, |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
229 |
extra=extra) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
230 |
|
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
231 |
if commitopts.get('edit'): |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
232 |
new._text = cmdutil.commitforceeditor(repo, new, []) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
233 |
revcount = len(repo) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
234 |
newid = repo.commitctx(new) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
235 |
new = repo[newid] |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
236 |
created = len(repo) != revcount |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
237 |
updatebookmarks(newid) |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
238 |
|
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
239 |
tr.close() |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
240 |
return newid, created |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
241 |
finally: |
3137185b1bfe
rewriteutil: move the 'rewrite' function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2758
diff
changeset
|
242 |
lockmod.release(tr, lock, wlock) |