annotate hgext/uncommit.py @ 37090:a61fff493d98

remotenames: show remote bookmarks in `hg bookmarks` This patch adds functionality to show list of remote bookmarks in `hg bookmarks` command. There is some indenting problem in the test output as the current bookmark printing code in core can handle bookmark names of size 25 only gracefully. The idea is taken from hgremotenames extension which has --remote and --all flags to show remote bookmarks. However, this patch by defaults support showing list of remote bookmarks if remotenames extension is enabled and remotebookmarks are turned on. Differential Revision: https://phab.mercurial-scm.org/D2808
author Pulkit Goyal <7895pulkit@gmail.com>
date Mon, 12 Mar 2018 18:38:26 +0530
parents 435b8b05affd
children 32fba6fe893d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
1 # uncommit - undo the actions of a commit
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
2 #
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
3 # Copyright 2011 Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
4 # Logilab SA <contact@logilab.fr>
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
5 # Pierre-Yves David <pierre-yves.david@ens-lyon.org>
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
6 # Patrick Mezard <patrick@mezard.eu>
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
7 # Copyright 2016 Facebook, Inc.
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
8 #
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
9 # This software may be used and distributed according to the terms of the
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
10 # GNU General Public License version 2 or any later version.
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
11
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
12 """uncommit part or all of a local changeset (EXPERIMENTAL)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
13
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
14 This command undoes the effect of a local commit, returning the affected
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
15 files to their uncommitted state. This means that files modified, added or
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
16 removed in the changeset will be left unchanged, and so will remain modified,
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
17 added and removed in the working directory.
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
18 """
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
19
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
20 from __future__ import absolute_import
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
21
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
22 from mercurial.i18n import _
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
23
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
24 from mercurial import (
34284
624c53e4121d uncommit: don't allow bare uncommit on dirty working directory
Pulkit Goyal <7895pulkit@gmail.com>
parents: 34283
diff changeset
25 cmdutil,
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
26 commands,
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
27 context,
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
28 copies,
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
29 error,
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
30 node,
35182
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
31 obsutil,
35004
3ebae3ec4664 py3: handle keyword arguments in hgext/uncommit.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 34758
diff changeset
32 pycompat,
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
33 registrar,
35244
98f97eb20597 rewriteutil: use precheck() in uncommit and amend commands
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35200
diff changeset
34 rewriteutil,
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
35 scmutil,
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
36 )
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
37
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
38 cmdtable = {}
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
39 command = registrar.command(cmdtable)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
40
34758
9ea416a4b4f7 configitems: register the 'experimental.uncommitondirtywdir' config
Boris Feld <boris.feld@octobus.net>
parents: 34285
diff changeset
41 configtable = {}
9ea416a4b4f7 configitems: register the 'experimental.uncommitondirtywdir' config
Boris Feld <boris.feld@octobus.net>
parents: 34285
diff changeset
42 configitem = registrar.configitem(configtable)
9ea416a4b4f7 configitems: register the 'experimental.uncommitondirtywdir' config
Boris Feld <boris.feld@octobus.net>
parents: 34285
diff changeset
43
9ea416a4b4f7 configitems: register the 'experimental.uncommitondirtywdir' config
Boris Feld <boris.feld@octobus.net>
parents: 34285
diff changeset
44 configitem('experimental', 'uncommitondirtywdir',
9ea416a4b4f7 configitems: register the 'experimental.uncommitondirtywdir' config
Boris Feld <boris.feld@octobus.net>
parents: 34285
diff changeset
45 default=False,
9ea416a4b4f7 configitems: register the 'experimental.uncommitondirtywdir' config
Boris Feld <boris.feld@octobus.net>
parents: 34285
diff changeset
46 )
9ea416a4b4f7 configitems: register the 'experimental.uncommitondirtywdir' config
Boris Feld <boris.feld@octobus.net>
parents: 34285
diff changeset
47
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
48 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
49 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
50 # be specifying the version(s) of Mercurial they are tested with, or
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
51 # leave the attribute unspecified.
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
52 testedwith = 'ships-with-hg-core'
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
53
36974
435b8b05affd uncommit: simplify condition for keeping commit
Martin von Zweigbergk <martinvonz@google.com>
parents: 36973
diff changeset
54 def _commitfiltered(repo, ctx, match, keepcommit):
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
55 """Recommit ctx with changed files not in match. Return the new
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
56 node identifier, or None if nothing changed.
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
57 """
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
58 base = ctx.p1()
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
59 # ctx
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
60 initialfiles = set(ctx.files())
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
61 exclude = set(f for f in initialfiles if match(f))
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
62
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
63 # No files matched commit, so nothing excluded
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
64 if not exclude:
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
65 return None
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
66
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
67 files = (initialfiles - exclude)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
68 # return the p1 so that we don't create an obsmarker later
36974
435b8b05affd uncommit: simplify condition for keeping commit
Martin von Zweigbergk <martinvonz@google.com>
parents: 36973
diff changeset
69 if not keepcommit:
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
70 return ctx.parents()[0].node()
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
71
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
72 # Filter copies
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
73 copied = copies.pathcopies(base, ctx)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
74 copied = dict((dst, src) for dst, src in copied.iteritems()
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
75 if dst in files)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
76 def filectxfn(repo, memctx, path, contentctx=ctx, redirect=()):
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
77 if path not in contentctx:
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
78 return None
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
79 fctx = contentctx[path]
35400
8a0cac20a1ad memfilectx: make changectx argument mandatory in constructor (API)
Martin von Zweigbergk <martinvonz@google.com>
parents: 35244
diff changeset
80 mctx = context.memfilectx(repo, memctx, fctx.path(), fctx.data(),
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
81 fctx.islink(),
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
82 fctx.isexec(),
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
83 copied=copied.get(path))
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
84 return mctx
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
85
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
86 new = context.memctx(repo,
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
87 parents=[base.node(), node.nullid],
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
88 text=ctx.description(),
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
89 files=files,
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
90 filectxfn=filectxfn,
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
91 user=ctx.user(),
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
92 date=ctx.date(),
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
93 extra=ctx.extra())
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
94 # phase handling
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
95 commitphase = ctx.phase()
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
96 overrides = {('phases', 'new-commit'): commitphase}
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
97 with repo.ui.configoverride(overrides, 'uncommit'):
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
98 newid = repo.commitctx(new)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
99 return newid
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
100
35183
9dadcb99cc17 uncommit: unify functions _uncommitdirstate and _unamenddirstate to one
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35182
diff changeset
101 def _fixdirstate(repo, oldctx, newctx, status):
9dadcb99cc17 uncommit: unify functions _uncommitdirstate and _unamenddirstate to one
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35182
diff changeset
102 """ fix the dirstate after switching the working directory from oldctx to
9dadcb99cc17 uncommit: unify functions _uncommitdirstate and _unamenddirstate to one
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35182
diff changeset
103 newctx which can be result of either unamend or uncommit.
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
104 """
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
105 ds = repo.dirstate
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
106 copies = dict(ds.copies())
35183
9dadcb99cc17 uncommit: unify functions _uncommitdirstate and _unamenddirstate to one
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35182
diff changeset
107 s = status
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
108 for f in s.modified:
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
109 if ds[f] == 'r':
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
110 # modified + removed -> removed
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
111 continue
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
112 ds.normallookup(f)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
113
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
114 for f in s.added:
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
115 if ds[f] == 'r':
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
116 # added + removed -> unknown
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
117 ds.drop(f)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
118 elif ds[f] != 'a':
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
119 ds.add(f)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
120
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
121 for f in s.removed:
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
122 if ds[f] == 'a':
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
123 # removed + added -> normal
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
124 ds.normallookup(f)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
125 elif ds[f] != 'r':
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
126 ds.remove(f)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
127
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
128 # Merge old parent and old working dir copies
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
129 oldcopies = {}
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
130 for f in (s.modified + s.added):
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
131 src = oldctx[f].renamed()
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
132 if src:
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
133 oldcopies[f] = src[0]
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
134 oldcopies.update(copies)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
135 copies = dict((dst, oldcopies.get(src, src))
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
136 for dst, src in oldcopies.iteritems())
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
137 # Adjust the dirstate copies
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
138 for dst, src in copies.iteritems():
35183
9dadcb99cc17 uncommit: unify functions _uncommitdirstate and _unamenddirstate to one
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35182
diff changeset
139 if (src not in newctx or dst in newctx or ds[dst] != 'a'):
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
140 src = None
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
141 ds.copy(src, dst)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
142
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
143 @command('uncommit',
34283
f94442d46984 uncommit: rename the flag 'empty' to 'keep' which retains empty changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents: 34192
diff changeset
144 [('', 'keep', False, _('allow an empty commit after uncommiting')),
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
145 ] + commands.walkopts,
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
146 _('[OPTION]... [FILE]...'))
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
147 def uncommit(ui, repo, *pats, **opts):
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
148 """uncommit part or all of a local changeset
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
149
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
150 This command undoes the effect of a local commit, returning the affected
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
151 files to their uncommitted state. This means that files modified or
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
152 deleted in the changeset will be left unchanged, and so will remain
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
153 modified in the working directory.
36973
d63c5c651183 uncommit: document when the commit will be pruned
Martin von Zweigbergk <martinvonz@google.com>
parents: 36972
diff changeset
154
d63c5c651183 uncommit: document when the commit will be pruned
Martin von Zweigbergk <martinvonz@google.com>
parents: 36972
diff changeset
155 If no files are specified, the commit will be pruned, unless --keep is
d63c5c651183 uncommit: document when the commit will be pruned
Martin von Zweigbergk <martinvonz@google.com>
parents: 36972
diff changeset
156 given.
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
157 """
35004
3ebae3ec4664 py3: handle keyword arguments in hgext/uncommit.py
Pulkit Goyal <7895pulkit@gmail.com>
parents: 34758
diff changeset
158 opts = pycompat.byteskwargs(opts)
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
159
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
160 with repo.wlock(), repo.lock():
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
161
34285
7b1e524ad73f uncommit: add an experimental.uncommitondirtywdir config
Pulkit Goyal <7895pulkit@gmail.com>
parents: 34284
diff changeset
162 if not pats and not repo.ui.configbool('experimental',
36947
3d0178bf1039 uncommit: fix unaligned indentation
Martin von Zweigbergk <martinvonz@google.com>
parents: 35809
diff changeset
163 'uncommitondirtywdir'):
34284
624c53e4121d uncommit: don't allow bare uncommit on dirty working directory
Pulkit Goyal <7895pulkit@gmail.com>
parents: 34283
diff changeset
164 cmdutil.bailifchanged(repo)
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
165 old = repo['.']
35244
98f97eb20597 rewriteutil: use precheck() in uncommit and amend commands
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35200
diff changeset
166 rewriteutil.precheck(repo, [old.rev()], 'uncommit')
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
167 if len(old.parents()) > 1:
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
168 raise error.Abort(_("cannot uncommit merge changeset"))
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
169
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
170 with repo.transaction('uncommit'):
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
171 match = scmutil.match(old, pats, opts)
36974
435b8b05affd uncommit: simplify condition for keeping commit
Martin von Zweigbergk <martinvonz@google.com>
parents: 36973
diff changeset
172 keepcommit = opts.get('keep') or pats
435b8b05affd uncommit: simplify condition for keeping commit
Martin von Zweigbergk <martinvonz@google.com>
parents: 36973
diff changeset
173 newid = _commitfiltered(repo, old, match, keepcommit)
34192
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
174 if newid is None:
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
175 ui.status(_("nothing to uncommit\n"))
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
176 return 1
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
177
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
178 mapping = {}
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
179 if newid != old.p1().node():
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
180 # Move local changes on filtered changeset
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
181 mapping[old.node()] = (newid,)
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
182 else:
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
183 # Fully removed the old commit
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
184 mapping[old.node()] = ()
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
185
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
186 scmutil.cleanupnodes(repo, mapping, 'uncommit')
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
187
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
188 with repo.dirstate.parentchange():
da2f5f19312c uncommit: move fb-extension to core which uncommits a changeset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
diff changeset
189 repo.dirstate.setparents(newid, node.nullid)
35183
9dadcb99cc17 uncommit: unify functions _uncommitdirstate and _unamenddirstate to one
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35182
diff changeset
190 s = repo.status(old.p1(), old, match=match)
9dadcb99cc17 uncommit: unify functions _uncommitdirstate and _unamenddirstate to one
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35182
diff changeset
191 _fixdirstate(repo, old, repo[newid], s)
35182
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
192
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
193 def predecessormarkers(ctx):
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
194 """yields the obsolete markers marking the given changeset as a successor"""
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
195 for data in ctx.repo().obsstore.predecessors.get(ctx.node(), ()):
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
196 yield obsutil.marker(ctx.repo(), data)
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
197
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
198 @command('^unamend', [])
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
199 def unamend(ui, repo, **opts):
35809
f9a82b9b2c36 unamend: fix command summary line
Martin von Zweigbergk <martinvonz@google.com>
parents: 35435
diff changeset
200 """undo the most recent amend operation on a current changeset
35182
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
201
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
202 This command will roll back to the previous version of a changeset,
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
203 leaving working directory in state in which it was before running
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
204 `hg amend` (e.g. files modified as part of an amend will be
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
205 marked as modified `hg status`)
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
206 """
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
207
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
208 unfi = repo.unfiltered()
35200
9e339c97fabb unamend: drop unused vars, query after taking lock, use ctx.hex() for extras
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35183
diff changeset
209 with repo.wlock(), repo.lock(), repo.transaction('unamend'):
35182
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
210
35200
9e339c97fabb unamend: drop unused vars, query after taking lock, use ctx.hex() for extras
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35183
diff changeset
211 # identify the commit from which to unamend
9e339c97fabb unamend: drop unused vars, query after taking lock, use ctx.hex() for extras
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35183
diff changeset
212 curctx = repo['.']
35182
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
213
35435
f01101100043 unamend: allow unamending if allowunstable is set
Martin von Zweigbergk <martinvonz@google.com>
parents: 35400
diff changeset
214 rewriteutil.precheck(repo, [curctx.rev()], 'unamend')
35182
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
215
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
216 # identify the commit to which to unamend
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
217 markers = list(predecessormarkers(curctx))
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
218 if len(markers) != 1:
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
219 e = _("changeset must have one predecessor, found %i predecessors")
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
220 raise error.Abort(e % len(markers))
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
221
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
222 prednode = markers[0].prednode()
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
223 predctx = unfi[prednode]
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
224
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
225 # add an extra so that we get a new hash
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
226 # note: allowing unamend to undo an unamend is an intentional feature
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
227 extras = predctx.extra()
35200
9e339c97fabb unamend: drop unused vars, query after taking lock, use ctx.hex() for extras
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35183
diff changeset
228 extras['unamend_source'] = curctx.hex()
35182
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
229
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
230 def filectxfn(repo, ctx_, path):
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
231 try:
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
232 return predctx.filectx(path)
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
233 except KeyError:
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
234 return None
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
235
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
236 # Make a new commit same as predctx
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
237 newctx = context.memctx(repo,
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
238 parents=(predctx.p1(), predctx.p2()),
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
239 text=predctx.description(),
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
240 files=predctx.files(),
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
241 filectxfn=filectxfn,
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
242 user=predctx.user(),
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
243 date=predctx.date(),
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
244 extra=extras)
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
245 # phase handling
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
246 commitphase = curctx.phase()
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
247 overrides = {('phases', 'new-commit'): commitphase}
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
248 with repo.ui.configoverride(overrides, 'uncommit'):
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
249 newprednode = repo.commitctx(newctx)
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
250
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
251 newpredctx = repo[newprednode]
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
252 dirstate = repo.dirstate
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
253
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
254 with dirstate.parentchange():
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
255 dirstate.setparents(newprednode, node.nullid)
35183
9dadcb99cc17 uncommit: unify functions _uncommitdirstate and _unamenddirstate to one
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35182
diff changeset
256 s = repo.status(predctx, curctx)
9dadcb99cc17 uncommit: unify functions _uncommitdirstate and _unamenddirstate to one
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35182
diff changeset
257 _fixdirstate(repo, curctx, newpredctx, s)
35182
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
258
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
259 mapping = {curctx.node(): (newprednode,)}
867990238dc6 unamend: move fb extension unamend to core
Pulkit Goyal <7895pulkit@gmail.com>
parents: 35004
diff changeset
260 scmutil.cleanupnodes(repo, mapping, 'unamend')