Mercurial > hg
annotate mercurial/strip.py @ 52154:6ca0771b32ef stable
tests: disable `test-git-interop.t` with a requirements directive
Note that the failures in this test affect all platforms.
I don't like this, but the test has been broken for awhile because of dirstate
API changes, and nobody noticed because the required `pygit2` package isn't
installed on the CI systems. I did install it on the mac CI system, which
triggers this failure. Disabling it is no worse than not running it due to the
missing package, but at least this way the CI systems can get the package
installed, and the test can be enabled and fixed eventually, without needing to
alter the CI systems.
The feature here is kind of abused. I thought about adding one specifically to
test for CI, but didn't feel like doing it at this point. Maybe if we need to
disable things to get the Windows CI off the ground (but that likely requires
testing for CI + platform).
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Fri, 11 Oct 2024 11:03:21 -0400 |
parents | f4733654f144 |
children |
rev | line source |
---|---|
51863
f4733654f144
typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents:
51703
diff
changeset
|
1 from __future__ import annotations |
f4733654f144
typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents:
51703
diff
changeset
|
2 |
45865
d7a508a75d72
strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
45514
diff
changeset
|
3 from .i18n import _ |
d7a508a75d72
strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
45514
diff
changeset
|
4 from . import ( |
28377
81ad683278b8
strip: use absolute_import
timeless <timeless@mozdev.org>
parents:
28288
diff
changeset
|
5 bookmarks as bookmarksmod, |
81ad683278b8
strip: use absolute_import
timeless <timeless@mozdev.org>
parents:
28288
diff
changeset
|
6 cmdutil, |
81ad683278b8
strip: use absolute_import
timeless <timeless@mozdev.org>
parents:
28288
diff
changeset
|
7 error, |
81ad683278b8
strip: use absolute_import
timeless <timeless@mozdev.org>
parents:
28288
diff
changeset
|
8 hg, |
81ad683278b8
strip: use absolute_import
timeless <timeless@mozdev.org>
parents:
28288
diff
changeset
|
9 lock as lockmod, |
48116
5ced12cfa41b
errors: raise InputError on bad revset to revrange() iff provided by the user
Martin von Zweigbergk <martinvonz@google.com>
parents:
48096
diff
changeset
|
10 logcmdutil, |
44856
b7808443ed6a
mergestate: split out merge state handling code from main merge module
Augie Fackler <augie@google.com>
parents:
44452
diff
changeset
|
11 mergestate as mergestatemod, |
32897
799db2af824c
py3: convert keys of kwargs back to bytes using pycompat.byteskwargs()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32337
diff
changeset
|
12 pycompat, |
32337
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
29841
diff
changeset
|
13 registrar, |
28377
81ad683278b8
strip: use absolute_import
timeless <timeless@mozdev.org>
parents:
28288
diff
changeset
|
14 repair, |
81ad683278b8
strip: use absolute_import
timeless <timeless@mozdev.org>
parents:
28288
diff
changeset
|
15 scmutil, |
81ad683278b8
strip: use absolute_import
timeless <timeless@mozdev.org>
parents:
28288
diff
changeset
|
16 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
17 |
28377
81ad683278b8
strip: use absolute_import
timeless <timeless@mozdev.org>
parents:
28288
diff
changeset
|
18 release = lockmod.release |
19822
a194a33f8cb2
mq: prepare a strip extension for extraction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
19 |
a194a33f8cb2
mq: prepare a strip extension for extraction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
20 cmdtable = {} |
32337
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
29841
diff
changeset
|
21 command = registrar.command(cmdtable) |
19823
6fb14d21fe9d
strip: move checksubstate from mq to strip
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19822
diff
changeset
|
22 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
23 |
42490
3a1988e915f9
strip: remove unused excsuffix argument from checklocalchanges()
Martin von Zweigbergk <martinvonz@google.com>
parents:
42470
diff
changeset
|
24 def checklocalchanges(repo, force=False): |
22925
68df36ce3d8a
strip: make checklocalchanges() return full status tuple
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
22057
diff
changeset
|
25 s = repo.status() |
19824
237e40b2c1ff
strip: move checklocalchanges from mq to strip
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19823
diff
changeset
|
26 if not force: |
42532
12243f15d53e
statecheck: added support for STATES
Taapas Agrawal <taapas2897@gmail.com>
parents:
42492
diff
changeset
|
27 cmdutil.checkunfinished(repo) |
42491
1474f5d84662
strip: use bailifchanged() instead of reimplementing it
Martin von Zweigbergk <martinvonz@google.com>
parents:
42490
diff
changeset
|
28 cmdutil.bailifchanged(repo) |
42532
12243f15d53e
statecheck: added support for STATES
Taapas Agrawal <taapas2897@gmail.com>
parents:
42492
diff
changeset
|
29 else: |
12243f15d53e
statecheck: added support for STATES
Taapas Agrawal <taapas2897@gmail.com>
parents:
42492
diff
changeset
|
30 cmdutil.checkunfinished(repo, skipmerge=True) |
22925
68df36ce3d8a
strip: make checklocalchanges() return full status tuple
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
22057
diff
changeset
|
31 return s |
19824
237e40b2c1ff
strip: move checklocalchanges from mq to strip
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19823
diff
changeset
|
32 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
33 |
34574
05c2a9f37a1d
strip: factor out update target selection
Paul Morelle <paul.morelle@octobus.net>
parents:
33488
diff
changeset
|
34 def _findupdatetarget(repo, nodes): |
05c2a9f37a1d
strip: factor out update target selection
Paul Morelle <paul.morelle@octobus.net>
parents:
33488
diff
changeset
|
35 unode, p2 = repo.changelog.parents(nodes[0]) |
34621
5613fb1583d6
strip: take branch into account when selecting update target (issue5540)
Paul Morelle <paul.morelle@octobus.net>
parents:
34574
diff
changeset
|
36 currentbranch = repo[None].branch() |
34574
05c2a9f37a1d
strip: factor out update target selection
Paul Morelle <paul.morelle@octobus.net>
parents:
33488
diff
changeset
|
37 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
38 if ( |
50928
d718eddf01d9
safehasattr: drop usage in favor of hasattr
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50603
diff
changeset
|
39 hasattr(repo, 'mq') |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46113
diff
changeset
|
40 and p2 != repo.nullid |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
41 and p2 in [x.node for x in repo.mq.applied] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
42 ): |
34574
05c2a9f37a1d
strip: factor out update target selection
Paul Morelle <paul.morelle@octobus.net>
parents:
33488
diff
changeset
|
43 unode = p2 |
34621
5613fb1583d6
strip: take branch into account when selecting update target (issue5540)
Paul Morelle <paul.morelle@octobus.net>
parents:
34574
diff
changeset
|
44 elif currentbranch != repo[unode].branch(): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
45 pwdir = b'parents(wdir())' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
46 revset = b'max(((parents(%ln::%r) + %r) - %ln::%r) and branch(%s))' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
47 branchtarget = repo.revs( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
48 revset, nodes, pwdir, pwdir, nodes, pwdir, currentbranch |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
49 ) |
34621
5613fb1583d6
strip: take branch into account when selecting update target (issue5540)
Paul Morelle <paul.morelle@octobus.net>
parents:
34574
diff
changeset
|
50 if branchtarget: |
5613fb1583d6
strip: take branch into account when selecting update target (issue5540)
Paul Morelle <paul.morelle@octobus.net>
parents:
34574
diff
changeset
|
51 cl = repo.changelog |
5613fb1583d6
strip: take branch into account when selecting update target (issue5540)
Paul Morelle <paul.morelle@octobus.net>
parents:
34574
diff
changeset
|
52 unode = cl.node(branchtarget.first()) |
34574
05c2a9f37a1d
strip: factor out update target selection
Paul Morelle <paul.morelle@octobus.net>
parents:
33488
diff
changeset
|
53 |
05c2a9f37a1d
strip: factor out update target selection
Paul Morelle <paul.morelle@octobus.net>
parents:
33488
diff
changeset
|
54 return unode |
05c2a9f37a1d
strip: factor out update target selection
Paul Morelle <paul.morelle@octobus.net>
parents:
33488
diff
changeset
|
55 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
56 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
57 def strip( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
58 ui, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
59 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
60 revs, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
61 update=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
62 backup=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
63 force=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
64 bookmarks=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
65 soft=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
66 ): |
32919
daceeed34ad2
strip: use context manager for locking in strip()
Martin von Zweigbergk <martinvonz@google.com>
parents:
32897
diff
changeset
|
67 with repo.wlock(), repo.lock(): |
19825
4b4997068143
strip: move the strip helper function for mq to strip
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19824
diff
changeset
|
68 if update: |
4b4997068143
strip: move the strip helper function for mq to strip
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19824
diff
changeset
|
69 checklocalchanges(repo, force=force) |
34574
05c2a9f37a1d
strip: factor out update target selection
Paul Morelle <paul.morelle@octobus.net>
parents:
33488
diff
changeset
|
70 urev = _findupdatetarget(repo, revs) |
19825
4b4997068143
strip: move the strip helper function for mq to strip
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19824
diff
changeset
|
71 hg.clean(repo, urev) |
26748
5ba0a99ff27f
dirstate: make dirstate.write() callers pass transaction object to it
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
26624
diff
changeset
|
72 repo.dirstate.write(repo.currenttransaction()) |
19825
4b4997068143
strip: move the strip helper function for mq to strip
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19824
diff
changeset
|
73 |
41798
8c42b4a3d447
strip: introduce a soft strip option
Boris Feld <boris.feld@octobus.net>
parents:
41397
diff
changeset
|
74 if soft: |
8c42b4a3d447
strip: introduce a soft strip option
Boris Feld <boris.feld@octobus.net>
parents:
41397
diff
changeset
|
75 repair.softstrip(ui, repo, revs, backup) |
8c42b4a3d447
strip: introduce a soft strip option
Boris Feld <boris.feld@octobus.net>
parents:
41397
diff
changeset
|
76 else: |
8c42b4a3d447
strip: introduce a soft strip option
Boris Feld <boris.feld@octobus.net>
parents:
41397
diff
changeset
|
77 repair.strip(ui, repo, revs, backup) |
21847
f6f122f4813b
strip: remove bookmarks after strip succeed (issue4295)
David Soria Parra <davidsp@fb.com>
parents:
20102
diff
changeset
|
78 |
26972
4b0c3df5d635
strip: renaming local variables
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com>
parents:
26748
diff
changeset
|
79 repomarks = repo._bookmarks |
27029
8279c5d116a0
strip: strip a list of bookmarks
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com>
parents:
26988
diff
changeset
|
80 if bookmarks: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
81 with repo.transaction(b'strip') as tr: |
27052
b9d0b45df7b2
strip: use repo._bookmarks.recordchange instead of repo._bookmarks.write
Laurent Charignon <lcharignon@fb.com>
parents:
27030
diff
changeset
|
82 if repo._activebookmark in bookmarks: |
b9d0b45df7b2
strip: use repo._bookmarks.recordchange instead of repo._bookmarks.write
Laurent Charignon <lcharignon@fb.com>
parents:
27030
diff
changeset
|
83 bookmarksmod.deactivate(repo) |
33488
eb344bbac18c
bookmark: use 'applychanges' when stripping
Boris Feld <boris.feld@octobus.net>
parents:
32920
diff
changeset
|
84 repomarks.applychanges(repo, tr, [(b, None) for b in bookmarks]) |
27872
a54afc4475d7
with: use a context manager for transaction in strip
Bryan O'Sullivan <bryano@fb.com>
parents:
27839
diff
changeset
|
85 for bookmark in sorted(bookmarks): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
86 ui.write(_(b"bookmark '%s' deleted\n") % bookmark) |
19826
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
87 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
88 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
89 @command( |
45865
d7a508a75d72
strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
45514
diff
changeset
|
90 b"debugstrip", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
91 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
92 ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
93 b'r', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
94 b'rev', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
95 [], |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
96 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
97 b'strip specified revision (optional, ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
98 b'can specify revisions without this ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
99 b'option)' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
100 ), |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
101 _(b'REV'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
102 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
103 ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
104 b'f', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
105 b'force', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
106 None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
107 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
108 b'force removal of changesets, discard ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
109 b'uncommitted changes (no backup)' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
110 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
111 ), |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
112 (b'', b'no-backup', None, _(b'do not save backup bundle')), |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
113 ( |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
114 b'', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
115 b'nobackup', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
116 None, |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
117 _(b'do not save backup bundle (DEPRECATED)'), |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
118 ), |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
119 (b'n', b'', None, _(b'ignored (DEPRECATED)')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
120 ( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
121 b'k', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
122 b'keep', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
123 None, |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
124 _(b"do not modify working directory during strip"), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
125 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
126 ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
127 b'B', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
128 b'bookmark', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
129 [], |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
130 _(b"remove revs only reachable from given bookmark"), |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
131 _(b'BOOKMARK'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
132 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
133 ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
134 b'', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
135 b'soft', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
136 None, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
137 _(b"simply drop changesets from visible history (EXPERIMENTAL)"), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
138 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
139 ], |
45865
d7a508a75d72
strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
45514
diff
changeset
|
140 _(b'hg debugstrip [-k] [-f] [-B bookmark] [-r] REV...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
141 helpcategory=command.CATEGORY_MAINTENANCE, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
142 ) |
45865
d7a508a75d72
strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
45514
diff
changeset
|
143 def debugstrip(ui, repo, *revs, **opts): |
19826
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
144 """strip changesets and all their descendants from the repository |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
145 |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
146 The strip command removes the specified changesets and all their |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
147 descendants. If the working directory has uncommitted changes, the |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
148 operation is aborted unless the --force flag is supplied, in which |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
149 case changes will be discarded. |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
150 |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
151 If a parent of the working directory is stripped, then the working |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
152 directory will automatically be updated to the most recent |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
153 available ancestor of the stripped parent after the operation |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
154 completes. |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
155 |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
156 Any stripped changesets are stored in ``.hg/strip-backup`` as a |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
157 bundle (see :hg:`help bundle` and :hg:`help unbundle`). They can |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
158 be restored by running :hg:`unbundle .hg/strip-backup/BUNDLE`, |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
159 where BUNDLE is the bundle file created by the strip. Note that |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
160 the local revision numbers will in general be different after the |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
161 restore. |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
162 |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
163 Use the --no-backup option to discard the backup bundle once the |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
164 operation completes. |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
165 |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
166 Strip is not a history-rewriting operation and can be used on |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
167 changesets in the public phase. But if the stripped changesets have |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
168 been pushed to a remote repository you will likely pull them again. |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
169 |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
170 Return 0 on success. |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
171 """ |
32897
799db2af824c
py3: convert keys of kwargs back to bytes using pycompat.byteskwargs()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32337
diff
changeset
|
172 opts = pycompat.byteskwargs(opts) |
22057
445472225ccd
strip: remove -b/--backup codepaths
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
21854
diff
changeset
|
173 backup = True |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
174 if opts.get(b'no_backup') or opts.get(b'nobackup'): |
22057
445472225ccd
strip: remove -b/--backup codepaths
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
21854
diff
changeset
|
175 backup = False |
19826
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
176 |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
177 cl = repo.changelog |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
178 revs = list(revs) + opts.get(b'rev') |
48116
5ced12cfa41b
errors: raise InputError on bad revset to revrange() iff provided by the user
Martin von Zweigbergk <martinvonz@google.com>
parents:
48096
diff
changeset
|
179 revs = set(logcmdutil.revrange(repo, revs)) |
19826
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
180 |
27839
7ec3cb246291
with: use context manager for wlock in shelve stripcmd
Bryan O'Sullivan <bryano@fb.com>
parents:
27052
diff
changeset
|
181 with repo.wlock(): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
182 bookmarks = set(opts.get(b'bookmark')) |
27029
8279c5d116a0
strip: strip a list of bookmarks
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com>
parents:
26988
diff
changeset
|
183 if bookmarks: |
26972
4b0c3df5d635
strip: renaming local variables
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com>
parents:
26748
diff
changeset
|
184 repomarks = repo._bookmarks |
27029
8279c5d116a0
strip: strip a list of bookmarks
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com>
parents:
26988
diff
changeset
|
185 if not bookmarks.issubset(repomarks): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
186 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
187 _(b"bookmark '%s' not found") |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
188 % b','.join(sorted(bookmarks - set(repomarks.keys()))) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
189 ) |
20096
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
190 |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
191 # If the requested bookmark is not the only one pointing to a |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
192 # a revision we have to only delete the bookmark and not strip |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
193 # anything. revsets cannot detect that case. |
27029
8279c5d116a0
strip: strip a list of bookmarks
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com>
parents:
26988
diff
changeset
|
194 nodetobookmarks = {} |
48913
f254fc73d956
global: bulk replace simple pycompat.iteritems(x) with x.items()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48875
diff
changeset
|
195 for mark, node in repomarks.items(): |
27029
8279c5d116a0
strip: strip a list of bookmarks
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com>
parents:
26988
diff
changeset
|
196 nodetobookmarks.setdefault(node, []).append(mark) |
8279c5d116a0
strip: strip a list of bookmarks
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com>
parents:
26988
diff
changeset
|
197 for marks in nodetobookmarks.values(): |
8279c5d116a0
strip: strip a list of bookmarks
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com>
parents:
26988
diff
changeset
|
198 if bookmarks.issuperset(marks): |
38131
46c2b19a1263
scmutil: move repair.stripbmrevset as scmutil.bookmarkrevs (API)
David Demelier <markand@malikania.fr>
parents:
36341
diff
changeset
|
199 rsrevs = scmutil.bookmarkrevs(repo, marks[0]) |
27030
cf9ed6d32ccb
strip: changing bookmark argument to be a list
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com>
parents:
27029
diff
changeset
|
200 revs.update(set(rsrevs)) |
20096
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
201 if not revs: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
202 with repo.lock(), repo.transaction(b'bookmark') as tr: |
33488
eb344bbac18c
bookmark: use 'applychanges' when stripping
Boris Feld <boris.feld@octobus.net>
parents:
32920
diff
changeset
|
203 bmchanges = [(b, None) for b in bookmarks] |
eb344bbac18c
bookmark: use 'applychanges' when stripping
Boris Feld <boris.feld@octobus.net>
parents:
32920
diff
changeset
|
204 repomarks.applychanges(repo, tr, bmchanges) |
32920
8dbcb66ac160
strip: use context manager for locking and transaction in stripcmd()
Martin von Zweigbergk <martinvonz@google.com>
parents:
32919
diff
changeset
|
205 for bookmark in sorted(bookmarks): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
206 ui.write(_(b"bookmark '%s' deleted\n") % bookmark) |
20096
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
207 |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
208 if not revs: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
209 raise error.Abort(_(b'empty revision set')) |
20096
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
210 |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
211 descendants = set(cl.descendants(revs)) |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
212 strippedrevs = revs.union(descendants) |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
213 roots = revs.difference(descendants) |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
214 |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
215 # if one of the wdir parent is stripped we'll need |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
216 # to update away to an earlier revision |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
217 update = any( |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46113
diff
changeset
|
218 p != repo.nullid and cl.rev(p) in strippedrevs |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
219 for p in repo.dirstate.parents() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
220 ) |
20096
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
221 |
44452
9d2b2df2c2ba
cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com>
parents:
43117
diff
changeset
|
222 rootnodes = {cl.node(r) for r in roots} |
19826
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
223 |
20096
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
224 q = getattr(repo, 'mq', None) |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
225 if q is not None and q.applied: |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
226 # refresh queue state if we're about to strip |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
227 # applied patches |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
228 if cl.rev(repo.lookup(b'qtip')) in strippedrevs: |
20096
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
229 q.applieddirty = True |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
230 start = 0 |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
231 end = len(q.applied) |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
232 for i, statusentry in enumerate(q.applied): |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
233 if statusentry.node in rootnodes: |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
234 # if one of the stripped roots is an applied |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
235 # patch, only part of the queue is stripped |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
236 start = i |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
237 break |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
238 del q.applied[start:end] |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
239 q.savedirty() |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
240 |
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
241 revs = sorted(rootnodes) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
242 if update and opts.get(b'keep'): |
50112
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
243 with repo.dirstate.changing_parents(repo): |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
244 urev = _findupdatetarget(repo, revs) |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
245 uctx = repo[urev] |
20096
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
246 |
50112
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
247 # only reset the dirstate for files that would actually change |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
248 # between the working context and uctx |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
249 descendantrevs = repo.revs(b"only(., %d)", uctx.rev()) |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
250 changedfiles = [] |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
251 for rev in descendantrevs: |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
252 # blindly reset the files, regardless of what actually changed |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
253 changedfiles.extend(repo[rev].files()) |
20096
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
254 |
50112
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
255 # reset files that only changed in the dirstate too |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
256 dirstate = repo.dirstate |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
257 dirchanges = [ |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
258 f for f in dirstate if not dirstate.get_entry(f).maybe_clean |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
259 ] |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
260 changedfiles.extend(dirchanges) |
20096
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
261 |
50112
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
262 repo.dirstate.rebuild(urev, uctx.manifest(), changedfiles) |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
263 repo.dirstate.write(repo.currenttransaction()) |
24709
69154e0ae384
strip: properly clear resolve state with --keep (issue4593)
Matt Mackall <mpm@selenic.com>
parents:
24471
diff
changeset
|
264 |
50112
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
265 # clear resolve state |
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
266 mergestatemod.mergestate.clean(repo) |
24709
69154e0ae384
strip: properly clear resolve state with --keep (issue4593)
Matt Mackall <mpm@selenic.com>
parents:
24471
diff
changeset
|
267 |
50112
62158471d038
strip: use a `changing_parents` context for --keep update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48913
diff
changeset
|
268 update = False |
20096
88e172871ad7
strip: hold wlock for entire duration
Siddharth Agarwal <sid0@fb.com>
parents:
20009
diff
changeset
|
269 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
270 strip( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
271 ui, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
272 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
273 revs, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
274 backup=backup, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
275 update=update, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
276 force=opts.get(b'force'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
277 bookmarks=bookmarks, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
278 soft=opts[b'soft'], |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42532
diff
changeset
|
279 ) |
19826
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
280 |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
281 return 0 |