Mercurial > hg
annotate hgext/mq.py @ 52316:a820a7a1fce0 default tip
setup: require TLS 1.2 support from the Python interpreter (BC)
Before it was optional, and either 1.1 or 1.2 was sufficient. Now that the
default minimum is 1.2, it needs to be present to work out of the box.
The code here is more convoluted than the corresponding checks in `sslutil.py`,
but I'm leaving it alone because it can all be simplified when py38 is dropped.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 21 Nov 2024 11:46:10 -0500 |
parents | f4733654f144 |
children |
rev | line source |
---|---|
6187
531f3e78c6f2
mq: Cleanup: update outdated file header.
Marti Raudsepp <marti@juffo.org>
parents:
6164
diff
changeset
|
1 # mq.py - patch queues for mercurial |
1808 | 2 # |
2859 | 3 # Copyright 2005, 2006 Chris Mason <mason@suse.com> |
1808 | 4 # |
8225
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
8209
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
10263 | 6 # GNU General Public License version 2 or any later version. |
1808 | 7 |
8932
f87884329419
extensions: fix up description lines some more
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8929
diff
changeset
|
8 '''manage a stack of patches |
2554
8264c2034970
help: add help to mq extension
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2531
diff
changeset
|
9 |
8264c2034970
help: add help to mq extension
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2531
diff
changeset
|
10 This extension lets you work with a stack of patches in a Mercurial |
7983
7b813bdbd5d0
Change double spaces to single spaces in help texts.
Martin Geisler <mg@daimi.au.dk>
parents:
7874
diff
changeset
|
11 repository. It manages two stacks of patches - all known patches, and |
2554
8264c2034970
help: add help to mq extension
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2531
diff
changeset
|
12 applied patches (subset of known patches). |
8264c2034970
help: add help to mq extension
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2531
diff
changeset
|
13 |
8264c2034970
help: add help to mq extension
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2531
diff
changeset
|
14 Known patches are represented as patch files in the .hg/patches |
7983
7b813bdbd5d0
Change double spaces to single spaces in help texts.
Martin Geisler <mg@daimi.au.dk>
parents:
7874
diff
changeset
|
15 directory. Applied patches are both patch files and changesets. |
2554
8264c2034970
help: add help to mq extension
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2531
diff
changeset
|
16 |
30879
5fbf1da938a6
help: uppercase command placeholder
Yuya Nishihara <yuya@tcha.org>
parents:
30519
diff
changeset
|
17 Common tasks (use :hg:`help COMMAND` for more details):: |
2554
8264c2034970
help: add help to mq extension
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2531
diff
changeset
|
18 |
9157
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9111
diff
changeset
|
19 create new patch qnew |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9111
diff
changeset
|
20 import existing patch qimport |
2554
8264c2034970
help: add help to mq extension
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2531
diff
changeset
|
21 |
9157
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9111
diff
changeset
|
22 print patch series qseries |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9111
diff
changeset
|
23 print applied patches qapplied |
2554
8264c2034970
help: add help to mq extension
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2531
diff
changeset
|
24 |
9157
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9111
diff
changeset
|
25 add known patch to applied stack qpush |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9111
diff
changeset
|
26 remove patch from applied stack qpop |
9261667e9b82
commands: use minirst parser when displaying help
Martin Geisler <mg@lazybytes.net>
parents:
9111
diff
changeset
|
27 refresh contents of top applied patch qrefresh |
10190
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
28 |
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
29 By default, mq will automatically use git patches when required to |
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
30 avoid losing file mode changes, copy records, binary files or empty |
26098 | 31 files creations or deletions. This behavior can be configured with:: |
10190
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
32 |
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
33 [mq] |
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
34 git = auto/keep/yes/no |
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
35 |
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
36 If set to 'keep', mq will obey the [diff] section configuration while |
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
37 preserving existing git patches upon qrefresh. If set to 'yes' or |
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
38 'no', mq will override the [diff] section and always generate git or |
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
39 regular patches, possibly losing data in the second case. |
11234
1ebe048902d9
mq: mention qqueue in module docstring
Martin Geisler <mg@lazybytes.net>
parents:
11230
diff
changeset
|
40 |
16040
c0b2986b37b8
mq: fix secret description in help
Matt Mackall <mpm@selenic.com>
parents:
16029
diff
changeset
|
41 It may be desirable for mq changesets to be kept in the secret phase (see |
16017 | 42 :hg:`help phases`), which can be enabled with the following setting:: |
43 | |
44 [mq] | |
45 secret = True | |
46 | |
11234
1ebe048902d9
mq: mention qqueue in module docstring
Martin Geisler <mg@lazybytes.net>
parents:
11230
diff
changeset
|
47 You will by default be managing a patch queue named "patches". You can |
1ebe048902d9
mq: mention qqueue in module docstring
Martin Geisler <mg@lazybytes.net>
parents:
11230
diff
changeset
|
48 create other, independent patch queues with the :hg:`qqueue` command. |
16656
4ae3ba9e4d7a
mq: introduce mq.check setting
Patrick Mezard <patrick@mezard.eu>
parents:
16655
diff
changeset
|
49 |
4ae3ba9e4d7a
mq: introduce mq.check setting
Patrick Mezard <patrick@mezard.eu>
parents:
16655
diff
changeset
|
50 If the working directory contains uncommitted files, qpush, qpop and |
4ae3ba9e4d7a
mq: introduce mq.check setting
Patrick Mezard <patrick@mezard.eu>
parents:
16655
diff
changeset
|
51 qgoto abort immediately. If -f/--force is used, the changes are |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
52 discarded. Setting:: |
16656
4ae3ba9e4d7a
mq: introduce mq.check setting
Patrick Mezard <patrick@mezard.eu>
parents:
16655
diff
changeset
|
53 |
4ae3ba9e4d7a
mq: introduce mq.check setting
Patrick Mezard <patrick@mezard.eu>
parents:
16655
diff
changeset
|
54 [mq] |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
55 keepchanges = True |
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
56 |
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
57 make them behave as if --keep-changes were passed, and non-conflicting |
16656
4ae3ba9e4d7a
mq: introduce mq.check setting
Patrick Mezard <patrick@mezard.eu>
parents:
16655
diff
changeset
|
58 local changes will be tolerated and preserved. If incompatible options |
4ae3ba9e4d7a
mq: introduce mq.check setting
Patrick Mezard <patrick@mezard.eu>
parents:
16655
diff
changeset
|
59 such as -f/--force or --exact are passed, this setting is ignored. |
19826
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
60 |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
61 This extension used to provide a strip command. This command now lives |
4b1cbcfdabf7
mq: extract strip function as its standalone extension (issue3824)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19825
diff
changeset
|
62 in the strip extension. |
2554
8264c2034970
help: add help to mq extension
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2531
diff
changeset
|
63 ''' |
8264c2034970
help: add help to mq extension
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2531
diff
changeset
|
64 |
51863
f4733654f144
typing: add `from __future__ import annotations` to most files
Matt Harbison <matt_harbison@yahoo.com>
parents:
51406
diff
changeset
|
65 from __future__ import annotations |
29127
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
66 |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
67 import os |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
68 import re |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
69 import shutil |
44019
5bbd770d1324
mq: avoid using `__file__` to compare modules
Matt Harbison <matt_harbison@yahoo.com>
parents:
43987
diff
changeset
|
70 import sys |
3891 | 71 from mercurial.i18n import _ |
29127
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
72 from mercurial.node import ( |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
73 bin, |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
74 hex, |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
75 nullrev, |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
76 short, |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
77 ) |
43089
c59eb1560c44
py3: manually import getattr where it is needed
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43085
diff
changeset
|
78 from mercurial.pycompat import ( |
c59eb1560c44
py3: manually import getattr where it is needed
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43085
diff
changeset
|
79 open, |
c59eb1560c44
py3: manually import getattr where it is needed
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43085
diff
changeset
|
80 ) |
29127
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
81 from mercurial import ( |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
82 cmdutil, |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
83 commands, |
34022
d5b2beca16c0
python3: wrap all uses of <exception>.strerror with strtolocal
Augie Fackler <raf@durin42.com>
parents:
33489
diff
changeset
|
84 encoding, |
29127
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
85 error, |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
86 extensions, |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
87 hg, |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
88 localrepo, |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
89 lock as lockmod, |
35888
c8e2d6ed1f9e
cmdutil: drop aliases for logcmdutil functions (API)
Yuya Nishihara <yuya@tcha.org>
parents:
35844
diff
changeset
|
90 logcmdutil, |
29127
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
91 patch as patchmod, |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
92 phases, |
30519
20a42325fdef
py3: use pycompat.getcwd() instead of os.getcwd()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
30489
diff
changeset
|
93 pycompat, |
29127
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
94 registrar, |
31024
0b8356705de6
revset: split language services to revsetlang module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
31023
diff
changeset
|
95 revsetlang, |
29127
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
96 scmutil, |
31023
aea06029919e
revset: import set classes directly from smartset module
Yuya Nishihara <yuya@tcha.org>
parents:
30879
diff
changeset
|
97 smartset, |
45865
d7a508a75d72
strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
45375
diff
changeset
|
98 strip, |
36009
55e8efa2451a
subrepo: split non-core functions to new module
Yuya Nishihara <yuya@tcha.org>
parents:
35948
diff
changeset
|
99 subrepoutil, |
29127
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
100 util, |
31243
816bc3b35bac
vfs: use 'vfs' module directly in 'hgext.mq'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31216
diff
changeset
|
101 vfs as vfsmod, |
29127
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
102 ) |
37084
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
36668
diff
changeset
|
103 from mercurial.utils import ( |
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
36668
diff
changeset
|
104 dateutil, |
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
36668
diff
changeset
|
105 stringutil, |
46907
ffd3e823a7e5
urlutil: extract `url` related code from `util` into the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45942
diff
changeset
|
106 urlutil, |
37084
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
36668
diff
changeset
|
107 ) |
29127
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
108 |
fa161ac73b24
py3: make hgext/mq.py use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
28622
diff
changeset
|
109 release = lockmod.release |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
110 seriesopts = [(b's', b'summary', None, _(b'print first line of patch header'))] |
14298
21719639276d
mq: use cmdutil.command decorator
Martin Geisler <mg@aragost.com>
parents:
14267
diff
changeset
|
111 |
21719639276d
mq: use cmdutil.command decorator
Martin Geisler <mg@aragost.com>
parents:
14267
diff
changeset
|
112 cmdtable = {} |
32337
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32193
diff
changeset
|
113 command = registrar.command(cmdtable) |
29841
d5883fd055c6
extensions: change magic "shipped with hg" string
Augie Fackler <augie@google.com>
parents:
29752
diff
changeset
|
114 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for |
25186
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
25149
diff
changeset
|
115 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
25149
diff
changeset
|
116 # be specifying the version(s) of Mercurial they are tested with, or |
80c5b2666a96
extensions: document that `testedwith = 'internal'` is special
Augie Fackler <augie@google.com>
parents:
25149
diff
changeset
|
117 # leave the attribute unspecified. |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
118 testedwith = b'ships-with-hg-core' |
14298
21719639276d
mq: use cmdutil.command decorator
Martin Geisler <mg@aragost.com>
parents:
14267
diff
changeset
|
119 |
34181
62490b84ebf8
configitems: register the 'mq.git' config
Boris Feld <boris.feld@octobus.net>
parents:
34138
diff
changeset
|
120 configtable = {} |
62490b84ebf8
configitems: register the 'mq.git' config
Boris Feld <boris.feld@octobus.net>
parents:
34138
diff
changeset
|
121 configitem = registrar.configitem(configtable) |
62490b84ebf8
configitems: register the 'mq.git' config
Boris Feld <boris.feld@octobus.net>
parents:
34138
diff
changeset
|
122 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
123 configitem( |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
124 b'mq', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
125 b'git', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
126 default=b'auto', |
34181
62490b84ebf8
configitems: register the 'mq.git' config
Boris Feld <boris.feld@octobus.net>
parents:
34138
diff
changeset
|
127 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
128 configitem( |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
129 b'mq', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
130 b'keepchanges', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
131 default=False, |
34182
cac8c4e51951
configitems: register the 'mq.keepchanges' config
Boris Feld <boris.feld@octobus.net>
parents:
34181
diff
changeset
|
132 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
133 configitem( |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
134 b'mq', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
135 b'plain', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
136 default=False, |
34183
5c150b70d004
configitems: register the 'mq.plain' config
Boris Feld <boris.feld@octobus.net>
parents:
34182
diff
changeset
|
137 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
138 configitem( |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
139 b'mq', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
140 b'secret', |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
141 default=False, |
34184
b5bbfe176004
configitems: register the 'mq.secret' config
Boris Feld <boris.feld@octobus.net>
parents:
34183
diff
changeset
|
142 ) |
34181
62490b84ebf8
configitems: register the 'mq.git' config
Boris Feld <boris.feld@octobus.net>
parents:
34138
diff
changeset
|
143 |
19951
d51c4d85ec23
spelling: random spell checker fixes
Mads Kiilerich <madski@unity3d.com>
parents:
19916
diff
changeset
|
144 # force load strip extension formerly included in mq and import some utility |
19822
a194a33f8cb2
mq: prepare a strip extension for extraction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19820
diff
changeset
|
145 try: |
45865
d7a508a75d72
strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
45375
diff
changeset
|
146 extensions.find(b'strip') |
19822
a194a33f8cb2
mq: prepare a strip extension for extraction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19820
diff
changeset
|
147 except KeyError: |
a194a33f8cb2
mq: prepare a strip extension for extraction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19820
diff
changeset
|
148 # note: load is lazy so we could avoid the try-except, |
19951
d51c4d85ec23
spelling: random spell checker fixes
Mads Kiilerich <madski@unity3d.com>
parents:
19916
diff
changeset
|
149 # but I (marmoute) prefer this explicit code. |
48946
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48913
diff
changeset
|
150 class dummyui: |
19822
a194a33f8cb2
mq: prepare a strip extension for extraction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19820
diff
changeset
|
151 def debug(self, msg): |
a194a33f8cb2
mq: prepare a strip extension for extraction
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19820
diff
changeset
|
152 pass |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
153 |
40995
19178aeb9b43
mq: implement log() on dummyui
Yuya Nishihara <yuya@tcha.org>
parents:
40360
diff
changeset
|
154 def log(self, event, msgfmt, *msgargs, **opts): |
19178aeb9b43
mq: implement log() on dummyui
Yuya Nishihara <yuya@tcha.org>
parents:
40360
diff
changeset
|
155 pass |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
156 |
45865
d7a508a75d72
strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
45375
diff
changeset
|
157 extensions.load(dummyui(), b'strip', b'') |
d7a508a75d72
strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
45375
diff
changeset
|
158 |
d7a508a75d72
strip: move into core
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com>
parents:
45375
diff
changeset
|
159 strip = strip.strip |
42492
4bcabb5ae9b6
strip: move checksubstate() to mq (its only caller)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42489
diff
changeset
|
160 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
161 |
42492
4bcabb5ae9b6
strip: move checksubstate() to mq (its only caller)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42489
diff
changeset
|
162 def checksubstate(repo, baserev=None): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
163 """return list of subrepos at a different revision than substate. |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
164 Abort if any subrepos have uncommitted changes.""" |
42492
4bcabb5ae9b6
strip: move checksubstate() to mq (its only caller)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42489
diff
changeset
|
165 inclsubs = [] |
4bcabb5ae9b6
strip: move checksubstate() to mq (its only caller)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42489
diff
changeset
|
166 wctx = repo[None] |
4bcabb5ae9b6
strip: move checksubstate() to mq (its only caller)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42489
diff
changeset
|
167 if baserev: |
4bcabb5ae9b6
strip: move checksubstate() to mq (its only caller)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42489
diff
changeset
|
168 bctx = repo[baserev] |
4bcabb5ae9b6
strip: move checksubstate() to mq (its only caller)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42489
diff
changeset
|
169 else: |
4bcabb5ae9b6
strip: move checksubstate() to mq (its only caller)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42489
diff
changeset
|
170 bctx = wctx.p1() |
4bcabb5ae9b6
strip: move checksubstate() to mq (its only caller)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42489
diff
changeset
|
171 for s in sorted(wctx.substate): |
4bcabb5ae9b6
strip: move checksubstate() to mq (its only caller)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42489
diff
changeset
|
172 wctx.sub(s).bailifchanged(True) |
4bcabb5ae9b6
strip: move checksubstate() to mq (its only caller)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42489
diff
changeset
|
173 if s not in bctx.substate or bctx.sub(s).dirty(): |
4bcabb5ae9b6
strip: move checksubstate() to mq (its only caller)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42489
diff
changeset
|
174 inclsubs.append(s) |
4bcabb5ae9b6
strip: move checksubstate() to mq (its only caller)
Martin von Zweigbergk <martinvonz@google.com>
parents:
42489
diff
changeset
|
175 return inclsubs |
19823
6fb14d21fe9d
strip: move checksubstate from mq to strip
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19822
diff
changeset
|
176 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
177 |
4037
bbdba01cce28
Enforce unixish style for all generated patch names.
Patrick Mezard <pmezard@gmail.com>
parents:
4016
diff
changeset
|
178 # Patch names looks like unix-file names. |
bbdba01cce28
Enforce unixish style for all generated patch names.
Patrick Mezard <pmezard@gmail.com>
parents:
4016
diff
changeset
|
179 # They must be joinable with queue directory and result in the patch path. |
bbdba01cce28
Enforce unixish style for all generated patch names.
Patrick Mezard <pmezard@gmail.com>
parents:
4016
diff
changeset
|
180 normname = util.normpath |
bbdba01cce28
Enforce unixish style for all generated patch names.
Patrick Mezard <pmezard@gmail.com>
parents:
4016
diff
changeset
|
181 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
182 |
48946
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48913
diff
changeset
|
183 class statusentry: |
10682
8ed350051896
mq: simplify statusentry(), fix restore broken by ee48e5ef8753
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10681
diff
changeset
|
184 def __init__(self, node, name): |
8ed350051896
mq: simplify statusentry(), fix restore broken by ee48e5ef8753
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10681
diff
changeset
|
185 self.node, self.name = node, name |
35842
9bce28609a95
mq: fix up statusentry to be both repr()-able and bytes()-able
Augie Fackler <augie@google.com>
parents:
35145
diff
changeset
|
186 |
9bce28609a95
mq: fix up statusentry to be both repr()-able and bytes()-able
Augie Fackler <augie@google.com>
parents:
35145
diff
changeset
|
187 def __bytes__(self): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
188 return hex(self.node) + b':' + self.name |
2780
ee48e5ef8753
Use StatusEntry class instead of repeated status line parsing.
Brendan Cully <brendan@kublai.com>
parents:
2765
diff
changeset
|
189 |
35842
9bce28609a95
mq: fix up statusentry to be both repr()-able and bytes()-able
Augie Fackler <augie@google.com>
parents:
35145
diff
changeset
|
190 __str__ = encoding.strmethod(__bytes__) |
9bce28609a95
mq: fix up statusentry to be both repr()-able and bytes()-able
Augie Fackler <augie@google.com>
parents:
35145
diff
changeset
|
191 __repr__ = encoding.strmethod(__bytes__) |
9bce28609a95
mq: fix up statusentry to be both repr()-able and bytes()-able
Augie Fackler <augie@google.com>
parents:
35145
diff
changeset
|
192 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
193 |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
194 # The order of the headers in 'hg export' HG patches: |
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
195 HGHEADERS = [ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
196 # '# HG changeset patch', |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
197 b'# User ', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
198 b'# Date ', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
199 b'# ', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
200 b'# Branch ', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
201 b'# Node ID ', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
202 b'# Parent ', # can occur twice for merges - but that is not relevant for mq |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
203 ] |
23442
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
204 # The order of headers in plain 'mail style' patches: |
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
205 PLAINHEADERS = { |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
206 b'from': 0, |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
207 b'date': 1, |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
208 b'subject': 2, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
209 } |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
210 |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
211 |
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
212 def inserthgheader(lines, header, value): |
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
213 """Assuming lines contains a HG patch header, add a header line with value. |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
214 >>> try: inserthgheader([], b'# Date ', b'z') |
34138
0f9936d80e01
doctest: upgrade old-style "except" clause
Yuya Nishihara <yuya@tcha.org>
parents:
34137
diff
changeset
|
215 ... except ValueError as inst: print("oops") |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
216 oops |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
217 >>> inserthgheader([b'# HG changeset patch'], b'# Date ', b'z') |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
218 ['# HG changeset patch', '# Date z'] |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
219 >>> inserthgheader([b'# HG changeset patch', b''], b'# Date ', b'z') |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
220 ['# HG changeset patch', '# Date z', ''] |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
221 >>> inserthgheader([b'# HG changeset patch', b'# User y'], b'# Date ', b'z') |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
222 ['# HG changeset patch', '# User y', '# Date z'] |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
223 >>> inserthgheader([b'# HG changeset patch', b'# Date x', b'# User y'], |
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
224 ... b'# User ', b'z') |
23412
94092019e839
mq: fix update of headers that occur in the "wrong" order
Mads Kiilerich <madski@unity3d.com>
parents:
23346
diff
changeset
|
225 ['# HG changeset patch', '# Date x', '# User z'] |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
226 >>> inserthgheader([b'# HG changeset patch', b'# Date y'], b'# Date ', b'z') |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
227 ['# HG changeset patch', '# Date z'] |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
228 >>> inserthgheader([b'# HG changeset patch', b'', b'# Date y'], |
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
229 ... b'# Date ', b'z') |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
230 ['# HG changeset patch', '# Date z', '', '# Date y'] |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
231 >>> inserthgheader([b'# HG changeset patch', b'# Parent y'], |
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
232 ... b'# Date ', b'z') |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
233 ['# HG changeset patch', '# Date z', '# Parent y'] |
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
234 """ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
235 start = lines.index(b'# HG changeset patch') + 1 |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
236 newindex = HGHEADERS.index(header) |
23412
94092019e839
mq: fix update of headers that occur in the "wrong" order
Mads Kiilerich <madski@unity3d.com>
parents:
23346
diff
changeset
|
237 bestpos = len(lines) |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
238 for i in range(start, len(lines)): |
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
239 line = lines[i] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
240 if not line.startswith(b'# '): |
23412
94092019e839
mq: fix update of headers that occur in the "wrong" order
Mads Kiilerich <madski@unity3d.com>
parents:
23346
diff
changeset
|
241 bestpos = min(bestpos, i) |
94092019e839
mq: fix update of headers that occur in the "wrong" order
Mads Kiilerich <madski@unity3d.com>
parents:
23346
diff
changeset
|
242 break |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
243 for lineindex, h in enumerate(HGHEADERS): |
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
244 if line.startswith(h): |
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
245 if lineindex == newindex: |
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
246 lines[i] = header + value |
23412
94092019e839
mq: fix update of headers that occur in the "wrong" order
Mads Kiilerich <madski@unity3d.com>
parents:
23346
diff
changeset
|
247 return lines |
94092019e839
mq: fix update of headers that occur in the "wrong" order
Mads Kiilerich <madski@unity3d.com>
parents:
23346
diff
changeset
|
248 if lineindex > newindex: |
94092019e839
mq: fix update of headers that occur in the "wrong" order
Mads Kiilerich <madski@unity3d.com>
parents:
23346
diff
changeset
|
249 bestpos = min(bestpos, i) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
250 break # next line |
23412
94092019e839
mq: fix update of headers that occur in the "wrong" order
Mads Kiilerich <madski@unity3d.com>
parents:
23346
diff
changeset
|
251 lines.insert(bestpos, header + value) |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
252 return lines |
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
22545
diff
changeset
|
253 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
254 |
23345
83cbf556babf
mq: introduce insertplainheader - same naive implementation as before
Mads Kiilerich <madski@unity3d.com>
parents:
23344
diff
changeset
|
255 def insertplainheader(lines, header, value): |
23442
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
256 """For lines containing a plain patch header, add a header line with value. |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
257 >>> insertplainheader([], b'Date', b'z') |
23442
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
258 ['Date: z'] |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
259 >>> insertplainheader([b''], b'Date', b'z') |
23442
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
260 ['Date: z', ''] |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
261 >>> insertplainheader([b'x'], b'Date', b'z') |
23442
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
262 ['Date: z', '', 'x'] |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
263 >>> insertplainheader([b'From: y', b'x'], b'Date', b'z') |
23442
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
264 ['From: y', 'Date: z', '', 'x'] |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
265 >>> insertplainheader([b' date : x', b' from : y', b''], b'From', b'z') |
23442
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
266 [' date : x', 'From: z', ''] |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
267 >>> insertplainheader([b'', b'Date: y'], b'Date', b'z') |
23442
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
268 ['Date: z', '', 'Date: y'] |
34131
0fa781320203
doctest: bulk-replace string literals with b'' for Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34120
diff
changeset
|
269 >>> insertplainheader([b'foo: bar', b'DATE: z', b'x'], b'From', b'y') |
23442
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
270 ['From: y', 'foo: bar', 'DATE: z', '', 'x'] |
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
271 """ |
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
272 newprio = PLAINHEADERS[header.lower()] |
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
273 bestpos = len(lines) |
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
274 for i, line in enumerate(lines): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
275 if b':' in line: |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
276 lheader = line.split(b':', 1)[0].strip().lower() |
23442
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
277 lprio = PLAINHEADERS.get(lheader, newprio + 1) |
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
278 if lprio == newprio: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
279 lines[i] = b'%s: %s' % (header, value) |
23442
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
280 return lines |
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
281 if lprio > newprio and i < bestpos: |
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
282 bestpos = i |
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
283 else: |
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
284 if line: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
285 lines.insert(i, b'') |
23442
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
286 if i < bestpos: |
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
287 bestpos = i |
a5c94ea3b8af
mq: smarter handling of plain headers
Mads Kiilerich <madski@unity3d.com>
parents:
23412
diff
changeset
|
288 break |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
289 lines.insert(bestpos, b'%s: %s' % (header, value)) |
23345
83cbf556babf
mq: introduce insertplainheader - same naive implementation as before
Mads Kiilerich <madski@unity3d.com>
parents:
23344
diff
changeset
|
290 return lines |
83cbf556babf
mq: introduce insertplainheader - same naive implementation as before
Mads Kiilerich <madski@unity3d.com>
parents:
23344
diff
changeset
|
291 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
292 |
48946
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48913
diff
changeset
|
293 class patchheader: |
10397
8cb81d75730c
mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents:
10382
diff
changeset
|
294 def __init__(self, pf, plainmode=False): |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
295 def eatdiff(lines): |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
296 while lines: |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
297 l = lines[-1] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
298 if ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
299 l.startswith(b"diff -") |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
300 or l.startswith(b"Index:") |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
301 or l.startswith(b"===========") |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
302 ): |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
303 del lines[-1] |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
304 else: |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
305 break |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
306 |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
307 def eatempty(lines): |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
308 while lines: |
10688
d4d3a8a65248
mq: don't use regexp when not necessary
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10687
diff
changeset
|
309 if not lines[-1].strip(): |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
310 del lines[-1] |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
311 else: |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
312 break |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
313 |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
314 message = [] |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
315 comments = [] |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
316 user = None |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
317 date = None |
10397
8cb81d75730c
mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents:
10382
diff
changeset
|
318 parent = None |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
319 format = None |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
320 subject = None |
13229
f3058dd05281
mq: record more data in patchheader class (no behavior changes)
Steve Borho <steve@borho.org>
parents:
13228
diff
changeset
|
321 branch = None |
f3058dd05281
mq: record more data in patchheader class (no behavior changes)
Steve Borho <steve@borho.org>
parents:
13228
diff
changeset
|
322 nodeid = None |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
323 diffstart = 0 |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
324 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
325 for line in open(pf, b'rb'): |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
326 line = line.rstrip() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
327 if line.startswith(b'diff --git') or ( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
328 diffstart and line.startswith(b'+++ ') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
329 ): |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
330 diffstart = 2 |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
331 break |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
332 diffstart = 0 # reset |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
333 if line.startswith(b"--- "): |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
334 diffstart = 1 |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
335 continue |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
336 elif format == b"hgpatch": |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
337 # parse values when importing the result of an hg export |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
338 if line.startswith(b"# User "): |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
339 user = line[7:] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
340 elif line.startswith(b"# Date "): |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
341 date = line[7:] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
342 elif line.startswith(b"# Parent "): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
343 parent = line[9:].lstrip() # handle double trailing space |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
344 elif line.startswith(b"# Branch "): |
13229
f3058dd05281
mq: record more data in patchheader class (no behavior changes)
Steve Borho <steve@borho.org>
parents:
13228
diff
changeset
|
345 branch = line[9:] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
346 elif line.startswith(b"# Node ID "): |
13229
f3058dd05281
mq: record more data in patchheader class (no behavior changes)
Steve Borho <steve@borho.org>
parents:
13228
diff
changeset
|
347 nodeid = line[10:] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
348 elif not line.startswith(b"# ") and line: |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
349 message.append(line) |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
350 format = None |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
351 elif line == b'# HG changeset patch': |
9287
53fdf18fd63b
mq: Parse commit message after we find start of changeset patch
David Soria Parra <dsp@php.net>
parents:
8948
diff
changeset
|
352 message = [] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
353 format = b"hgpatch" |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
354 elif format != b"tagdone" and ( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
355 line.startswith(b"Subject: ") or line.startswith(b"subject: ") |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
356 ): |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
357 subject = line[9:] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
358 format = b"tag" |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
359 elif format != b"tagdone" and ( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
360 line.startswith(b"From: ") or line.startswith(b"from: ") |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
361 ): |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
362 user = line[6:] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
363 format = b"tag" |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
364 elif format != b"tagdone" and ( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
365 line.startswith(b"Date: ") or line.startswith(b"date: ") |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
366 ): |
10397
8cb81d75730c
mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents:
10382
diff
changeset
|
367 date = line[6:] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
368 format = b"tag" |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
369 elif format == b"tag" and line == b"": |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
370 # when looking for tags (subject: from: etc) they |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
371 # end once you find a blank line in the source |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
372 format = b"tagdone" |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
373 elif message or line: |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
374 message.append(line) |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
375 comments.append(line) |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
376 |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
377 eatdiff(message) |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
378 eatdiff(comments) |
13229
f3058dd05281
mq: record more data in patchheader class (no behavior changes)
Steve Borho <steve@borho.org>
parents:
13228
diff
changeset
|
379 # Remember the exact starting line of the patch diffs before consuming |
f3058dd05281
mq: record more data in patchheader class (no behavior changes)
Steve Borho <steve@borho.org>
parents:
13228
diff
changeset
|
380 # empty lines, for external use by TortoiseHg and others |
f3058dd05281
mq: record more data in patchheader class (no behavior changes)
Steve Borho <steve@borho.org>
parents:
13228
diff
changeset
|
381 self.diffstartline = len(comments) |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
382 eatempty(message) |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
383 eatempty(comments) |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
384 |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
385 # make sure message isn't empty |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
386 if format and format.startswith(b"tag") and subject: |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
387 message.insert(0, subject) |
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
388 |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
389 self.message = message |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
390 self.comments = comments |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
391 self.user = user |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
392 self.date = date |
10397
8cb81d75730c
mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents:
10382
diff
changeset
|
393 self.parent = parent |
13229
f3058dd05281
mq: record more data in patchheader class (no behavior changes)
Steve Borho <steve@borho.org>
parents:
13228
diff
changeset
|
394 # nodeid and branch are for external use by TortoiseHg and others |
f3058dd05281
mq: record more data in patchheader class (no behavior changes)
Steve Borho <steve@borho.org>
parents:
13228
diff
changeset
|
395 self.nodeid = nodeid |
f3058dd05281
mq: record more data in patchheader class (no behavior changes)
Steve Borho <steve@borho.org>
parents:
13228
diff
changeset
|
396 self.branch = branch |
8653
aa011d123f71
mq: initializing patchheader class directly from patch content
Cédric Duval <cedricduval@free.fr>
parents:
8632
diff
changeset
|
397 self.haspatch = diffstart > 1 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
398 self.plainmode = ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
399 plainmode |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
400 or b'# HG changeset patch' not in self.comments |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
401 and any( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
402 c.startswith(b'Date: ') or c.startswith(b'From: ') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
403 for c in self.comments |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
404 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
405 ) |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
406 |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
407 def setuser(self, user): |
23443
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
408 try: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
409 inserthgheader(self.comments, b'# User ', user) |
23443
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
410 except ValueError: |
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
411 if self.plainmode: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
412 insertplainheader(self.comments, b'From', user) |
23443
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
413 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
414 tmp = [b'# HG changeset patch', b'# User ' + user] |
23443
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
415 self.comments = tmp + self.comments |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
416 self.user = user |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
417 |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
418 def setdate(self, date): |
23443
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
419 try: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
420 inserthgheader(self.comments, b'# Date ', date) |
23443
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
421 except ValueError: |
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
422 if self.plainmode: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
423 insertplainheader(self.comments, b'Date', date) |
23443
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
424 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
425 tmp = [b'# HG changeset patch', b'# Date ' + date] |
23443
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
426 self.comments = tmp + self.comments |
9337
2b1260436f83
mq: add the date with qrefresh, even if missing (issue1768)
Yann E. MORIN <yann.morin.1998@anciens.enib.fr>
parents:
9336
diff
changeset
|
427 self.date = date |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
428 |
10397
8cb81d75730c
mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents:
10382
diff
changeset
|
429 def setparent(self, parent): |
23443
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
430 try: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
431 inserthgheader(self.comments, b'# Parent ', parent) |
23443
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
432 except ValueError: |
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
433 if not self.plainmode: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
434 tmp = [b'# HG changeset patch', b'# Parent ' + parent] |
23443
3b653c2fd6ba
mq: drop updateheader - inserthgheader and insertplainheader is enough
Mads Kiilerich <madski@unity3d.com>
parents:
23442
diff
changeset
|
435 self.comments = tmp + self.comments |
10397
8cb81d75730c
mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents:
10382
diff
changeset
|
436 self.parent = parent |
8cb81d75730c
mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents:
10382
diff
changeset
|
437 |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
438 def setmessage(self, message): |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
439 if self.comments: |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
440 self._delmsg() |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
441 self.message = [message] |
23344
6333412245ec
mq: when setting message in plain mode, separate it from header (issue4453)
Mads Kiilerich <madski@unity3d.com>
parents:
23128
diff
changeset
|
442 if message: |
6333412245ec
mq: when setting message in plain mode, separate it from header (issue4453)
Mads Kiilerich <madski@unity3d.com>
parents:
23128
diff
changeset
|
443 if self.plainmode and self.comments and self.comments[-1]: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
444 self.comments.append(b'') |
23344
6333412245ec
mq: when setting message in plain mode, separate it from header (issue4453)
Mads Kiilerich <madski@unity3d.com>
parents:
23128
diff
changeset
|
445 self.comments.append(message) |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
446 |
35916
d41e41d11574
py3: add __bytes__() for mq.patchheader and make sure __str__ returns str
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35888
diff
changeset
|
447 def __bytes__(self): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
448 s = b'\n'.join(self.comments).rstrip() |
22522
382c2be610dc
mq: simplify patchheader handling of the empty line before the diff
Mads Kiilerich <madski@unity3d.com>
parents:
22521
diff
changeset
|
449 if not s: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
450 return b'' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
451 return s + b'\n\n' |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
452 |
35916
d41e41d11574
py3: add __bytes__() for mq.patchheader and make sure __str__ returns str
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35888
diff
changeset
|
453 __str__ = encoding.strmethod(__bytes__) |
d41e41d11574
py3: add __bytes__() for mq.patchheader and make sure __str__ returns str
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35888
diff
changeset
|
454 |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
455 def _delmsg(self): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
456 """Remove existing message, keeping the rest of the comments fields. |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
457 If comments contains 'subject: ', message will prepend |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
458 the field and a blank line.""" |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
459 if self.message: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
460 subj = b'subject: ' + self.message[0].lower() |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
461 for i in range(len(self.comments)): |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
462 if subj == self.comments[i].lower(): |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
463 del self.comments[i] |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
464 self.message = self.message[2:] |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
465 break |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
466 ci = 0 |
8632
9e055cfdd620
replace "i in range(len(xs))" with "i, x in enumerate(xs)"
Martin Geisler <mg@lazybytes.net>
parents:
8624
diff
changeset
|
467 for mi in self.message: |
9e055cfdd620
replace "i in range(len(xs))" with "i, x in enumerate(xs)"
Martin Geisler <mg@lazybytes.net>
parents:
8624
diff
changeset
|
468 while mi != self.comments[ci]: |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
469 ci += 1 |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
470 del self.comments[ci] |
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
471 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
472 |
16102 | 473 def newcommit(repo, phase, *args, **kwargs): |
16057
db4b0532dbf2
mq: rename secretcommit to newcommit
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16048
diff
changeset
|
474 """helper dedicated to ensure a commit respect mq.secret setting |
db4b0532dbf2
mq: rename secretcommit to newcommit
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16048
diff
changeset
|
475 |
db4b0532dbf2
mq: rename secretcommit to newcommit
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16048
diff
changeset
|
476 It should be used instead of repo.commit inside the mq source for operation |
db4b0532dbf2
mq: rename secretcommit to newcommit
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16048
diff
changeset
|
477 creating new changeset. |
15926
f94513971767
mq: have mq create secret changeset only
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15924
diff
changeset
|
478 """ |
18010
38b51a60a195
clfilter: ensure that mq performs commits on unfiltered repos
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
17954
diff
changeset
|
479 repo = repo.unfiltered() |
16100
24df9338aa01
mq: ensure all mq commits are made with secretcommit()
Patrick Mezard <patrick@mezard.eu>
parents:
16064
diff
changeset
|
480 if phase is None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
481 if repo.ui.configbool(b'mq', b'secret'): |
16100
24df9338aa01
mq: ensure all mq commits are made with secretcommit()
Patrick Mezard <patrick@mezard.eu>
parents:
16064
diff
changeset
|
482 phase = phases.secret |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
483 overrides = {(b'ui', b'allowemptycommit'): True} |
16100
24df9338aa01
mq: ensure all mq commits are made with secretcommit()
Patrick Mezard <patrick@mezard.eu>
parents:
16064
diff
changeset
|
484 if phase is not None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
485 overrides[(b'phases', b'new-commit')] = phase |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
486 with repo.ui.configoverride(overrides, b'mq'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
487 repo.ui.setconfig(b'ui', b'allowemptycommit', True) |
15926
f94513971767
mq: have mq create secret changeset only
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15924
diff
changeset
|
488 return repo.commit(*args, **kwargs) |
f94513971767
mq: have mq create secret changeset only
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15924
diff
changeset
|
489 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
490 |
16654
490ed8972f1b
mq: introduce qpush --check
Patrick Mezard <patrick@mezard.eu>
parents:
16653
diff
changeset
|
491 class AbortNoCleanup(error.Abort): |
490ed8972f1b
mq: introduce qpush --check
Patrick Mezard <patrick@mezard.eu>
parents:
16653
diff
changeset
|
492 pass |
490ed8972f1b
mq: introduce qpush --check
Patrick Mezard <patrick@mezard.eu>
parents:
16653
diff
changeset
|
493 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
494 |
48946
642e31cb55f0
py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48913
diff
changeset
|
495 class queue: |
19064
743daa601445
mq: do not inherit settings form base repo in mqrepo (Fixes issue2358)
Simon Heimberg <simohe@besonet.ch>
parents:
18958
diff
changeset
|
496 def __init__(self, ui, baseui, path, patchdir=None): |
1808 | 497 self.basepath = path |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
498 try: |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
499 with open(os.path.join(path, b'patches.queue'), 'rb') as fh: |
36107
bff95b002e33
py3: open patches.queue in binary mode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36106
diff
changeset
|
500 cur = fh.read().rstrip() |
bff95b002e33
py3: open patches.queue in binary mode
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36106
diff
changeset
|
501 |
11270
457813cb3024
mq: fix naming issues for qqueue directories
Henrik Stuart <hg@hstuart.dk>
parents:
11234
diff
changeset
|
502 if not cur: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
503 curpath = os.path.join(path, b'patches') |
11270
457813cb3024
mq: fix naming issues for qqueue directories
Henrik Stuart <hg@hstuart.dk>
parents:
11234
diff
changeset
|
504 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
505 curpath = os.path.join(path, b'patches-' + cur) |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
506 except IOError: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
507 curpath = os.path.join(path, b'patches') |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
508 self.path = patchdir or curpath |
31243
816bc3b35bac
vfs: use 'vfs' module directly in 'hgext.mq'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31216
diff
changeset
|
509 self.opener = vfsmod.vfs(self.path) |
1808 | 510 self.ui = ui |
19064
743daa601445
mq: do not inherit settings form base repo in mqrepo (Fixes issue2358)
Simon Heimberg <simohe@besonet.ch>
parents:
18958
diff
changeset
|
511 self.baseui = baseui |
15879
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
512 self.applieddirty = False |
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
513 self.seriesdirty = False |
11462
1b82a26635d7
mq: qimport cleanup on fail (issue2214)
Vishakh H <vsh426@gmail.com>
parents:
11439
diff
changeset
|
514 self.added = [] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
515 self.seriespath = b"series" |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
516 self.statuspath = b"status" |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
517 self.guardspath = b"guards" |
14590
dbb80f03d4ae
mq: rename active_guards to activeguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14589
diff
changeset
|
518 self.activeguards = None |
14591
b49099712d30
mq: rename guards_dirty to guardsdirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14590
diff
changeset
|
519 self.guardsdirty = False |
10190
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
520 # Handle mq.git as a bool with extended values |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
521 gitmode = ui.config(b'mq', b'git').lower() |
37084
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
36668
diff
changeset
|
522 boolmode = stringutil.parsebool(gitmode) |
34181
62490b84ebf8
configitems: register the 'mq.git' config
Boris Feld <boris.feld@octobus.net>
parents:
34138
diff
changeset
|
523 if boolmode is not None: |
62490b84ebf8
configitems: register the 'mq.git' config
Boris Feld <boris.feld@octobus.net>
parents:
34138
diff
changeset
|
524 if boolmode: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
525 gitmode = b'yes' |
24306
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
526 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
527 gitmode = b'no' |
34181
62490b84ebf8
configitems: register the 'mq.git' config
Boris Feld <boris.feld@octobus.net>
parents:
34138
diff
changeset
|
528 self.gitmode = gitmode |
25827
0fdf2c304019
mq: tweak config reading to make check-config happy
Matt Mackall <mpm@selenic.com>
parents:
25660
diff
changeset
|
529 # deprecated config: mq.plain |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
530 self.plainmode = ui.configbool(b'mq', b'plain') |
19856
28b1b7b9b4a9
shelve: allow shelving of a change with an mq patch applied
David Soria Parra <dsp@experimentalworks.net>
parents:
19826
diff
changeset
|
531 self.checkapplied = True |
1810
7596611ab3d5
Whitespace, tab and formatting cleanups, mainly in mq.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1808
diff
changeset
|
532 |
8524
21c87b299a04
mq: only read files when needed
Simon Heimberg <simohe@besonet.ch>
parents:
8484
diff
changeset
|
533 @util.propertycache |
21c87b299a04
mq: only read files when needed
Simon Heimberg <simohe@besonet.ch>
parents:
8484
diff
changeset
|
534 def applied(self): |
15258
fe9677449331
mq: eliminate explicit checks for file existence
Idan Kamara <idankk86@gmail.com>
parents:
15257
diff
changeset
|
535 def parselines(lines): |
fe9677449331
mq: eliminate explicit checks for file existence
Idan Kamara <idankk86@gmail.com>
parents:
15257
diff
changeset
|
536 for l in lines: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
537 entry = l.split(b':', 1) |
15258
fe9677449331
mq: eliminate explicit checks for file existence
Idan Kamara <idankk86@gmail.com>
parents:
15257
diff
changeset
|
538 if len(entry) > 1: |
fe9677449331
mq: eliminate explicit checks for file existence
Idan Kamara <idankk86@gmail.com>
parents:
15257
diff
changeset
|
539 n, name = entry |
fe9677449331
mq: eliminate explicit checks for file existence
Idan Kamara <idankk86@gmail.com>
parents:
15257
diff
changeset
|
540 yield statusentry(bin(n), name) |
fe9677449331
mq: eliminate explicit checks for file existence
Idan Kamara <idankk86@gmail.com>
parents:
15257
diff
changeset
|
541 elif l.strip(): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
542 self.ui.warn( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
543 _(b'malformated mq status line: %s\n') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
544 % stringutil.pprint(entry) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
545 ) |
15258
fe9677449331
mq: eliminate explicit checks for file existence
Idan Kamara <idankk86@gmail.com>
parents:
15257
diff
changeset
|
546 # else we ignore empty lines |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
547 |
15258
fe9677449331
mq: eliminate explicit checks for file existence
Idan Kamara <idankk86@gmail.com>
parents:
15257
diff
changeset
|
548 try: |
14588
bd3d75a03f80
mq: rename status_path to statuspath
Adrian Buehlmann <adrian@cadifra.com>
parents:
14587
diff
changeset
|
549 lines = self.opener.read(self.statuspath).splitlines() |
13507
375ba42f3cda
mq: gracefully handle malformated status file
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
13409
diff
changeset
|
550 return list(parselines(lines)) |
49306
2e726c934fcd
py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de>
parents:
49305
diff
changeset
|
551 except FileNotFoundError: |
2e726c934fcd
py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de>
parents:
49305
diff
changeset
|
552 return [] |
8524
21c87b299a04
mq: only read files when needed
Simon Heimberg <simohe@besonet.ch>
parents:
8484
diff
changeset
|
553 |
21c87b299a04
mq: only read files when needed
Simon Heimberg <simohe@besonet.ch>
parents:
8484
diff
changeset
|
554 @util.propertycache |
14572
8ff2957c1d82
mq: rename full_series to fullseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14564
diff
changeset
|
555 def fullseries(self): |
15258
fe9677449331
mq: eliminate explicit checks for file existence
Idan Kamara <idankk86@gmail.com>
parents:
15257
diff
changeset
|
556 try: |
15878 | 557 return self.opener.read(self.seriespath).splitlines() |
49306
2e726c934fcd
py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de>
parents:
49305
diff
changeset
|
558 except FileNotFoundError: |
2e726c934fcd
py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de>
parents:
49305
diff
changeset
|
559 return [] |
8524
21c87b299a04
mq: only read files when needed
Simon Heimberg <simohe@besonet.ch>
parents:
8484
diff
changeset
|
560 |
21c87b299a04
mq: only read files when needed
Simon Heimberg <simohe@besonet.ch>
parents:
8484
diff
changeset
|
561 @util.propertycache |
21c87b299a04
mq: only read files when needed
Simon Heimberg <simohe@besonet.ch>
parents:
8484
diff
changeset
|
562 def series(self): |
14575
845c864200d0
mq: rename parse_series to parseseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14574
diff
changeset
|
563 self.parseseries() |
8524
21c87b299a04
mq: only read files when needed
Simon Heimberg <simohe@besonet.ch>
parents:
8484
diff
changeset
|
564 return self.series |
21c87b299a04
mq: only read files when needed
Simon Heimberg <simohe@besonet.ch>
parents:
8484
diff
changeset
|
565 |
21c87b299a04
mq: only read files when needed
Simon Heimberg <simohe@besonet.ch>
parents:
8484
diff
changeset
|
566 @util.propertycache |
14573
d590ff1f22b2
mq: rename series_guards to seriesguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14572
diff
changeset
|
567 def seriesguards(self): |
14575
845c864200d0
mq: rename parse_series to parseseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14574
diff
changeset
|
568 self.parseseries() |
14573
d590ff1f22b2
mq: rename series_guards to seriesguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14572
diff
changeset
|
569 return self.seriesguards |
1808 | 570 |
8525
b169ba60eebe
mq: new method invalidate
Simon Heimberg <simohe@besonet.ch>
parents:
8524
diff
changeset
|
571 def invalidate(self): |
43421
be384a2052aa
py3: don't use bytes with vars() or __dict__
Martin von Zweigbergk <martinvonz@google.com>
parents:
43117
diff
changeset
|
572 for a in 'applied fullseries series seriesguards'.split(): |
8525
b169ba60eebe
mq: new method invalidate
Simon Heimberg <simohe@besonet.ch>
parents:
8524
diff
changeset
|
573 if a in self.__dict__: |
b169ba60eebe
mq: new method invalidate
Simon Heimberg <simohe@besonet.ch>
parents:
8524
diff
changeset
|
574 delattr(self, a) |
15879
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
575 self.applieddirty = False |
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
576 self.seriesdirty = False |
14591
b49099712d30
mq: rename guards_dirty to guardsdirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14590
diff
changeset
|
577 self.guardsdirty = False |
14590
dbb80f03d4ae
mq: rename active_guards to activeguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14589
diff
changeset
|
578 self.activeguards = None |
8525
b169ba60eebe
mq: new method invalidate
Simon Heimberg <simohe@besonet.ch>
parents:
8524
diff
changeset
|
579 |
34090
987a85c42b08
mq: create non-lossy patches, also with custom global diff configuration
Mads Kiilerich <mads@kiilerich.com>
parents:
33489
diff
changeset
|
580 def diffopts(self, opts=None, patchfn=None, plain=False): |
987a85c42b08
mq: create non-lossy patches, also with custom global diff configuration
Mads Kiilerich <mads@kiilerich.com>
parents:
33489
diff
changeset
|
581 """Return diff options tweaked for this mq use, possibly upgrading to |
987a85c42b08
mq: create non-lossy patches, also with custom global diff configuration
Mads Kiilerich <mads@kiilerich.com>
parents:
33489
diff
changeset
|
582 git format, and possibly plain and without lossy options.""" |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
583 diffopts = patchmod.difffeatureopts( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
584 self.ui, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
585 opts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
586 git=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
587 whitespace=not plain, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
588 formatchanging=not plain, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
589 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
590 if self.gitmode == b'auto': |
10190
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
591 diffopts.upgrade = True |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
592 elif self.gitmode == b'keep': |
10190
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
593 pass |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
594 elif self.gitmode in (b'yes', b'no'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
595 diffopts.git = self.gitmode == b'yes' |
10190
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
596 else: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
597 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
598 _(b'mq.git option can be auto/keep/yes/no got %s') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
599 % self.gitmode |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
600 ) |
10184
8a47347d298b
mq: stop caching and sharing diff options
Patrick Mezard <pmezard@gmail.com>
parents:
10114
diff
changeset
|
601 if patchfn: |
10185
7637fe4f525d
mq: preserve --git flag when merging patches
Patrick Mezard <pmezard@gmail.com>
parents:
10184
diff
changeset
|
602 diffopts = self.patchopts(diffopts, patchfn) |
7637fe4f525d
mq: preserve --git flag when merging patches
Patrick Mezard <pmezard@gmail.com>
parents:
10184
diff
changeset
|
603 return diffopts |
7637fe4f525d
mq: preserve --git flag when merging patches
Patrick Mezard <pmezard@gmail.com>
parents:
10184
diff
changeset
|
604 |
10186
296a0b14a686
mq: preserve --git flag when folding patches
Patrick Mezard <pmezard@gmail.com>
parents:
10185
diff
changeset
|
605 def patchopts(self, diffopts, *patches): |
10185
7637fe4f525d
mq: preserve --git flag when merging patches
Patrick Mezard <pmezard@gmail.com>
parents:
10184
diff
changeset
|
606 """Return a copy of input diff options with git set to true if |
10190
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
607 referenced patch is a git patch and should be preserved as such. |
10185
7637fe4f525d
mq: preserve --git flag when merging patches
Patrick Mezard <pmezard@gmail.com>
parents:
10184
diff
changeset
|
608 """ |
7637fe4f525d
mq: preserve --git flag when merging patches
Patrick Mezard <pmezard@gmail.com>
parents:
10184
diff
changeset
|
609 diffopts = diffopts.copy() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
610 if not diffopts.git and self.gitmode == b'keep': |
10190
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
611 for patchfn in patches: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
612 patchf = self.opener(patchfn, b'r') |
10190
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
613 # if the patch was a git patch, refresh it as a git patch |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
614 diffopts.git = any( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
615 line.startswith(b'diff --git') for line in patchf |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
616 ) |
10190
9c2c94934f0d
mq: upgrade to git patch when necessary (issue767)
Patrick Mezard <pmezard@gmail.com>
parents:
10188
diff
changeset
|
617 patchf.close() |
10184
8a47347d298b
mq: stop caching and sharing diff options
Patrick Mezard <pmezard@gmail.com>
parents:
10114
diff
changeset
|
618 return diffopts |
2874
4ec58b157265
refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2873
diff
changeset
|
619 |
2819 | 620 def join(self, *p): |
621 return os.path.join(self.path, *p) | |
622 | |
14574
12fba7bcb4f1
mq: rename find_series to findseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14573
diff
changeset
|
623 def findseries(self, patch): |
10685
10248fc845db
mq: find_series() simplify and don't use regexps
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10684
diff
changeset
|
624 def matchpatch(l): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
625 l = l.split(b'#', 1)[0] |
10685
10248fc845db
mq: find_series() simplify and don't use regexps
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10684
diff
changeset
|
626 return l.strip() == patch |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
627 |
14572
8ff2957c1d82
mq: rename full_series to fullseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14564
diff
changeset
|
628 for index, l in enumerate(self.fullseries): |
10685
10248fc845db
mq: find_series() simplify and don't use regexps
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10684
diff
changeset
|
629 if matchpatch(l): |
10248fc845db
mq: find_series() simplify and don't use regexps
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10684
diff
changeset
|
630 return index |
1808 | 631 return None |
632 | |
35145
25c543944bc0
py3: add b'' to regular expressions which are raw strings
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34918
diff
changeset
|
633 guard_re = re.compile(br'\s?#([-+][^-+# \t\r\n\f][^# \t\r\n\f]*)') |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
634 |
14575
845c864200d0
mq: rename parse_series to parseseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14574
diff
changeset
|
635 def parseseries(self): |
1808 | 636 self.series = [] |
14573
d590ff1f22b2
mq: rename series_guards to seriesguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14572
diff
changeset
|
637 self.seriesguards = [] |
14572
8ff2957c1d82
mq: rename full_series to fullseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14564
diff
changeset
|
638 for l in self.fullseries: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
639 h = l.find(b'#') |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
640 if h == -1: |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
641 patch = l |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
642 comment = b'' |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
643 elif h == 0: |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
644 continue |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
645 else: |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
646 patch = l[:h] |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
647 comment = l[h:] |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
648 patch = patch.strip() |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
649 if patch: |
3184
87b7ae306d54
mq: bail out if a patch appears more than once in the series file.
Brendan Cully <brendan@kublai.com>
parents:
3183
diff
changeset
|
650 if patch in self.series: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
651 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
652 _(b'%s appears more than once in %s') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
653 % (patch, self.join(self.seriespath)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
654 ) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
655 self.series.append(patch) |
14573
d590ff1f22b2
mq: rename series_guards to seriesguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14572
diff
changeset
|
656 self.seriesguards.append(self.guard_re.findall(comment)) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
657 |
14576
668ea374f46e
mq: rename check_guard to checkguard
Adrian Buehlmann <adrian@cadifra.com>
parents:
14575
diff
changeset
|
658 def checkguard(self, guard): |
6607
75b506f0e571
mq: make qselect fail properly on an empty guard
Patrick Mezard <pmezard@gmail.com>
parents:
6606
diff
changeset
|
659 if not guard: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
660 return _(b'guard cannot be an empty string') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
661 bad_chars = b'# \t\r\n\f' |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
662 first = guard[0] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
663 if first in b'-+': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
664 return _(b'guard %r starts with invalid character: %r') % ( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
665 guard, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
666 first, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
667 ) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
668 for c in bad_chars: |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
669 if c in guard: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
670 return _(b'invalid character in guard %r: %r') % (guard, c) |
3223
53e843840349
Whitespace/Tab cleanup
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3186
diff
changeset
|
671 |
14578
28a2646f3b81
mq: rename set_active to setactive
Adrian Buehlmann <adrian@cadifra.com>
parents:
14577
diff
changeset
|
672 def setactive(self, guards): |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
673 for guard in guards: |
14576
668ea374f46e
mq: rename check_guard to checkguard
Adrian Buehlmann <adrian@cadifra.com>
parents:
14575
diff
changeset
|
674 bad = self.checkguard(guard) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
675 if bad: |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26578
diff
changeset
|
676 raise error.Abort(bad) |
8209
a1a5a57efe90
replace util.sort with sorted built-in
Matt Mackall <mpm@selenic.com>
parents:
8188
diff
changeset
|
677 guards = sorted(set(guards)) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
678 self.ui.debug(b'active guards: %s\n' % b' '.join(guards)) |
14590
dbb80f03d4ae
mq: rename active_guards to activeguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14589
diff
changeset
|
679 self.activeguards = guards |
14591
b49099712d30
mq: rename guards_dirty to guardsdirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14590
diff
changeset
|
680 self.guardsdirty = True |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
681 |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
682 def active(self): |
14590
dbb80f03d4ae
mq: rename active_guards to activeguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14589
diff
changeset
|
683 if self.activeguards is None: |
dbb80f03d4ae
mq: rename active_guards to activeguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14589
diff
changeset
|
684 self.activeguards = [] |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
685 try: |
14589
7d59ee9e711b
mq: rename guards_path to guardspath
Adrian Buehlmann <adrian@cadifra.com>
parents:
14588
diff
changeset
|
686 guards = self.opener.read(self.guardspath).split() |
49306
2e726c934fcd
py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de>
parents:
49305
diff
changeset
|
687 except FileNotFoundError: |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
688 guards = [] |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
689 for i, guard in enumerate(guards): |
14576
668ea374f46e
mq: rename check_guard to checkguard
Adrian Buehlmann <adrian@cadifra.com>
parents:
14575
diff
changeset
|
690 bad = self.checkguard(guard) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
691 if bad: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
692 self.ui.warn( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
693 b'%s:%d: %s\n' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
694 % (self.join(self.guardspath), i + 1, bad) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
695 ) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
696 else: |
14590
dbb80f03d4ae
mq: rename active_guards to activeguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14589
diff
changeset
|
697 self.activeguards.append(guard) |
dbb80f03d4ae
mq: rename active_guards to activeguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14589
diff
changeset
|
698 return self.activeguards |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
699 |
14577
76357276662e
mq: rename set_guards to setguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14576
diff
changeset
|
700 def setguards(self, idx, guards): |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
701 for g in guards: |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
702 if len(g) < 2: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
703 raise error.Abort(_(b'guard %r too short') % g) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
704 if g[0] not in b'-+': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
705 raise error.Abort(_(b'guard %r starts with invalid char') % g) |
14576
668ea374f46e
mq: rename check_guard to checkguard
Adrian Buehlmann <adrian@cadifra.com>
parents:
14575
diff
changeset
|
706 bad = self.checkguard(g[1:]) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
707 if bad: |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26578
diff
changeset
|
708 raise error.Abort(bad) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
709 drop = self.guard_re.sub(b'', self.fullseries[idx]) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
710 self.fullseries[idx] = drop + b''.join([b' #' + g for g in guards]) |
14575
845c864200d0
mq: rename parse_series to parseseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14574
diff
changeset
|
711 self.parseseries() |
14593
599a72895c0d
mq: rename series_dirty to seriesdirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14592
diff
changeset
|
712 self.seriesdirty = True |
3223
53e843840349
Whitespace/Tab cleanup
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3186
diff
changeset
|
713 |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
714 def pushable(self, idx): |
36106
c33a99506e13
py3: compare against bytes instead of str
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36032
diff
changeset
|
715 if isinstance(idx, bytes): |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
716 idx = self.series.index(idx) |
14573
d590ff1f22b2
mq: rename series_guards to seriesguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14572
diff
changeset
|
717 patchguards = self.seriesguards[idx] |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
718 if not patchguards: |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
719 return True, None |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
720 guards = self.active() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
721 exactneg = [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
722 g for g in patchguards if g.startswith(b'-') and g[1:] in guards |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
723 ] |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
724 if exactneg: |
39049
b53ec524420b
mq: use stringutil.pprint instead of pycompat.byterepr
Augie Fackler <augie@google.com>
parents:
38783
diff
changeset
|
725 return False, stringutil.pprint(exactneg[0]) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
726 pos = [g for g in patchguards if g.startswith(b'+')] |
2850
851b07ec450c
mq: apply patch is any posative guard matches
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2848
diff
changeset
|
727 exactpos = [g for g in pos if g[1:] in guards] |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
728 if pos: |
2850
851b07ec450c
mq: apply patch is any posative guard matches
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2848
diff
changeset
|
729 if exactpos: |
39049
b53ec524420b
mq: use stringutil.pprint instead of pycompat.byterepr
Augie Fackler <augie@google.com>
parents:
38783
diff
changeset
|
730 return True, stringutil.pprint(exactpos[0]) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
731 return False, b' '.join([stringutil.pprint(p) for p in pos]) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
732 return True, b'' |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
733 |
14579
f7b25764d974
mq: rename explain_pushable to explainpushable
Adrian Buehlmann <adrian@cadifra.com>
parents:
14578
diff
changeset
|
734 def explainpushable(self, idx, all_patches=False): |
24306
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
735 if all_patches: |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
736 write = self.ui.write |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
737 else: |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
738 write = self.ui.warn |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
739 |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
740 if all_patches or self.ui.verbose: |
37521
2d00058ac2f8
py3: use bytes instead of str in isinstance()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37520
diff
changeset
|
741 if isinstance(idx, bytes): |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
742 idx = self.series.index(idx) |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
743 pushable, why = self.pushable(idx) |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
744 if all_patches and pushable: |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
745 if why is None: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
746 write( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
747 _(b'allowing %s - no guards in effect\n') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
748 % self.series[idx] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
749 ) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
750 else: |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
751 if not why: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
752 write( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
753 _(b'allowing %s - no matching negative guards\n') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
754 % self.series[idx] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
755 ) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
756 else: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
757 write( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
758 _(b'allowing %s - guarded by %s\n') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
759 % (self.series[idx], why) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
760 ) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
761 if not pushable: |
2829
05316bb57d01
mq: make guards more strict, add tests
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2828
diff
changeset
|
762 if why: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
763 write( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
764 _(b'skipping %s - guarded by %s\n') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
765 % (self.series[idx], why) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
766 ) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
767 else: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
768 write( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
769 _(b'skipping %s - no matching guards\n') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
770 % self.series[idx] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
771 ) |
1810
7596611ab3d5
Whitespace, tab and formatting cleanups, mainly in mq.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1808
diff
changeset
|
772 |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
773 def savedirty(self): |
14594
3752b5e1f4c4
mq: rename write_list to writelist
Adrian Buehlmann <adrian@cadifra.com>
parents:
14593
diff
changeset
|
774 def writelist(items, path): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
775 fp = self.opener(path, b'wb') |
2772
4720e79486d3
mq: simplify save_dirty
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2771
diff
changeset
|
776 for i in items: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
777 fp.write(b"%s\n" % i) |
2772
4720e79486d3
mq: simplify save_dirty
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2771
diff
changeset
|
778 fp.close() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
779 |
14592
fc94add69d9f
mq: rename applied_dirty to applieddirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14591
diff
changeset
|
780 if self.applieddirty: |
35844
522f868680ca
mq: use bytes() instead of str() to encode statusentries for writing
Augie Fackler <augie@google.com>
parents:
35843
diff
changeset
|
781 writelist(map(bytes, self.applied), self.statuspath) |
15883
91d99f02b26f
mq: only save dirty files once when savedirty is called multiple times
Mads Kiilerich <mads@kiilerich.com>
parents:
15882
diff
changeset
|
782 self.applieddirty = False |
14593
599a72895c0d
mq: rename series_dirty to seriesdirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14592
diff
changeset
|
783 if self.seriesdirty: |
14594
3752b5e1f4c4
mq: rename write_list to writelist
Adrian Buehlmann <adrian@cadifra.com>
parents:
14593
diff
changeset
|
784 writelist(self.fullseries, self.seriespath) |
15883
91d99f02b26f
mq: only save dirty files once when savedirty is called multiple times
Mads Kiilerich <mads@kiilerich.com>
parents:
15882
diff
changeset
|
785 self.seriesdirty = False |
14591
b49099712d30
mq: rename guards_dirty to guardsdirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14590
diff
changeset
|
786 if self.guardsdirty: |
14594
3752b5e1f4c4
mq: rename write_list to writelist
Adrian Buehlmann <adrian@cadifra.com>
parents:
14593
diff
changeset
|
787 writelist(self.activeguards, self.guardspath) |
15883
91d99f02b26f
mq: only save dirty files once when savedirty is called multiple times
Mads Kiilerich <mads@kiilerich.com>
parents:
15882
diff
changeset
|
788 self.guardsdirty = False |
11546
134eb1c97e94
mq: qrepo.add(mq.added) inside save_dirty inside of doing it manually
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11530
diff
changeset
|
789 if self.added: |
134eb1c97e94
mq: qrepo.add(mq.added) inside save_dirty inside of doing it manually
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11530
diff
changeset
|
790 qrepo = self.qrepo() |
134eb1c97e94
mq: qrepo.add(mq.added) inside save_dirty inside of doing it manually
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11530
diff
changeset
|
791 if qrepo: |
50047
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
792 with qrepo.wlock(), qrepo.dirstate.changing_files(qrepo): |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
793 qrepo[None].add( |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
794 f for f in self.added if f not in qrepo[None] |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
795 ) |
11546
134eb1c97e94
mq: qrepo.add(mq.added) inside save_dirty inside of doing it manually
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11530
diff
changeset
|
796 self.added = [] |
1808 | 797 |
4207
b7e66db28571
Remove undo log after mq operations that rollback would break
Brendan Cully <brendan@kublai.com>
parents:
4206
diff
changeset
|
798 def removeundo(self, repo): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
799 undo = repo.sjoin(b'undo') |
4207
b7e66db28571
Remove undo log after mq operations that rollback would break
Brendan Cully <brendan@kublai.com>
parents:
4206
diff
changeset
|
800 if not os.path.exists(undo): |
b7e66db28571
Remove undo log after mq operations that rollback would break
Brendan Cully <brendan@kublai.com>
parents:
4206
diff
changeset
|
801 return |
b7e66db28571
Remove undo log after mq operations that rollback would break
Brendan Cully <brendan@kublai.com>
parents:
4206
diff
changeset
|
802 try: |
b7e66db28571
Remove undo log after mq operations that rollback would break
Brendan Cully <brendan@kublai.com>
parents:
4206
diff
changeset
|
803 os.unlink(undo) |
25660
328739ea70c3
global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25469
diff
changeset
|
804 except OSError as inst: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
805 self.ui.warn( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
806 _(b'error removing undo: %s\n') % stringutil.forcebytestr(inst) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
807 ) |
4207
b7e66db28571
Remove undo log after mq operations that rollback would break
Brendan Cully <brendan@kublai.com>
parents:
4206
diff
changeset
|
808 |
16634
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
809 def backup(self, repo, files, copy=False): |
16633
b2ca2f40c9c1
mq: backup local changes in qpop --force (issue3433)
Patrick Mezard <patrick@mezard.eu>
parents:
16551
diff
changeset
|
810 # backup local changes in --force case |
b2ca2f40c9c1
mq: backup local changes in qpop --force (issue3433)
Patrick Mezard <patrick@mezard.eu>
parents:
16551
diff
changeset
|
811 for f in sorted(files): |
b2ca2f40c9c1
mq: backup local changes in qpop --force (issue3433)
Patrick Mezard <patrick@mezard.eu>
parents:
16551
diff
changeset
|
812 absf = repo.wjoin(f) |
b2ca2f40c9c1
mq: backup local changes in qpop --force (issue3433)
Patrick Mezard <patrick@mezard.eu>
parents:
16551
diff
changeset
|
813 if os.path.lexists(absf): |
41599
106b0bec162a
mq: migrate to scmutil.backuppath()
Martin von Zweigbergk <martinvonz@google.com>
parents:
41592
diff
changeset
|
814 absorig = scmutil.backuppath(self.ui, repo, f) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
815 self.ui.note( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
816 _(b'saving current version of %s as %s\n') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
817 % (f, os.path.relpath(absorig)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
818 ) |
41592
e67a85e0f19e
mq: always show relative path to .orig backup
Martin von Zweigbergk <martinvonz@google.com>
parents:
41532
diff
changeset
|
819 |
16634
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
820 if copy: |
26943
263edb591b72
mq: let the user choose where .orig files are kept
Christian Delahousse <cdelahousse@fb.com>
parents:
26831
diff
changeset
|
821 util.copyfile(absf, absorig) |
16634
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
822 else: |
26943
263edb591b72
mq: let the user choose where .orig files are kept
Christian Delahousse <cdelahousse@fb.com>
parents:
26831
diff
changeset
|
823 util.rename(absf, absorig) |
16633
b2ca2f40c9c1
mq: backup local changes in qpop --force (issue3433)
Patrick Mezard <patrick@mezard.eu>
parents:
16551
diff
changeset
|
824 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
825 def printdiff( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
826 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
827 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
828 diffopts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
829 node1, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
830 node2=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
831 files=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
832 fp=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
833 changes=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
834 opts=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
835 ): |
31432
6e1c79578e5c
mq: explicitly tests for None
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31407
diff
changeset
|
836 if opts is None: |
6e1c79578e5c
mq: explicitly tests for None
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31407
diff
changeset
|
837 opts = {} |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
838 stat = opts.get(b'stat') |
14671
35c2cc322ba8
scmutil: switch match users to supplying contexts
Matt Mackall <mpm@selenic.com>
parents:
14636
diff
changeset
|
839 m = scmutil.match(repo[node1], files, opts) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
840 logcmdutil.diffordiffstat( |
44823
3b7aabd02e11
cleanup: avoid extra node/ctx conversions in logcmdutil.diffordiffstat
Augie Fackler <augie@google.com>
parents:
44452
diff
changeset
|
841 self.ui, |
3b7aabd02e11
cleanup: avoid extra node/ctx conversions in logcmdutil.diffordiffstat
Augie Fackler <augie@google.com>
parents:
44452
diff
changeset
|
842 repo, |
3b7aabd02e11
cleanup: avoid extra node/ctx conversions in logcmdutil.diffordiffstat
Augie Fackler <augie@google.com>
parents:
44452
diff
changeset
|
843 diffopts, |
3b7aabd02e11
cleanup: avoid extra node/ctx conversions in logcmdutil.diffordiffstat
Augie Fackler <augie@google.com>
parents:
44452
diff
changeset
|
844 repo[node1], |
3b7aabd02e11
cleanup: avoid extra node/ctx conversions in logcmdutil.diffordiffstat
Augie Fackler <augie@google.com>
parents:
44452
diff
changeset
|
845 repo[node2], |
3b7aabd02e11
cleanup: avoid extra node/ctx conversions in logcmdutil.diffordiffstat
Augie Fackler <augie@google.com>
parents:
44452
diff
changeset
|
846 m, |
3b7aabd02e11
cleanup: avoid extra node/ctx conversions in logcmdutil.diffordiffstat
Augie Fackler <augie@google.com>
parents:
44452
diff
changeset
|
847 changes, |
3b7aabd02e11
cleanup: avoid extra node/ctx conversions in logcmdutil.diffordiffstat
Augie Fackler <augie@google.com>
parents:
44452
diff
changeset
|
848 stat, |
3b7aabd02e11
cleanup: avoid extra node/ctx conversions in logcmdutil.diffordiffstat
Augie Fackler <augie@google.com>
parents:
44452
diff
changeset
|
849 fp, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
850 ) |
2874
4ec58b157265
refactor text diff/patch code.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2873
diff
changeset
|
851 |
10184
8a47347d298b
mq: stop caching and sharing diff options
Patrick Mezard <pmezard@gmail.com>
parents:
10114
diff
changeset
|
852 def mergeone(self, repo, mergeq, head, patch, rev, diffopts): |
1808 | 853 # first try just applying the patch |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
854 (err, n) = self.apply( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
855 repo, [patch], update_status=False, strict=True, merge=rev |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
856 ) |
1808 | 857 |
858 if err == 0: | |
859 return (err, n) | |
860 | |
861 if n is None: | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
862 raise error.Abort(_(b"apply failed for patch %s") % patch) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
863 |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
864 self.ui.warn(_(b"patch didn't work out, merging %s\n") % patch) |
1808 | 865 |
866 # apply failed, strip away that rev and merge. | |
4917
126f527b3ba3
Make repo locks recursive, eliminate all passing of lock/wlock
Matt Mackall <mpm@selenic.com>
parents:
4915
diff
changeset
|
867 hg.clean(repo, head) |
22057
445472225ccd
strip: remove -b/--backup codepaths
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22049
diff
changeset
|
868 strip(self.ui, repo, [n], update=False, backup=False) |
1808 | 869 |
6747
f6c00b17387c
use repo[changeid] to get a changectx
Matt Mackall <mpm@selenic.com>
parents:
6668
diff
changeset
|
870 ctx = repo[rev] |
44435
4152183acedd
mq: don't tell user to commit merge that we already committed
Martin von Zweigbergk <martinvonz@google.com>
parents:
44434
diff
changeset
|
871 ret = hg.merge(ctx, remind=False) |
1808 | 872 if ret: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
873 raise error.Abort(_(b"update returned %d") % ret) |
16102 | 874 n = newcommit(repo, None, ctx.description(), ctx.user(), force=True) |
8527
f9a80054dd3c
use 'x is None' instead of 'x == None'
Martin Geisler <mg@lazybytes.net>
parents:
8525
diff
changeset
|
875 if n is None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
876 raise error.Abort(_(b"repo commit failed")) |
1808 | 877 try: |
10397
8cb81d75730c
mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents:
10382
diff
changeset
|
878 ph = patchheader(mergeq.join(patch), self.plainmode) |
16689
f366d4c2ff34
cleanup: replace naked excepts with except Exception: ...
Brodie Rao <brodie@sf.io>
parents:
16688
diff
changeset
|
879 except Exception: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
880 raise error.Abort(_(b"unable to read %s") % patch) |
1808 | 881 |
10185
7637fe4f525d
mq: preserve --git flag when merging patches
Patrick Mezard <pmezard@gmail.com>
parents:
10184
diff
changeset
|
882 diffopts = self.patchopts(diffopts, patch) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
883 patchf = self.opener(patch, b"w") |
36667
bcfc4e3b6548
py3: use bytes() instead of str()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36632
diff
changeset
|
884 comments = bytes(ph) |
1808 | 885 if comments: |
886 patchf.write(comments) | |
10184
8a47347d298b
mq: stop caching and sharing diff options
Patrick Mezard <pmezard@gmail.com>
parents:
10114
diff
changeset
|
887 self.printdiff(repo, diffopts, head, n, fp=patchf) |
1808 | 888 patchf.close() |
4207
b7e66db28571
Remove undo log after mq operations that rollback would break
Brendan Cully <brendan@kublai.com>
parents:
4206
diff
changeset
|
889 self.removeundo(repo) |
1808 | 890 return (0, n) |
1810
7596611ab3d5
Whitespace, tab and formatting cleanups, mainly in mq.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1808
diff
changeset
|
891 |
1808 | 892 def qparents(self, repo, rev=None): |
19816
d5ec50e8604b
mq: document repo.mq.qparents
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19815
diff
changeset
|
893 """return the mq handled parent or p1 |
d5ec50e8604b
mq: document repo.mq.qparents
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19815
diff
changeset
|
894 |
d5ec50e8604b
mq: document repo.mq.qparents
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19815
diff
changeset
|
895 In some case where mq get himself in being the parent of a merge the |
19951
d51c4d85ec23
spelling: random spell checker fixes
Mads Kiilerich <madski@unity3d.com>
parents:
19916
diff
changeset
|
896 appropriate parent may be p2. |
19816
d5ec50e8604b
mq: document repo.mq.qparents
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19815
diff
changeset
|
897 (eg: an in progress merge started with mq disabled) |
d5ec50e8604b
mq: document repo.mq.qparents
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19815
diff
changeset
|
898 |
d5ec50e8604b
mq: document repo.mq.qparents
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19815
diff
changeset
|
899 If no parent are managed by mq, p1 is returned. |
d5ec50e8604b
mq: document repo.mq.qparents
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19815
diff
changeset
|
900 """ |
1808 | 901 if rev is None: |
902 (p1, p2) = repo.dirstate.parents() | |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46935
diff
changeset
|
903 if p2 == repo.nullid: |
1808 | 904 return p1 |
10686
0c68c2c36ed8
mq: don't use len(list) unless necessary
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10685
diff
changeset
|
905 if not self.applied: |
1808 | 906 return None |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
907 return self.applied[-1].node |
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
908 p1, p2 = repo.changelog.parents(rev) |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46935
diff
changeset
|
909 if p2 != repo.nullid and p2 in [x.node for x in self.applied]: |
10680
45eb9b5dacf6
mq: simplify qparents calculation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10679
diff
changeset
|
910 return p2 |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
911 return p1 |
1808 | 912 |
10184
8a47347d298b
mq: stop caching and sharing diff options
Patrick Mezard <pmezard@gmail.com>
parents:
10114
diff
changeset
|
913 def mergepatch(self, repo, mergeq, series, diffopts): |
10686
0c68c2c36ed8
mq: don't use len(list) unless necessary
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10685
diff
changeset
|
914 if not self.applied: |
1808 | 915 # each of the patches merged in will have two parents. This |
916 # can confuse the qrefresh, qdiff, and strip code because it | |
917 # needs to know which parent is actually in the patch queue. | |
918 # so, we insert a merge marker with only one parent. This way | |
919 # the first patch in the queue is never a merge patch | |
920 # | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
921 pname = b".hg.patches.merge.marker" |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
922 n = newcommit(repo, None, b'[mq]: merge marker', force=True) |
4207
b7e66db28571
Remove undo log after mq operations that rollback would break
Brendan Cully <brendan@kublai.com>
parents:
4206
diff
changeset
|
923 self.removeundo(repo) |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
924 self.applied.append(statusentry(n, pname)) |
15879
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
925 self.applieddirty = True |
1808 | 926 |
927 head = self.qparents(repo) | |
928 | |
929 for patch in series: | |
2696 | 930 patch = mergeq.lookup(patch, strict=True) |
1808 | 931 if not patch: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
932 self.ui.warn(_(b"patch %s does not exist\n") % patch) |
1808 | 933 return (1, None) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
934 pushable, reason = self.pushable(patch) |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
935 if not pushable: |
14579
f7b25764d974
mq: rename explain_pushable to explainpushable
Adrian Buehlmann <adrian@cadifra.com>
parents:
14578
diff
changeset
|
936 self.explainpushable(patch, all_patches=True) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
937 continue |
1808 | 938 info = mergeq.isapplied(patch) |
939 if not info: | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
940 self.ui.warn(_(b"patch %s is not applied\n") % patch) |
1808 | 941 return (1, None) |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
942 rev = info[1] |
10184
8a47347d298b
mq: stop caching and sharing diff options
Patrick Mezard <pmezard@gmail.com>
parents:
10114
diff
changeset
|
943 err, head = self.mergeone(repo, mergeq, head, patch, rev, diffopts) |
1808 | 944 if head: |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
945 self.applied.append(statusentry(head, patch)) |
15879
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
946 self.applieddirty = True |
1808 | 947 if err: |
948 return (err, head) | |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
949 self.savedirty() |
1808 | 950 return (0, head) |
951 | |
2748
752b9475a700
New mq command qfold: Merge patches into the current patch.
Brendan Cully <brendan@kublai.com>
parents:
2747
diff
changeset
|
952 def patch(self, repo, patchfile): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
953 """Apply patchfile to the working directory. |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
954 patchfile: name of patch file""" |
14564
65f4512e40e4
patch: turn patch() touched files dict into a set
Patrick Mezard <pmezard@gmail.com>
parents:
14553
diff
changeset
|
955 files = set() |
2748
752b9475a700
New mq command qfold: Merge patches into the current patch.
Brendan Cully <brendan@kublai.com>
parents:
2747
diff
changeset
|
956 try: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
957 fuzz = patchmod.patch( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
958 self.ui, repo, patchfile, strip=1, files=files, eolmode=None |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
959 ) |
14260
00a881581400
patch: make patch()/internalpatch() always update the dirstate
Patrick Mezard <pmezard@gmail.com>
parents:
14259
diff
changeset
|
960 return (True, list(files), fuzz) |
25660
328739ea70c3
global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25469
diff
changeset
|
961 except Exception as inst: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
962 self.ui.note(stringutil.forcebytestr(inst) + b'\n') |
2919
b70740aefa4d
Unify mq and hg patch invocation.
Brendan Cully <brendan@kublai.com>
parents:
2905
diff
changeset
|
963 if not self.ui.verbose: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
964 self.ui.warn(_(b"patch failed, unable to continue (try -v)\n")) |
15085
110d6804bfc6
mq: don't suppress patch tracebacks when applying patches
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
15057
diff
changeset
|
965 self.ui.traceback() |
14260
00a881581400
patch: make patch()/internalpatch() always update the dirstate
Patrick Mezard <pmezard@gmail.com>
parents:
14259
diff
changeset
|
966 return (False, list(files), False) |
2796
4c39568007f9
mq: codingstyle
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2795
diff
changeset
|
967 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
968 def apply( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
969 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
970 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
971 series, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
972 list=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
973 update_status=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
974 strict=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
975 patchdir=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
976 merge=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
977 all_files=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
978 tobackup=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
979 keepchanges=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
980 ): |
26578
8bd2759f1fa7
dirstate: remove meaningless dirstateguard
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
26345
diff
changeset
|
981 wlock = lock = tr = None |
4418
0532491f7476
MQ: tidy up if a qpush is interrupted.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4406
diff
changeset
|
982 try: |
4917
126f527b3ba3
Make repo locks recursive, eliminate all passing of lock/wlock
Matt Mackall <mpm@selenic.com>
parents:
4915
diff
changeset
|
983 wlock = repo.wlock() |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
984 lock = repo.lock() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
985 tr = repo.transaction(b"qpush") |
4418
0532491f7476
MQ: tidy up if a qpush is interrupted.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4406
diff
changeset
|
986 try: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
987 ret = self._apply( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
988 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
989 series, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
990 list, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
991 update_status, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
992 strict, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
993 patchdir, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
994 merge, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
995 all_files=all_files, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
996 tobackup=tobackup, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
997 keepchanges=keepchanges, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
998 ) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
999 tr.close() |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
1000 self.savedirty() |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1001 return ret |
16654
490ed8972f1b
mq: introduce qpush --check
Patrick Mezard <patrick@mezard.eu>
parents:
16653
diff
changeset
|
1002 except AbortNoCleanup: |
490ed8972f1b
mq: introduce qpush --check
Patrick Mezard <patrick@mezard.eu>
parents:
16653
diff
changeset
|
1003 tr.close() |
490ed8972f1b
mq: introduce qpush --check
Patrick Mezard <patrick@mezard.eu>
parents:
16653
diff
changeset
|
1004 self.savedirty() |
24826
9b02b678888e
mq: avoid silent failure when single patch doesn't apply (issue4604)
Matt Mackall <mpm@selenic.com>
parents:
24365
diff
changeset
|
1005 raise |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1006 except: # re-raises |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1007 try: |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1008 tr.abort() |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1009 finally: |
15881
3862369cf9b9
mq: use .invalidate to cancel dirty mq state when cancelling transaction
Mads Kiilerich <mads@kiilerich.com>
parents:
15880
diff
changeset
|
1010 self.invalidate() |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1011 raise |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1012 finally: |
26578
8bd2759f1fa7
dirstate: remove meaningless dirstateguard
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
26345
diff
changeset
|
1013 release(tr, lock, wlock) |
5527
0b3f910dfd17
mq: really remove undo after a qpush (and after a strip)
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5432
diff
changeset
|
1014 self.removeundo(repo) |
4418
0532491f7476
MQ: tidy up if a qpush is interrupted.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4406
diff
changeset
|
1015 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1016 def _apply( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1017 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1018 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1019 series, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1020 list=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1021 update_status=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1022 strict=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1023 patchdir=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1024 merge=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1025 all_files=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1026 tobackup=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1027 keepchanges=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1028 ): |
16634
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
1029 """returns (error, hash) |
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
1030 |
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
1031 error = 1 for unable to read, 2 for patch failed, 3 for patch |
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
1032 fuzz. tobackup is None or a set of files to backup before they |
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
1033 are modified by a patch. |
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
1034 """ |
1808 | 1035 # TODO unify with commands.py |
1036 if not patchdir: | |
1037 patchdir = self.path | |
1038 err = 0 | |
1039 n = None | |
2934
2f190e998eb3
Teach mq about git patches
Brendan Cully <brendan@kublai.com>
parents:
2922
diff
changeset
|
1040 for patchname in series: |
2f190e998eb3
Teach mq about git patches
Brendan Cully <brendan@kublai.com>
parents:
2922
diff
changeset
|
1041 pushable, reason = self.pushable(patchname) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
1042 if not pushable: |
14579
f7b25764d974
mq: rename explain_pushable to explainpushable
Adrian Buehlmann <adrian@cadifra.com>
parents:
14578
diff
changeset
|
1043 self.explainpushable(patchname, all_patches=True) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
1044 continue |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1045 self.ui.status(_(b"applying %s\n") % patchname) |
2934
2f190e998eb3
Teach mq about git patches
Brendan Cully <brendan@kublai.com>
parents:
2922
diff
changeset
|
1046 pf = os.path.join(patchdir, patchname) |
1808 | 1047 |
1048 try: | |
10397
8cb81d75730c
mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents:
10382
diff
changeset
|
1049 ph = patchheader(self.join(patchname), self.plainmode) |
14239
967be4bb42a7
mq: loosen except clause when reading patch headers
Idan Kamara <idankk86@gmail.com>
parents:
14210
diff
changeset
|
1050 except IOError: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1051 self.ui.warn(_(b"unable to read %s\n") % patchname) |
1808 | 1052 err = 1 |
1053 break | |
1054 | |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
1055 message = ph.message |
1808 | 1056 if not message: |
12849
d966eb464888
mq: mark strings that should not be translated
Martin Geisler <mg@lazybytes.net>
parents:
12848
diff
changeset
|
1057 # The commit message should not be translated |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1058 message = b"imported patch %s\n" % patchname |
1808 | 1059 else: |
1060 if list: | |
12849
d966eb464888
mq: mark strings that should not be translated
Martin Geisler <mg@lazybytes.net>
parents:
12848
diff
changeset
|
1061 # The commit message should not be translated |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1062 message.append(b"\nimported patch %s" % patchname) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1063 message = b'\n'.join(message) |
1808 | 1064 |
7782
140429276b63
mq: handle empty patches more gracefully (issue1501)
Matt Mackall <mpm@selenic.com>
parents:
7772
diff
changeset
|
1065 if ph.haspatch: |
16634
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
1066 if tobackup: |
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
1067 touched = patchmod.changedfiles(self.ui, repo, pf) |
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
1068 touched = set(touched) & tobackup |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
1069 if touched and keepchanges: |
16654
490ed8972f1b
mq: introduce qpush --check
Patrick Mezard <patrick@mezard.eu>
parents:
16653
diff
changeset
|
1070 raise AbortNoCleanup( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1071 _(b"conflicting local changes found"), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1072 hint=_(b"did you forget to qrefresh?"), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1073 ) |
16634
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
1074 self.backup(repo, touched, copy=True) |
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
1075 tobackup = tobackup - touched |
7782
140429276b63
mq: handle empty patches more gracefully (issue1501)
Matt Mackall <mpm@selenic.com>
parents:
7772
diff
changeset
|
1076 (patcherr, files, fuzz) = self.patch(repo, pf) |
10661
c4859aad1980
mq: all_files can be a set, remove dangerous default values
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10611
diff
changeset
|
1077 if all_files is not None: |
c4859aad1980
mq: all_files can be a set, remove dangerous default values
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10611
diff
changeset
|
1078 all_files.update(files) |
7782
140429276b63
mq: handle empty patches more gracefully (issue1501)
Matt Mackall <mpm@selenic.com>
parents:
7772
diff
changeset
|
1079 patcherr = not patcherr |
140429276b63
mq: handle empty patches more gracefully (issue1501)
Matt Mackall <mpm@selenic.com>
parents:
7772
diff
changeset
|
1080 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1081 self.ui.warn(_(b"patch %s is empty\n") % patchname) |
7782
140429276b63
mq: handle empty patches more gracefully (issue1501)
Matt Mackall <mpm@selenic.com>
parents:
7772
diff
changeset
|
1082 patcherr, files, fuzz = 0, [], 0 |
1808 | 1083 |
2934
2f190e998eb3
Teach mq about git patches
Brendan Cully <brendan@kublai.com>
parents:
2922
diff
changeset
|
1084 if merge and files: |
4332
4e5e1638b165
mq: don't abort when merging a patch that removes files
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4242
diff
changeset
|
1085 # Mark as removed/merged and update dirstate parent info |
49961
7a8bfc05b691
dirstate: rename parentchange to changing_parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49960
diff
changeset
|
1086 with repo.dirstate.changing_parents(repo): |
47743
8c73818c67dd
mq: drop the use of `dirstate.merged`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47733
diff
changeset
|
1087 for f in files: |
47697
c9e412712e0c
mq: use `update_file_p1` instead of `remove` when adjusting dirstate
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47601
diff
changeset
|
1088 repo.dirstate.update_file_p1(f, p1_tracked=True) |
41399
5cb8158a61f7
cleanup: use p1() instead of parents() when we only need the first parent
Martin von Zweigbergk <martinvonz@google.com>
parents:
41373
diff
changeset
|
1089 p1 = repo.dirstate.p1() |
32347
f4aee989ebec
mq: migrate to context manager for changing dirstate parents
Augie Fackler <augie@google.com>
parents:
32337
diff
changeset
|
1090 repo.setparents(p1, merge) |
6603
41eb20cc1c02
match: remove files arg from repo.status and friends
Matt Mackall <mpm@selenic.com>
parents:
6602
diff
changeset
|
1091 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1092 if all_files and b'.hgsubstate' in all_files: |
20959
b6e0616d08cb
mq: repo['.'] is not a wctx, repo[None] is
Mads Kiilerich <madski@unity3d.com>
parents:
20924
diff
changeset
|
1093 wctx = repo[None] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1094 pctx = repo[b'.'] |
19638
20096384754f
mq: update subrepos when applying / unapplying patches that change .hgsubstate
Angel Ezquerra <angel.ezquerra@gmail.com>
parents:
19636
diff
changeset
|
1095 overwrite = False |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1096 mergedsubstate = subrepoutil.submerge( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1097 repo, pctx, wctx, wctx, overwrite |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1098 ) |
19638
20096384754f
mq: update subrepos when applying / unapplying patches that change .hgsubstate
Angel Ezquerra <angel.ezquerra@gmail.com>
parents:
19636
diff
changeset
|
1099 files += mergedsubstate.keys() |
20096384754f
mq: update subrepos when applying / unapplying patches that change .hgsubstate
Angel Ezquerra <angel.ezquerra@gmail.com>
parents:
19636
diff
changeset
|
1100 |
14322
a90131b85fd8
scmutil: drop aliases in cmdutil for match functions
Matt Mackall <mpm@selenic.com>
parents:
14319
diff
changeset
|
1101 match = scmutil.matchfiles(repo, files or []) |
39895
1a184b727aff
repo: don't look up context for tip node if it's not needed
Martin von Zweigbergk <martinvonz@google.com>
parents:
39818
diff
changeset
|
1102 oldtip = repo.changelog.tip() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1103 n = newcommit( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1104 repo, None, message, ph.user, ph.date, match=match, force=True |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1105 ) |
39895
1a184b727aff
repo: don't look up context for tip node if it's not needed
Martin von Zweigbergk <martinvonz@google.com>
parents:
39818
diff
changeset
|
1106 if repo.changelog.tip() == oldtip: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1107 raise error.Abort( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1108 _(b"qpush exactly duplicates child changeset") |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1109 ) |
8527
f9a80054dd3c
use 'x is None' instead of 'x == None'
Martin Geisler <mg@lazybytes.net>
parents:
8525
diff
changeset
|
1110 if n is None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1111 raise error.Abort(_(b"repository commit failed")) |
1808 | 1112 |
1113 if update_status: | |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
1114 self.applied.append(statusentry(n, patchname)) |
1808 | 1115 |
1116 if patcherr: | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1117 self.ui.warn( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
1118 _(b"patch failed, rejects left in working directory\n") |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1119 ) |
8875
801cacf46e62
mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8833
diff
changeset
|
1120 err = 2 |
1808 | 1121 break |
1122 | |
1123 if fuzz and strict: | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1124 self.ui.warn(_(b"fuzz found when applying patch, stopping\n")) |
8875
801cacf46e62
mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8833
diff
changeset
|
1125 err = 3 |
1808 | 1126 break |
1127 return (err, n) | |
1128 | |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1129 def _cleanup(self, patches, numrevs, keep=False): |
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1130 if not keep: |
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1131 r = self.qrepo() |
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1132 if r: |
50047
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
1133 with r.wlock(), r.dirstate.changing_files(r): |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
1134 r[None].forget(patches) |
14435
5f6090e559fa
context: make forget work like commands.forget
Matt Mackall <mpm@selenic.com>
parents:
14434
diff
changeset
|
1135 for p in patches: |
18067
6f62e005781d
mq: don't fail when removing a patch without patch file from series file
Mads Kiilerich <mads@kiilerich.com>
parents:
18054
diff
changeset
|
1136 try: |
6f62e005781d
mq: don't fail when removing a patch without patch file from series file
Mads Kiilerich <mads@kiilerich.com>
parents:
18054
diff
changeset
|
1137 os.unlink(self.join(p)) |
49306
2e726c934fcd
py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de>
parents:
49305
diff
changeset
|
1138 except FileNotFoundError: |
2e726c934fcd
py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de>
parents:
49305
diff
changeset
|
1139 pass |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1140 |
15920
885e0c71db9b
mq: turn changeset draft on qfinish (except if qparent is secret)
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15883
diff
changeset
|
1141 qfinished = [] |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1142 if numrevs: |
14010
d7b4d421b56c
mq: prevent traceback when qfinish patches not in series.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
13970
diff
changeset
|
1143 qfinished = self.applied[:numrevs] |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1144 del self.applied[:numrevs] |
15879
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
1145 self.applieddirty = True |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1146 |
14010
d7b4d421b56c
mq: prevent traceback when qfinish patches not in series.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
13970
diff
changeset
|
1147 unknown = [] |
d7b4d421b56c
mq: prevent traceback when qfinish patches not in series.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
13970
diff
changeset
|
1148 |
37525
a7de62adcf03
py3: workaround comparing NoneType and integers
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37522
diff
changeset
|
1149 sortedseries = [] |
a7de62adcf03
py3: workaround comparing NoneType and integers
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37522
diff
changeset
|
1150 for p in patches: |
a7de62adcf03
py3: workaround comparing NoneType and integers
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37522
diff
changeset
|
1151 idx = self.findseries(p) |
a7de62adcf03
py3: workaround comparing NoneType and integers
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37522
diff
changeset
|
1152 if idx is None: |
a7de62adcf03
py3: workaround comparing NoneType and integers
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37522
diff
changeset
|
1153 sortedseries.append((-1, p)) |
a7de62adcf03
py3: workaround comparing NoneType and integers
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37522
diff
changeset
|
1154 else: |
a7de62adcf03
py3: workaround comparing NoneType and integers
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37522
diff
changeset
|
1155 sortedseries.append((idx, p)) |
a7de62adcf03
py3: workaround comparing NoneType and integers
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37522
diff
changeset
|
1156 |
a7de62adcf03
py3: workaround comparing NoneType and integers
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37522
diff
changeset
|
1157 sortedseries.sort(reverse=True) |
50010
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
1158 for i, p in sortedseries: |
37525
a7de62adcf03
py3: workaround comparing NoneType and integers
Pulkit Goyal <7895pulkit@gmail.com>
parents:
37522
diff
changeset
|
1159 if i != -1: |
14572
8ff2957c1d82
mq: rename full_series to fullseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14564
diff
changeset
|
1160 del self.fullseries[i] |
14010
d7b4d421b56c
mq: prevent traceback when qfinish patches not in series.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
13970
diff
changeset
|
1161 else: |
d7b4d421b56c
mq: prevent traceback when qfinish patches not in series.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
13970
diff
changeset
|
1162 unknown.append(p) |
d7b4d421b56c
mq: prevent traceback when qfinish patches not in series.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
13970
diff
changeset
|
1163 |
d7b4d421b56c
mq: prevent traceback when qfinish patches not in series.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
13970
diff
changeset
|
1164 if unknown: |
d7b4d421b56c
mq: prevent traceback when qfinish patches not in series.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
13970
diff
changeset
|
1165 if numrevs: |
44452
9d2b2df2c2ba
cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com>
parents:
44435
diff
changeset
|
1166 rev = {entry.name: entry.node for entry in qfinished} |
14010
d7b4d421b56c
mq: prevent traceback when qfinish patches not in series.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
13970
diff
changeset
|
1167 for p in unknown: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1168 msg = _(b'revision %s refers to unknown patches: %s\n') |
14010
d7b4d421b56c
mq: prevent traceback when qfinish patches not in series.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
13970
diff
changeset
|
1169 self.ui.warn(msg % (short(rev[p]), p)) |
d7b4d421b56c
mq: prevent traceback when qfinish patches not in series.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
13970
diff
changeset
|
1170 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1171 msg = _(b'unknown patches: %s\n') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1172 raise error.Abort(b''.join(msg % p for p in unknown)) |
14010
d7b4d421b56c
mq: prevent traceback when qfinish patches not in series.
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
13970
diff
changeset
|
1173 |
14575
845c864200d0
mq: rename parse_series to parseseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14574
diff
changeset
|
1174 self.parseseries() |
15879
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
1175 self.seriesdirty = True |
15920
885e0c71db9b
mq: turn changeset draft on qfinish (except if qparent is secret)
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15883
diff
changeset
|
1176 return [entry.node for entry in qfinished] |
6645
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
1177 |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1178 def _revpatches(self, repo, revs): |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
1179 firstrev = repo[self.applied[0].node].rev() |
6645
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
1180 patches = [] |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1181 for i, rev in enumerate(revs): |
6645
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
1182 if rev < firstrev: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1183 raise error.Abort(_(b'revision %d is not managed') % rev) |
8832
6e6f5b80e056
mq: warn about finalizing patches without cset message
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8811
diff
changeset
|
1184 |
6e6f5b80e056
mq: warn about finalizing patches without cset message
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8811
diff
changeset
|
1185 ctx = repo[rev] |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
1186 base = self.applied[i].node |
8832
6e6f5b80e056
mq: warn about finalizing patches without cset message
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8811
diff
changeset
|
1187 if ctx.node() != base: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1188 msg = _(b'cannot delete revision %d above applied patches') |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26578
diff
changeset
|
1189 raise error.Abort(msg % rev) |
8832
6e6f5b80e056
mq: warn about finalizing patches without cset message
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8811
diff
changeset
|
1190 |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1191 patch = self.applied[i].name |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1192 for fmt in (b'[mq]: %s', b'imported patch %s'): |
8832
6e6f5b80e056
mq: warn about finalizing patches without cset message
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8811
diff
changeset
|
1193 if ctx.description() == fmt % patch: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1194 msg = _(b'patch %s finalized without changeset message\n') |
8832
6e6f5b80e056
mq: warn about finalizing patches without cset message
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8811
diff
changeset
|
1195 repo.ui.status(msg % patch) |
6e6f5b80e056
mq: warn about finalizing patches without cset message
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8811
diff
changeset
|
1196 break |
6e6f5b80e056
mq: warn about finalizing patches without cset message
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8811
diff
changeset
|
1197 |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1198 patches.append(patch) |
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1199 return patches |
6645
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
1200 |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1201 def finish(self, repo, revs): |
16029
ee1c8385e5b0
qfinish: do not set secret changeset to draft if mq.secret=false
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16028
diff
changeset
|
1202 # Manually trigger phase computation to ensure phasedefaults is |
ee1c8385e5b0
qfinish: do not set secret changeset to draft if mq.secret=false
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16028
diff
changeset
|
1203 # executed before we remove the patches. |
16657
b6081c2c4647
phases: introduce phasecache
Patrick Mezard <patrick@mezard.eu>
parents:
16656
diff
changeset
|
1204 repo._phasecache |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1205 patches = self._revpatches(repo, sorted(revs)) |
15920
885e0c71db9b
mq: turn changeset draft on qfinish (except if qparent is secret)
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15883
diff
changeset
|
1206 qfinished = self._cleanup(patches, len(patches)) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1207 if qfinished and repo.ui.configbool(b'mq', b'secret'): |
16029
ee1c8385e5b0
qfinish: do not set secret changeset to draft if mq.secret=false
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16028
diff
changeset
|
1208 # only use this logic when the secret option is added |
15920
885e0c71db9b
mq: turn changeset draft on qfinish (except if qparent is secret)
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15883
diff
changeset
|
1209 oldqbase = repo[qfinished[0]] |
34562
c2d2e18f9700
mq: use the newcommitphase utility
Boris Feld <boris.feld@octobus.net>
parents:
34505
diff
changeset
|
1210 tphase = phases.newcommitphase(repo.ui) |
16290
9518cb55c822
qfinish: comply with the phases.new-commit option in secret mode (issue3335)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
16278
diff
changeset
|
1211 if oldqbase.phase() > tphase and oldqbase.p1().phase() <= tphase: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1212 with repo.transaction(b'qfinish') as tr: |
22069
616a455b02ca
phase: add a transaction argument to advanceboundary
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22057
diff
changeset
|
1213 phases.advanceboundary(repo, tr, tphase, qfinished) |
6645
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
1214 |
3088
dc784839516d
mq: add qdelete --forget option
Brendan Cully <brendan@kublai.com>
parents:
3087
diff
changeset
|
1215 def delete(self, repo, patches, opts): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1216 if not patches and not opts.get(b'rev'): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1217 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
1218 _(b'qdelete requires at least one revision or patch name') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1219 ) |
4736
04b2c1e27c26
mq: require patch argument or revision for qdelete
Brendan Cully <brendan@kublai.com>
parents:
4730
diff
changeset
|
1220 |
11365
c3d7daa0928e
mq: make 'qdelete <patchidx>' work again.
Greg Ward <greg-hg@gerg.ca>
parents:
11327
diff
changeset
|
1221 realpatches = [] |
2905
790fd342b6c7
Allow qdel to delete multiple patches.
Brendan Cully <brendan@kublai.com>
parents:
2904
diff
changeset
|
1222 for patch in patches: |
790fd342b6c7
Allow qdel to delete multiple patches.
Brendan Cully <brendan@kublai.com>
parents:
2904
diff
changeset
|
1223 patch = self.lookup(patch, strict=True) |
790fd342b6c7
Allow qdel to delete multiple patches.
Brendan Cully <brendan@kublai.com>
parents:
2904
diff
changeset
|
1224 info = self.isapplied(patch) |
3373
9851f46d6ecc
mq: change qdel --forget to --rev; accept any revision symbol
Brendan Cully <brendan@kublai.com>
parents:
3243
diff
changeset
|
1225 if info: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1226 raise error.Abort(_(b"cannot delete applied patch %s") % patch) |
2905
790fd342b6c7
Allow qdel to delete multiple patches.
Brendan Cully <brendan@kublai.com>
parents:
2904
diff
changeset
|
1227 if patch not in self.series: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1228 raise error.Abort(_(b"patch %s not in series file") % patch) |
12655
5192b24f309c
mq: handle deleting the same patch twice in one command (issue2427)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12590
diff
changeset
|
1229 if patch not in realpatches: |
5192b24f309c
mq: handle deleting the same patch twice in one command (issue2427)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12590
diff
changeset
|
1230 realpatches.append(patch) |
3373
9851f46d6ecc
mq: change qdel --forget to --rev; accept any revision symbol
Brendan Cully <brendan@kublai.com>
parents:
3243
diff
changeset
|
1231 |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1232 numrevs = 0 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1233 if opts.get(b'rev'): |
3373
9851f46d6ecc
mq: change qdel --forget to --rev; accept any revision symbol
Brendan Cully <brendan@kublai.com>
parents:
3243
diff
changeset
|
1234 if not self.applied: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1235 raise error.Abort(_(b'no patches applied')) |
48116
5ced12cfa41b
errors: raise InputError on bad revset to revrange() iff provided by the user
Martin von Zweigbergk <martinvonz@google.com>
parents:
48092
diff
changeset
|
1236 revs = logcmdutil.revrange(repo, opts.get(b'rev')) |
22803
31a591c3fecc
mq: use `revs.sort()` to ensure the set is ascending
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22547
diff
changeset
|
1237 revs.sort() |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1238 revpatches = self._revpatches(repo, revs) |
11365
c3d7daa0928e
mq: make 'qdelete <patchidx>' work again.
Greg Ward <greg-hg@gerg.ca>
parents:
11327
diff
changeset
|
1239 realpatches += revpatches |
8833
14639c050251
mq: unify code for qdel -r and qfin
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8832
diff
changeset
|
1240 numrevs = len(revpatches) |
2905
790fd342b6c7
Allow qdel to delete multiple patches.
Brendan Cully <brendan@kublai.com>
parents:
2904
diff
changeset
|
1241 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1242 self._cleanup(realpatches, numrevs, opts.get(b'keep')) |
1810
7596611ab3d5
Whitespace, tab and formatting cleanups, mainly in mq.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1808
diff
changeset
|
1243 |
14581
da40ee1adc2b
mq: rename check_toppatch to checktoppatch
Adrian Buehlmann <adrian@cadifra.com>
parents:
14580
diff
changeset
|
1244 def checktoppatch(self, repo): |
18343
cfa731b45b75
mq: checktoppatch should only check if p1 is qtip
Mads Kiilerich <mads@kiilerich.com>
parents:
18342
diff
changeset
|
1245 '''check that working directory is at qtip''' |
10686
0c68c2c36ed8
mq: don't use len(list) unless necessary
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10685
diff
changeset
|
1246 if self.applied: |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
1247 top = self.applied[-1].node |
10191
99d285ac5da4
mq: qdiff with the same diff options than qrefresh (issue1350)
Patrick Mezard <pmezard@gmail.com>
parents:
10190
diff
changeset
|
1248 patch = self.applied[-1].name |
18343
cfa731b45b75
mq: checktoppatch should only check if p1 is qtip
Mads Kiilerich <mads@kiilerich.com>
parents:
18342
diff
changeset
|
1249 if repo.dirstate.p1() != top: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1250 raise error.Abort(_(b"working directory revision is not qtip")) |
10191
99d285ac5da4
mq: qdiff with the same diff options than qrefresh (issue1350)
Patrick Mezard <pmezard@gmail.com>
parents:
10190
diff
changeset
|
1251 return top, patch |
99d285ac5da4
mq: qdiff with the same diff options than qrefresh (issue1350)
Patrick Mezard <pmezard@gmail.com>
parents:
10190
diff
changeset
|
1252 return None, None |
99d285ac5da4
mq: qdiff with the same diff options than qrefresh (issue1350)
Patrick Mezard <pmezard@gmail.com>
parents:
10190
diff
changeset
|
1253 |
17152
f287d4a62031
mq: create patch file after commit to import diff of ".hgsubstate" at qrefresh
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17151
diff
changeset
|
1254 def putsubstate2changes(self, substatestate, changes): |
43640
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1255 if isinstance(changes, list): |
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1256 mar = changes[:3] |
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1257 else: |
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1258 mar = (changes.modified, changes.added, changes.removed) |
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1259 if any((b'.hgsubstate' in files for files in mar)): |
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1260 return # already listed up |
17152
f287d4a62031
mq: create patch file after commit to import diff of ".hgsubstate" at qrefresh
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17151
diff
changeset
|
1261 # not yet listed up |
48092
0dc9ced02a3b
dirstate-item: use item's property to deal with hgsubstate in mq
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48091
diff
changeset
|
1262 if substatestate.added or not substatestate.any_tracked: |
43640
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1263 mar[1].append(b'.hgsubstate') |
48092
0dc9ced02a3b
dirstate-item: use item's property to deal with hgsubstate in mq
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48091
diff
changeset
|
1264 elif substatestate.removed: |
43640
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1265 mar[2].append(b'.hgsubstate') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1266 else: # modified |
43640
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1267 mar[0].append(b'.hgsubstate') |
17152
f287d4a62031
mq: create patch file after commit to import diff of ".hgsubstate" at qrefresh
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17151
diff
changeset
|
1268 |
19812
5d6cfdc38a3d
mq: simplifies the refresh hint in checklocalchanges
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19763
diff
changeset
|
1269 def checklocalchanges(self, repo, force=False, refresh=True): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1270 excsuffix = b'' |
14256
d04ba50e104d
mq: allow to qpop/push with a dirty working copy (issue2780)
Idan Kamara <idankk86@gmail.com>
parents:
14241
diff
changeset
|
1271 if refresh: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1272 excsuffix = b', qrefresh first' |
19812
5d6cfdc38a3d
mq: simplifies the refresh hint in checklocalchanges
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19763
diff
changeset
|
1273 # plain versions for i18n tool to detect them |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1274 _(b"local changes found, qrefresh first") |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1275 _(b"local changed subrepos found, qrefresh first") |
42489
cf445a212b9c
mq: remove dependency on strip's checklocalchanges()
Martin von Zweigbergk <martinvonz@google.com>
parents:
42057
diff
changeset
|
1276 |
cf445a212b9c
mq: remove dependency on strip's checklocalchanges()
Martin von Zweigbergk <martinvonz@google.com>
parents:
42057
diff
changeset
|
1277 s = repo.status() |
cf445a212b9c
mq: remove dependency on strip's checklocalchanges()
Martin von Zweigbergk <martinvonz@google.com>
parents:
42057
diff
changeset
|
1278 if not force: |
42597
51e52a495214
mq: fix for merge detection methods
Taapas Agrawal <taapas2897@gmail.com>
parents:
42492
diff
changeset
|
1279 cmdutil.checkunfinished(repo) |
42489
cf445a212b9c
mq: remove dependency on strip's checklocalchanges()
Martin von Zweigbergk <martinvonz@google.com>
parents:
42057
diff
changeset
|
1280 if s.modified or s.added or s.removed or s.deleted: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1281 _(b"local changes found") # i18n tool detection |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1282 raise error.Abort(_(b"local changes found" + excsuffix)) |
42489
cf445a212b9c
mq: remove dependency on strip's checklocalchanges()
Martin von Zweigbergk <martinvonz@google.com>
parents:
42057
diff
changeset
|
1283 if checksubstate(repo): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1284 _(b"local changed subrepos found") # i18n tool detection |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1285 raise error.Abort( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1286 _(b"local changed subrepos found" + excsuffix) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1287 ) |
42597
51e52a495214
mq: fix for merge detection methods
Taapas Agrawal <taapas2897@gmail.com>
parents:
42492
diff
changeset
|
1288 else: |
51e52a495214
mq: fix for merge detection methods
Taapas Agrawal <taapas2897@gmail.com>
parents:
42492
diff
changeset
|
1289 cmdutil.checkunfinished(repo, skipmerge=True) |
42489
cf445a212b9c
mq: remove dependency on strip's checklocalchanges()
Martin von Zweigbergk <martinvonz@google.com>
parents:
42057
diff
changeset
|
1290 return s |
4713
c29ee52e0b68
mq: support qnew -I/-X and file name lists
Brendan Cully <brendan@kublai.com>
parents:
4712
diff
changeset
|
1291 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1292 _reserved = (b'series', b'status', b'guards', b'.', b'..') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1293 |
14584
3343a74eea4e
mq: rename check_reserved_name to checkreservedname
Adrian Buehlmann <adrian@cadifra.com>
parents:
14583
diff
changeset
|
1294 def checkreservedname(self, name): |
14054
3c616f512a5b
mq: be more explicit on invalid patch name message
Idan Kamara <idankk86@gmail.com>
parents:
14052
diff
changeset
|
1295 if name in self._reserved: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1296 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1297 _(b'"%s" cannot be used as the name of a patch') % name |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1298 ) |
31556
448acdee9161
mq: reject new patch name containing leading/trailing whitespace
Yuya Nishihara <yuya@tcha.org>
parents:
31460
diff
changeset
|
1299 if name != name.strip(): |
448acdee9161
mq: reject new patch name containing leading/trailing whitespace
Yuya Nishihara <yuya@tcha.org>
parents:
31460
diff
changeset
|
1300 # whitespace is stripped by parseseries() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1301 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
1302 _(b'patch name cannot begin or end with whitespace') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1303 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1304 for prefix in (b'.hg', b'.mq'): |
14054
3c616f512a5b
mq: be more explicit on invalid patch name message
Idan Kamara <idankk86@gmail.com>
parents:
14052
diff
changeset
|
1305 if name.startswith(prefix): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1306 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1307 _(b'patch name cannot begin with "%s"') % prefix |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1308 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1309 for c in (b'#', b':', b'\r', b'\n'): |
14054
3c616f512a5b
mq: be more explicit on invalid patch name message
Idan Kamara <idankk86@gmail.com>
parents:
14052
diff
changeset
|
1310 if c in name: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1311 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1312 _(b'%r cannot be used in the name of a patch') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1313 % pycompat.bytestr(c) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1314 ) |
14054
3c616f512a5b
mq: be more explicit on invalid patch name message
Idan Kamara <idankk86@gmail.com>
parents:
14052
diff
changeset
|
1315 |
14422
2e77525e52d9
mq: wrap patch file name checks in a function
Idan Kamara <idankk86@gmail.com>
parents:
14396
diff
changeset
|
1316 def checkpatchname(self, name, force=False): |
14584
3343a74eea4e
mq: rename check_reserved_name to checkreservedname
Adrian Buehlmann <adrian@cadifra.com>
parents:
14583
diff
changeset
|
1317 self.checkreservedname(name) |
14422
2e77525e52d9
mq: wrap patch file name checks in a function
Idan Kamara <idankk86@gmail.com>
parents:
14396
diff
changeset
|
1318 if not force and os.path.exists(self.join(name)): |
2e77525e52d9
mq: wrap patch file name checks in a function
Idan Kamara <idankk86@gmail.com>
parents:
14396
diff
changeset
|
1319 if os.path.isdir(self.join(name)): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1320 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1321 _(b'"%s" already exists as a directory') % name |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1322 ) |
14422
2e77525e52d9
mq: wrap patch file name checks in a function
Idan Kamara <idankk86@gmail.com>
parents:
14396
diff
changeset
|
1323 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1324 raise error.Abort(_(b'patch "%s" already exists') % name) |
5981
ca2af0c81c9a
mq: don't allow patches with some reserved names
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5980
diff
changeset
|
1325 |
27918
c7cd551f07d0
mq: refactor makepatchname into class method
Mads Kiilerich <madski@unity3d.com>
parents:
27865
diff
changeset
|
1326 def makepatchname(self, title, fallbackname): |
c7cd551f07d0
mq: refactor makepatchname into class method
Mads Kiilerich <madski@unity3d.com>
parents:
27865
diff
changeset
|
1327 """Return a suitable filename for title, adding a suffix to make |
c7cd551f07d0
mq: refactor makepatchname into class method
Mads Kiilerich <madski@unity3d.com>
parents:
27865
diff
changeset
|
1328 it unique in the existing list""" |
41532
bd3f03d8cc9f
global: use raw strings for regular expressions with escapes
Gregory Szorc <gregory.szorc@gmail.com>
parents:
41399
diff
changeset
|
1329 namebase = re.sub(br'[\s\W_]+', b'_', title.lower()).strip(b'_') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1330 namebase = namebase[:75] # avoid too long name (issue5117) |
27919
db24d6888896
mq: check for reserved patch name with qimport -r (issue5033)
Mads Kiilerich <madski@unity3d.com>
parents:
27918
diff
changeset
|
1331 if namebase: |
db24d6888896
mq: check for reserved patch name with qimport -r (issue5033)
Mads Kiilerich <madski@unity3d.com>
parents:
27918
diff
changeset
|
1332 try: |
db24d6888896
mq: check for reserved patch name with qimport -r (issue5033)
Mads Kiilerich <madski@unity3d.com>
parents:
27918
diff
changeset
|
1333 self.checkreservedname(namebase) |
db24d6888896
mq: check for reserved patch name with qimport -r (issue5033)
Mads Kiilerich <madski@unity3d.com>
parents:
27918
diff
changeset
|
1334 except error.Abort: |
db24d6888896
mq: check for reserved patch name with qimport -r (issue5033)
Mads Kiilerich <madski@unity3d.com>
parents:
27918
diff
changeset
|
1335 namebase = fallbackname |
db24d6888896
mq: check for reserved patch name with qimport -r (issue5033)
Mads Kiilerich <madski@unity3d.com>
parents:
27918
diff
changeset
|
1336 else: |
27918
c7cd551f07d0
mq: refactor makepatchname into class method
Mads Kiilerich <madski@unity3d.com>
parents:
27865
diff
changeset
|
1337 namebase = fallbackname |
c7cd551f07d0
mq: refactor makepatchname into class method
Mads Kiilerich <madski@unity3d.com>
parents:
27865
diff
changeset
|
1338 name = namebase |
c7cd551f07d0
mq: refactor makepatchname into class method
Mads Kiilerich <madski@unity3d.com>
parents:
27865
diff
changeset
|
1339 i = 0 |
27919
db24d6888896
mq: check for reserved patch name with qimport -r (issue5033)
Mads Kiilerich <madski@unity3d.com>
parents:
27918
diff
changeset
|
1340 while True: |
db24d6888896
mq: check for reserved patch name with qimport -r (issue5033)
Mads Kiilerich <madski@unity3d.com>
parents:
27918
diff
changeset
|
1341 if name not in self.fullseries: |
db24d6888896
mq: check for reserved patch name with qimport -r (issue5033)
Mads Kiilerich <madski@unity3d.com>
parents:
27918
diff
changeset
|
1342 try: |
db24d6888896
mq: check for reserved patch name with qimport -r (issue5033)
Mads Kiilerich <madski@unity3d.com>
parents:
27918
diff
changeset
|
1343 self.checkpatchname(name) |
db24d6888896
mq: check for reserved patch name with qimport -r (issue5033)
Mads Kiilerich <madski@unity3d.com>
parents:
27918
diff
changeset
|
1344 break |
db24d6888896
mq: check for reserved patch name with qimport -r (issue5033)
Mads Kiilerich <madski@unity3d.com>
parents:
27918
diff
changeset
|
1345 except error.Abort: |
db24d6888896
mq: check for reserved patch name with qimport -r (issue5033)
Mads Kiilerich <madski@unity3d.com>
parents:
27918
diff
changeset
|
1346 pass |
27918
c7cd551f07d0
mq: refactor makepatchname into class method
Mads Kiilerich <madski@unity3d.com>
parents:
27865
diff
changeset
|
1347 i += 1 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1348 name = b'%s__%d' % (namebase, i) |
27918
c7cd551f07d0
mq: refactor makepatchname into class method
Mads Kiilerich <madski@unity3d.com>
parents:
27865
diff
changeset
|
1349 return name |
c7cd551f07d0
mq: refactor makepatchname into class method
Mads Kiilerich <madski@unity3d.com>
parents:
27865
diff
changeset
|
1350 |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
1351 def checkkeepchanges(self, keepchanges, force): |
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
1352 if force and keepchanges: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1353 raise error.Abort(_(b'cannot use both --force and --keep-changes')) |
16654
490ed8972f1b
mq: introduce qpush --check
Patrick Mezard <patrick@mezard.eu>
parents:
16653
diff
changeset
|
1354 |
7162
ce10a2f22258
mq: heavy rearrangement of qnew to make it recover reliably from errors.
Brendan Cully <brendan@kublai.com>
parents:
7161
diff
changeset
|
1355 def new(self, repo, patchfn, *pats, **opts): |
7157
fd3cba5e73ae
mq: do not invoke editor until just before patch creation. Closes issue1346.
Brendan Cully <brendan@kublai.com>
parents:
7142
diff
changeset
|
1356 """options: |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
1357 msg: a string or a no-argument function returning a string |
7157
fd3cba5e73ae
mq: do not invoke editor until just before patch creation. Closes issue1346.
Brendan Cully <brendan@kublai.com>
parents:
7142
diff
changeset
|
1358 """ |
36387
dbf34d0ef9f6
py3: use pycompat.byteskwargs() to fix keyword arguments handling
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36343
diff
changeset
|
1359 opts = pycompat.byteskwargs(opts) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1360 msg = opts.get(b'msg') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1361 edit = opts.get(b'edit') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1362 editform = opts.get(b'editform', b'mq.qnew') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1363 user = opts.get(b'user') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1364 date = opts.get(b'date') |
6139
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6120
diff
changeset
|
1365 if date: |
36607
c6061cadb400
util: extract all date-related utils in utils/dateutil module
Boris Feld <boris.feld@octobus.net>
parents:
36389
diff
changeset
|
1366 date = dateutil.parsedate(date) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1367 diffopts = self.diffopts({b'git': opts.get(b'git')}, plain=True) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1368 if opts.get(b'checkname', True): |
14424
4eb88d296f63
record: check patch name is valid before prompting in qrecord
Idan Kamara <idankk86@gmail.com>
parents:
14423
diff
changeset
|
1369 self.checkpatchname(patchfn) |
19813
76796fe65bad
mq: extract checksubstate from the queue class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19812
diff
changeset
|
1370 inclsubs = checksubstate(repo) |
13174
be7e8e9bc5e5
mq: update .hgsubstate if subrepos are clean (issue2499)
Kevin Bullock <kbullock@ringworld.org>
parents:
13173
diff
changeset
|
1371 if inclsubs: |
48092
0dc9ced02a3b
dirstate-item: use item's property to deal with hgsubstate in mq
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48091
diff
changeset
|
1372 substatestate = repo.dirstate.get_entry(b'.hgsubstate') |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1373 if opts.get(b'include') or opts.get(b'exclude') or pats: |
7161
b420ef2c812b
mq: abort qnew -f if any file in an explicit list cannot be read
Brendan Cully <brendan@kublai.com>
parents:
7160
diff
changeset
|
1374 # detect missing files in pats |
b420ef2c812b
mq: abort qnew -f if any file in an explicit list cannot be read
Brendan Cully <brendan@kublai.com>
parents:
7160
diff
changeset
|
1375 def badfn(f, msg): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1376 if f != b'.hgsubstate': # .hgsubstate is auto-created |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1377 raise error.Abort(b'%s: %s' % (f, msg)) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1378 |
25469
cc3d94e5994e
mq: use the optional badfn argument when building a matcher
Matt Harbison <matt_harbison@yahoo.com>
parents:
25454
diff
changeset
|
1379 match = scmutil.match(repo[None], pats, opts, badfn=badfn) |
16366
913d1fa61398
mq: use list of already known target files instead of matching object for diff
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16365
diff
changeset
|
1380 changes = repo.status(match=match) |
4713
c29ee52e0b68
mq: support qnew -I/-X and file name lists
Brendan Cully <brendan@kublai.com>
parents:
4712
diff
changeset
|
1381 else: |
16366
913d1fa61398
mq: use list of already known target files instead of matching object for diff
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16365
diff
changeset
|
1382 changes = self.checklocalchanges(repo, force=True) |
20786
d666da075b91
mq: omit ".hgsubstate" from qnew/qrefresh target list for consistent node hash
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20785
diff
changeset
|
1383 commitfiles = list(inclsubs) |
43640
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1384 commitfiles.extend(changes.modified) |
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1385 commitfiles.extend(changes.added) |
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1386 commitfiles.extend(changes.removed) |
20786
d666da075b91
mq: omit ".hgsubstate" from qnew/qrefresh target list for consistent node hash
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20785
diff
changeset
|
1387 match = scmutil.matchfiles(repo, commitfiles) |
10372
27d542bc0f5b
qnew: ignore force option
Augie Fackler <durin42@gmail.com>
parents:
10370
diff
changeset
|
1388 if len(repo[None].parents()) > 1: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1389 raise error.Abort(_(b'cannot manage merge changesets')) |
14581
da40ee1adc2b
mq: rename check_toppatch to checktoppatch
Adrian Buehlmann <adrian@cadifra.com>
parents:
14580
diff
changeset
|
1390 self.checktoppatch(repo) |
14585
74bf9c84cfd0
mq: rename full_series_end to fullseriesend
Adrian Buehlmann <adrian@cadifra.com>
parents:
14584
diff
changeset
|
1391 insert = self.fullseriesend() |
27827
a5b168953013
with: use context manager for wlock in qnew
Bryan O'Sullivan <bryano@fb.com>
parents:
27651
diff
changeset
|
1392 with repo.wlock(): |
12878
1634287b6ab1
qnew: give better feedback when doing 'hg qnew foo/' (issue2464)
Martin Geisler <mg@aragost.com>
parents:
12875
diff
changeset
|
1393 try: |
1634287b6ab1
qnew: give better feedback when doing 'hg qnew foo/' (issue2464)
Martin Geisler <mg@aragost.com>
parents:
12875
diff
changeset
|
1394 # if patch file write fails, abort early |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1395 p = self.opener(patchfn, b"w") |
25660
328739ea70c3
global: mass rewrite to use modern exception syntax
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25469
diff
changeset
|
1396 except IOError as e: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1397 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1398 _(b'cannot write patch "%s": %s') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1399 % (patchfn, encoding.strtolocal(e.strerror)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1400 ) |
7162
ce10a2f22258
mq: heavy rearrangement of qnew to make it recover reliably from errors.
Brendan Cully <brendan@kublai.com>
parents:
7161
diff
changeset
|
1401 try: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1402 defaultmsg = b"[mq]: %s" % patchfn |
22003
cbbd957358ff
mq: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21965
diff
changeset
|
1403 editor = cmdutil.getcommiteditor(editform=editform) |
21420
d009f6555b81
mq: fold the code path to invoke editor into specific logic (qnew)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21270
diff
changeset
|
1404 if edit: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1405 |
21421
4941caa9f0f8
mq: use the editor gotten by "getcommiteditor()" instead of "ui.edit()" (qnew)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21420
diff
changeset
|
1406 def finishdesc(desc): |
21234
b9a16ed5acec
qnew: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20959
diff
changeset
|
1407 if desc.rstrip(): |
b9a16ed5acec
qnew: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20959
diff
changeset
|
1408 return desc |
b9a16ed5acec
qnew: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20959
diff
changeset
|
1409 else: |
b9a16ed5acec
qnew: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20959
diff
changeset
|
1410 return defaultmsg |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1411 |
21421
4941caa9f0f8
mq: use the editor gotten by "getcommiteditor()" instead of "ui.edit()" (qnew)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21420
diff
changeset
|
1412 # i18n: this message is shown in editor with "HG: " prefix |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1413 extramsg = _(b'Leave message empty to use default message.') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1414 editor = cmdutil.getcommiteditor( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1415 finishdesc=finishdesc, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1416 extramsg=extramsg, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1417 editform=editform, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1418 ) |
21234
b9a16ed5acec
qnew: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20959
diff
changeset
|
1419 commitmsg = msg |
b9a16ed5acec
qnew: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20959
diff
changeset
|
1420 else: |
b9a16ed5acec
qnew: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20959
diff
changeset
|
1421 commitmsg = msg or defaultmsg |
b9a16ed5acec
qnew: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20959
diff
changeset
|
1422 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1423 n = newcommit( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1424 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1425 None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1426 commitmsg, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1427 user, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1428 date, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1429 match=match, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1430 force=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1431 editor=editor, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1432 ) |
8527
f9a80054dd3c
use 'x is None' instead of 'x == None'
Martin Geisler <mg@lazybytes.net>
parents:
8525
diff
changeset
|
1433 if n is None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1434 raise error.Abort(_(b"repo commit failed")) |
7162
ce10a2f22258
mq: heavy rearrangement of qnew to make it recover reliably from errors.
Brendan Cully <brendan@kublai.com>
parents:
7161
diff
changeset
|
1435 try: |
14572
8ff2957c1d82
mq: rename full_series to fullseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14564
diff
changeset
|
1436 self.fullseries[insert:insert] = [patchfn] |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
1437 self.applied.append(statusentry(n, patchfn)) |
14575
845c864200d0
mq: rename parse_series to parseseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14574
diff
changeset
|
1438 self.parseseries() |
15879
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
1439 self.seriesdirty = True |
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
1440 self.applieddirty = True |
21234
b9a16ed5acec
qnew: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20959
diff
changeset
|
1441 nctx = repo[n] |
22547
3d616d27a422
mq: write headers of new patches using patchheader
Mads Kiilerich <madski@unity3d.com>
parents:
22546
diff
changeset
|
1442 ph = patchheader(self.join(patchfn), self.plainmode) |
3d616d27a422
mq: write headers of new patches using patchheader
Mads Kiilerich <madski@unity3d.com>
parents:
22546
diff
changeset
|
1443 if user: |
3d616d27a422
mq: write headers of new patches using patchheader
Mads Kiilerich <madski@unity3d.com>
parents:
22546
diff
changeset
|
1444 ph.setuser(user) |
3d616d27a422
mq: write headers of new patches using patchheader
Mads Kiilerich <madski@unity3d.com>
parents:
22546
diff
changeset
|
1445 if date: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1446 ph.setdate(b'%d %d' % date) |
22547
3d616d27a422
mq: write headers of new patches using patchheader
Mads Kiilerich <madski@unity3d.com>
parents:
22546
diff
changeset
|
1447 ph.setparent(hex(nctx.p1().node())) |
3d616d27a422
mq: write headers of new patches using patchheader
Mads Kiilerich <madski@unity3d.com>
parents:
22546
diff
changeset
|
1448 msg = nctx.description().strip() |
3d616d27a422
mq: write headers of new patches using patchheader
Mads Kiilerich <madski@unity3d.com>
parents:
22546
diff
changeset
|
1449 if msg == defaultmsg.strip(): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1450 msg = b'' |
22547
3d616d27a422
mq: write headers of new patches using patchheader
Mads Kiilerich <madski@unity3d.com>
parents:
22546
diff
changeset
|
1451 ph.setmessage(msg) |
35948
f87641bf4d23
py3: use bytes instead of str
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35918
diff
changeset
|
1452 p.write(bytes(ph)) |
7162
ce10a2f22258
mq: heavy rearrangement of qnew to make it recover reliably from errors.
Brendan Cully <brendan@kublai.com>
parents:
7161
diff
changeset
|
1453 if commitfiles: |
ce10a2f22258
mq: heavy rearrangement of qnew to make it recover reliably from errors.
Brendan Cully <brendan@kublai.com>
parents:
7161
diff
changeset
|
1454 parent = self.qparents(repo, n) |
16366
913d1fa61398
mq: use list of already known target files instead of matching object for diff
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
16365
diff
changeset
|
1455 if inclsubs: |
17152
f287d4a62031
mq: create patch file after commit to import diff of ".hgsubstate" at qrefresh
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17151
diff
changeset
|
1456 self.putsubstate2changes(substatestate, changes) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1457 chunks = patchmod.diff( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1458 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1459 node1=parent, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1460 node2=n, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1461 changes=changes, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1462 opts=diffopts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1463 ) |
7308
b6f5490effbf
patch: turn patch.diff() into a generator
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7307
diff
changeset
|
1464 for chunk in chunks: |
b6f5490effbf
patch: turn patch.diff() into a generator
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7307
diff
changeset
|
1465 p.write(chunk) |
7162
ce10a2f22258
mq: heavy rearrangement of qnew to make it recover reliably from errors.
Brendan Cully <brendan@kublai.com>
parents:
7161
diff
changeset
|
1466 p.close() |
ce10a2f22258
mq: heavy rearrangement of qnew to make it recover reliably from errors.
Brendan Cully <brendan@kublai.com>
parents:
7161
diff
changeset
|
1467 r = self.qrepo() |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10276
diff
changeset
|
1468 if r: |
50047
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
1469 with r.wlock(), r.dirstate.changing_files(r): |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
1470 r[None].add([patchfn]) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1471 except: # re-raises |
7162
ce10a2f22258
mq: heavy rearrangement of qnew to make it recover reliably from errors.
Brendan Cully <brendan@kublai.com>
parents:
7161
diff
changeset
|
1472 repo.rollback() |
ce10a2f22258
mq: heavy rearrangement of qnew to make it recover reliably from errors.
Brendan Cully <brendan@kublai.com>
parents:
7161
diff
changeset
|
1473 raise |
7280
810ca383da9c
remove unused variables
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7271
diff
changeset
|
1474 except Exception: |
7162
ce10a2f22258
mq: heavy rearrangement of qnew to make it recover reliably from errors.
Brendan Cully <brendan@kublai.com>
parents:
7161
diff
changeset
|
1475 patchpath = self.join(patchfn) |
ce10a2f22258
mq: heavy rearrangement of qnew to make it recover reliably from errors.
Brendan Cully <brendan@kublai.com>
parents:
7161
diff
changeset
|
1476 try: |
ce10a2f22258
mq: heavy rearrangement of qnew to make it recover reliably from errors.
Brendan Cully <brendan@kublai.com>
parents:
7161
diff
changeset
|
1477 os.unlink(patchpath) |
16688
cfb6682961b8
cleanup: replace naked excepts with more specific ones
Brodie Rao <brodie@sf.io>
parents:
16687
diff
changeset
|
1478 except OSError: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1479 self.ui.warn(_(b'error unlinking %s\n') % patchpath) |
7162
ce10a2f22258
mq: heavy rearrangement of qnew to make it recover reliably from errors.
Brendan Cully <brendan@kublai.com>
parents:
7161
diff
changeset
|
1480 raise |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1481 self.removeundo(repo) |
1808 | 1482 |
1483 def isapplied(self, patch): | |
1484 """returns (index, rev, patch)""" | |
8632
9e055cfdd620
replace "i in range(len(xs))" with "i, x in enumerate(xs)"
Martin Geisler <mg@lazybytes.net>
parents:
8624
diff
changeset
|
1485 for i, a in enumerate(self.applied): |
2780
ee48e5ef8753
Use StatusEntry class instead of repeated status line parsing.
Brendan Cully <brendan@kublai.com>
parents:
2765
diff
changeset
|
1486 if a.name == patch: |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
1487 return (i, a.node, a.name) |
1808 | 1488 return None |
1489 | |
3223
53e843840349
Whitespace/Tab cleanup
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3186
diff
changeset
|
1490 # if the exact patch name does not exist, we try a few |
2696 | 1491 # variations. If strict is passed, we try only #1 |
1492 # | |
15256
8caf7a757afa
mq: fix corner cases for handling of patch 0 in qselect
Mads Kiilerich <mads@kiilerich.com>
parents:
15148
diff
changeset
|
1493 # 1) a number (as string) to indicate an offset in the series file |
2696 | 1494 # 2) a unique substring of the patch name was given |
1495 # 3) patchname[-+]num to indicate an offset in the series file | |
1496 def lookup(self, patch, strict=False): | |
14595
f2c9d4091e0e
mq: rename partial_name to partialname
Adrian Buehlmann <adrian@cadifra.com>
parents:
14594
diff
changeset
|
1497 def partialname(s): |
2696 | 1498 if s in self.series: |
1499 return s | |
2765
0327bd1c831c
mq: print matches if patch name not unique
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2757
diff
changeset
|
1500 matches = [x for x in self.series if s in x] |
0327bd1c831c
mq: print matches if patch name not unique
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2757
diff
changeset
|
1501 if len(matches) > 1: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1502 self.ui.warn(_(b'patch name "%s" is ambiguous:\n') % s) |
2765
0327bd1c831c
mq: print matches if patch name not unique
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2757
diff
changeset
|
1503 for m in matches: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1504 self.ui.warn(b' %s\n' % m) |
2765
0327bd1c831c
mq: print matches if patch name not unique
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2757
diff
changeset
|
1505 return None |
0327bd1c831c
mq: print matches if patch name not unique
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2757
diff
changeset
|
1506 if matches: |
0327bd1c831c
mq: print matches if patch name not unique
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2757
diff
changeset
|
1507 return matches[0] |
10686
0c68c2c36ed8
mq: don't use len(list) unless necessary
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10685
diff
changeset
|
1508 if self.series and self.applied: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1509 if s == b'qtip': |
18054
b35e3364f94a
check-code: there must also be whitespace between ')' and operator
Mads Kiilerich <madski@unity3d.com>
parents:
18011
diff
changeset
|
1510 return self.series[self.seriesend(True) - 1] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1511 if s == b'qbase': |
2696 | 1512 return self.series[0] |
1513 return None | |
7568
12df451ce205
mq: don't warn about ambiguous patch name when using patch index (issue1439)
Jason Orendorff <jorendorff@mozilla.com>
parents:
7566
diff
changeset
|
1514 |
12df451ce205
mq: don't warn about ambiguous patch name when using patch index (issue1439)
Jason Orendorff <jorendorff@mozilla.com>
parents:
7566
diff
changeset
|
1515 if patch in self.series: |
12df451ce205
mq: don't warn about ambiguous patch name when using patch index (issue1439)
Jason Orendorff <jorendorff@mozilla.com>
parents:
7566
diff
changeset
|
1516 return patch |
2696 | 1517 |
2819 | 1518 if not os.path.isfile(self.join(patch)): |
1808 | 1519 try: |
1520 sno = int(patch) | |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10276
diff
changeset
|
1521 except (ValueError, OverflowError): |
2696 | 1522 pass |
1523 else: | |
7568
12df451ce205
mq: don't warn about ambiguous patch name when using patch index (issue1439)
Jason Orendorff <jorendorff@mozilla.com>
parents:
7566
diff
changeset
|
1524 if -len(self.series) <= sno < len(self.series): |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
1525 return self.series[sno] |
7568
12df451ce205
mq: don't warn about ambiguous patch name when using patch index (issue1439)
Jason Orendorff <jorendorff@mozilla.com>
parents:
7566
diff
changeset
|
1526 |
2696 | 1527 if not strict: |
14595
f2c9d4091e0e
mq: rename partial_name to partialname
Adrian Buehlmann <adrian@cadifra.com>
parents:
14594
diff
changeset
|
1528 res = partialname(patch) |
2696 | 1529 if res: |
1530 return res | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1531 minus = patch.rfind(b'-') |
3082
bed7cb835d8d
Fixed python2.3 incompatibility (rsplit) in qpush/qpop with index.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3076
diff
changeset
|
1532 if minus >= 0: |
14595
f2c9d4091e0e
mq: rename partial_name to partialname
Adrian Buehlmann <adrian@cadifra.com>
parents:
14594
diff
changeset
|
1533 res = partialname(patch[:minus]) |
2696 | 1534 if res: |
1535 i = self.series.index(res) | |
1536 try: | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1537 off = int(patch[minus + 1 :] or 1) |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10276
diff
changeset
|
1538 except (ValueError, OverflowError): |
2696 | 1539 pass |
1540 else: | |
1541 if i - off >= 0: | |
1542 return self.series[i - off] | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1543 plus = patch.rfind(b'+') |
3082
bed7cb835d8d
Fixed python2.3 incompatibility (rsplit) in qpush/qpop with index.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3076
diff
changeset
|
1544 if plus >= 0: |
14595
f2c9d4091e0e
mq: rename partial_name to partialname
Adrian Buehlmann <adrian@cadifra.com>
parents:
14594
diff
changeset
|
1545 res = partialname(patch[:plus]) |
2696 | 1546 if res: |
1547 i = self.series.index(res) | |
1548 try: | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1549 off = int(patch[plus + 1 :] or 1) |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10276
diff
changeset
|
1550 except (ValueError, OverflowError): |
2696 | 1551 pass |
1552 else: | |
1553 if i + off < len(self.series): | |
1554 return self.series[i + off] | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1555 raise error.Abort(_(b"patch %s not in series") % patch) |
1808 | 1556 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1557 def push( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1558 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1559 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1560 patch=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1561 force=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1562 list=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1563 mergeq=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1564 all=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1565 move=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1566 exact=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1567 nobackup=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1568 keepchanges=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1569 ): |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
1570 self.checkkeepchanges(keepchanges, force) |
10184
8a47347d298b
mq: stop caching and sharing diff options
Patrick Mezard <pmezard@gmail.com>
parents:
10114
diff
changeset
|
1571 diffopts = self.diffopts() |
27828
823069f73ff9
with: use context manager for wlock in qpush
Bryan O'Sullivan <bryano@fb.com>
parents:
27827
diff
changeset
|
1572 with repo.wlock(): |
20119
1648e44edd8d
mq: prefer a loop to a double-for list comprehension
Kevin Bullock <kbullock@ringworld.org>
parents:
20053
diff
changeset
|
1573 heads = [] |
42002
662ffdde5adf
branchcache: rename itervalues() to iterheads()
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
41780
diff
changeset
|
1574 for hs in repo.branchmap().iterheads(): |
20119
1648e44edd8d
mq: prefer a loop to a double-for list comprehension
Kevin Bullock <kbullock@ringworld.org>
parents:
20053
diff
changeset
|
1575 heads.extend(hs) |
10362
2e3ec7ef5349
mq: don't warn on qpush against a branch head
Dirkjan Ochtman <djc.ochtman@kentyde.com>
parents:
10361
diff
changeset
|
1576 if not heads: |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46935
diff
changeset
|
1577 heads = [repo.nullid] |
13878
a8d13ee0ce68
misc: replace .parents()[0] with p1()
Matt Mackall <mpm@selenic.com>
parents:
13793
diff
changeset
|
1578 if repo.dirstate.p1() not in heads and not exact: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1579 self.ui.status(_(b"(working directory not at a head)\n")) |
6340
949e607ac544
mq: warn when applying a patch to somewhere other than tip
Matt Mackall <mpm@selenic.com>
parents:
6217
diff
changeset
|
1580 |
8795
51c29aec0b75
mq: eliminate warning on qpush with empty series
Adrian Buehlmann <adrian@cadifra.com>
parents:
8778
diff
changeset
|
1581 if not self.series: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1582 self.ui.warn(_(b'no patches in series\n')) |
8795
51c29aec0b75
mq: eliminate warning on qpush with empty series
Adrian Buehlmann <adrian@cadifra.com>
parents:
8778
diff
changeset
|
1583 return 0 |
7398
2cd1308cb588
mq: gracefully abort qpush/qgoto to guarded patch (issue1186)
Brendan Cully <brendan@kublai.com>
parents:
7308
diff
changeset
|
1584 |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1585 # Suppose our series file is: A B C and the current 'top' |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1586 # patch is B. qpush C should be performed (moving forward) |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1587 # qpush B is a NOP (no change) qpush A is an error (can't |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1588 # go backwards with qpush) |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1589 if patch: |
15257
a8555f9908d1
mq: cleanup of lookup - handling of None is not relevant
Mads Kiilerich <mads@kiilerich.com>
parents:
15256
diff
changeset
|
1590 patch = self.lookup(patch) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1591 info = self.isapplied(patch) |
13369
69238d0ca60f
mq: catch attempt to qpush to an earlier patch (issue2587)
Afuna <afunamatata@gmail.com>
parents:
13224
diff
changeset
|
1592 if info and info[0] >= len(self.applied) - 1: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1593 self.ui.warn( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1594 _(b'qpush: %s is already at the top\n') % patch |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1595 ) |
11439
778377be3662
mq: explicit exit code when patch is already on top
Gilles Moris <gilles.moris@free.fr>
parents:
11438
diff
changeset
|
1596 return 0 |
13369
69238d0ca60f
mq: catch attempt to qpush to an earlier patch (issue2587)
Afuna <afunamatata@gmail.com>
parents:
13224
diff
changeset
|
1597 |
7398
2cd1308cb588
mq: gracefully abort qpush/qgoto to guarded patch (issue1186)
Brendan Cully <brendan@kublai.com>
parents:
7308
diff
changeset
|
1598 pushable, reason = self.pushable(patch) |
13369
69238d0ca60f
mq: catch attempt to qpush to an earlier patch (issue2587)
Afuna <afunamatata@gmail.com>
parents:
13224
diff
changeset
|
1599 if pushable: |
14586
af91cb281975
mq: rename series_end to seriesend
Adrian Buehlmann <adrian@cadifra.com>
parents:
14585
diff
changeset
|
1600 if self.series.index(patch) < self.seriesend(): |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26578
diff
changeset
|
1601 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1602 _(b"cannot push to a previous patch: %s") % patch |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1603 ) |
13369
69238d0ca60f
mq: catch attempt to qpush to an earlier patch (issue2587)
Afuna <afunamatata@gmail.com>
parents:
13224
diff
changeset
|
1604 else: |
7398
2cd1308cb588
mq: gracefully abort qpush/qgoto to guarded patch (issue1186)
Brendan Cully <brendan@kublai.com>
parents:
7308
diff
changeset
|
1605 if reason: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1606 reason = _(b'guarded by %s') % reason |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1607 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1608 reason = _(b'no matching guards') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1609 self.ui.warn( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1610 _(b"cannot push '%s' - %s\n") % (patch, reason) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1611 ) |
7398
2cd1308cb588
mq: gracefully abort qpush/qgoto to guarded patch (issue1186)
Brendan Cully <brendan@kublai.com>
parents:
7308
diff
changeset
|
1612 return 1 |
2cd1308cb588
mq: gracefully abort qpush/qgoto to guarded patch (issue1186)
Brendan Cully <brendan@kublai.com>
parents:
7308
diff
changeset
|
1613 elif all: |
2cd1308cb588
mq: gracefully abort qpush/qgoto to guarded patch (issue1186)
Brendan Cully <brendan@kublai.com>
parents:
7308
diff
changeset
|
1614 patch = self.series[-1] |
2cd1308cb588
mq: gracefully abort qpush/qgoto to guarded patch (issue1186)
Brendan Cully <brendan@kublai.com>
parents:
7308
diff
changeset
|
1615 if self.isapplied(patch): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1616 self.ui.warn(_(b'all patches are currently applied\n')) |
7398
2cd1308cb588
mq: gracefully abort qpush/qgoto to guarded patch (issue1186)
Brendan Cully <brendan@kublai.com>
parents:
7308
diff
changeset
|
1617 return 0 |
4100
c30c922f907a
Modify qpush/qpop idempotent operations to return success
Ben Thomas <bthomas@virtualiron.com>
parents:
4099
diff
changeset
|
1618 |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1619 # Following the above example, starting at 'top' of B: |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1620 # qpush should be performed (pushes C), but a subsequent |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1621 # qpush without an argument is an error (nothing to |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1622 # apply). This allows a loop of "...while hg qpush..." to |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1623 # work as it detects an error when done |
14586
af91cb281975
mq: rename series_end to seriesend
Adrian Buehlmann <adrian@cadifra.com>
parents:
14585
diff
changeset
|
1624 start = self.seriesend() |
7398
2cd1308cb588
mq: gracefully abort qpush/qgoto to guarded patch (issue1186)
Brendan Cully <brendan@kublai.com>
parents:
7308
diff
changeset
|
1625 if start == len(self.series): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1626 self.ui.warn(_(b'patch series already fully applied\n')) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1627 return 1 |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
1628 if not force and not keepchanges: |
14732
e9ed3506f066
backout of d04ba50e104d: allow to qpop/push with a dirty working copy
Idan Kamara <idankk86@gmail.com>
parents:
14671
diff
changeset
|
1629 self.checklocalchanges(repo, refresh=self.applied) |
1810
7596611ab3d5
Whitespace, tab and formatting cleanups, mainly in mq.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1808
diff
changeset
|
1630 |
13033
026053f691a4
mq: add an '-e/--exact' option to qpush
Steve Losh <steve@stevelosh.com>
parents:
13031
diff
changeset
|
1631 if exact: |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
1632 if keepchanges: |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26578
diff
changeset
|
1633 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1634 _(b"cannot use --exact and --keep-changes together") |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1635 ) |
13033
026053f691a4
mq: add an '-e/--exact' option to qpush
Steve Losh <steve@stevelosh.com>
parents:
13031
diff
changeset
|
1636 if move: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1637 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
1638 _(b'cannot use --exact and --move together') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1639 ) |
13033
026053f691a4
mq: add an '-e/--exact' option to qpush
Steve Losh <steve@stevelosh.com>
parents:
13031
diff
changeset
|
1640 if self.applied: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1641 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
1642 _(b'cannot push --exact with applied patches') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1643 ) |
13033
026053f691a4
mq: add an '-e/--exact' option to qpush
Steve Losh <steve@stevelosh.com>
parents:
13031
diff
changeset
|
1644 root = self.series[start] |
026053f691a4
mq: add an '-e/--exact' option to qpush
Steve Losh <steve@stevelosh.com>
parents:
13031
diff
changeset
|
1645 target = patchheader(self.join(root), self.plainmode).parent |
026053f691a4
mq: add an '-e/--exact' option to qpush
Steve Losh <steve@stevelosh.com>
parents:
13031
diff
changeset
|
1646 if not target: |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26578
diff
changeset
|
1647 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1648 _(b"%s does not have a parent recorded") % root |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1649 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1650 if not repo[target] == repo[b'.']: |
13033
026053f691a4
mq: add an '-e/--exact' option to qpush
Steve Losh <steve@stevelosh.com>
parents:
13031
diff
changeset
|
1651 hg.update(repo, target) |
026053f691a4
mq: add an '-e/--exact' option to qpush
Steve Losh <steve@stevelosh.com>
parents:
13031
diff
changeset
|
1652 |
11064
590b1d6ef50b
mq: qpush --move, reorder patch series and apply only the patch
Mads Kiilerich <mads@kiilerich.com>
parents:
11050
diff
changeset
|
1653 if move: |
11715
4f9dfb54c8b5
qpush --move: move the right patch even with comment lines
Gilles Moris <gilles.moris@free.fr>
parents:
11709
diff
changeset
|
1654 if not patch: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1655 raise error.Abort(_(b"please specify the patch to move")) |
16303
7ee8aa662937
mq: fix qpush --move with comments in series file between applied patches
Mads Kiilerich <mads@kiilerich.com>
parents:
16290
diff
changeset
|
1656 for fullstart, rpn in enumerate(self.fullseries): |
7ee8aa662937
mq: fix qpush --move with comments in series file between applied patches
Mads Kiilerich <mads@kiilerich.com>
parents:
16290
diff
changeset
|
1657 # strip markers for patch guards |
7ee8aa662937
mq: fix qpush --move with comments in series file between applied patches
Mads Kiilerich <mads@kiilerich.com>
parents:
16290
diff
changeset
|
1658 if self.guard_re.split(rpn, 1)[0] == self.series[start]: |
7ee8aa662937
mq: fix qpush --move with comments in series file between applied patches
Mads Kiilerich <mads@kiilerich.com>
parents:
16290
diff
changeset
|
1659 break |
7ee8aa662937
mq: fix qpush --move with comments in series file between applied patches
Mads Kiilerich <mads@kiilerich.com>
parents:
16290
diff
changeset
|
1660 for i, rpn in enumerate(self.fullseries[fullstart:]): |
11715
4f9dfb54c8b5
qpush --move: move the right patch even with comment lines
Gilles Moris <gilles.moris@free.fr>
parents:
11709
diff
changeset
|
1661 # strip markers for patch guards |
4f9dfb54c8b5
qpush --move: move the right patch even with comment lines
Gilles Moris <gilles.moris@free.fr>
parents:
11709
diff
changeset
|
1662 if self.guard_re.split(rpn, 1)[0] == patch: |
4f9dfb54c8b5
qpush --move: move the right patch even with comment lines
Gilles Moris <gilles.moris@free.fr>
parents:
11709
diff
changeset
|
1663 break |
16303
7ee8aa662937
mq: fix qpush --move with comments in series file between applied patches
Mads Kiilerich <mads@kiilerich.com>
parents:
16290
diff
changeset
|
1664 index = fullstart + i |
14572
8ff2957c1d82
mq: rename full_series to fullseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14564
diff
changeset
|
1665 assert index < len(self.fullseries) |
8ff2957c1d82
mq: rename full_series to fullseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14564
diff
changeset
|
1666 fullpatch = self.fullseries[index] |
8ff2957c1d82
mq: rename full_series to fullseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14564
diff
changeset
|
1667 del self.fullseries[index] |
16303
7ee8aa662937
mq: fix qpush --move with comments in series file between applied patches
Mads Kiilerich <mads@kiilerich.com>
parents:
16290
diff
changeset
|
1668 self.fullseries.insert(fullstart, fullpatch) |
14575
845c864200d0
mq: rename parse_series to parseseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14574
diff
changeset
|
1669 self.parseseries() |
15879
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
1670 self.seriesdirty = True |
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
1671 |
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
1672 self.applieddirty = True |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1673 if start > 0: |
14581
da40ee1adc2b
mq: rename check_toppatch to checktoppatch
Adrian Buehlmann <adrian@cadifra.com>
parents:
14580
diff
changeset
|
1674 self.checktoppatch(repo) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1675 if not patch: |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1676 patch = self.series[start] |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1677 end = start + 1 |
4418
0532491f7476
MQ: tidy up if a qpush is interrupted.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4406
diff
changeset
|
1678 else: |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1679 end = self.series.index(patch, start) + 1 |
8875
801cacf46e62
mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8833
diff
changeset
|
1680 |
16634
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
1681 tobackup = set() |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
1682 if (not nobackup and force) or keepchanges: |
22925
68df36ce3d8a
strip: make checklocalchanges() return full status tuple
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
22821
diff
changeset
|
1683 status = self.checklocalchanges(repo, force=True) |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
1684 if keepchanges: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1685 tobackup.update( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1686 status.modified |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1687 + status.added |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1688 + status.removed |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1689 + status.deleted |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1690 ) |
16654
490ed8972f1b
mq: introduce qpush --check
Patrick Mezard <patrick@mezard.eu>
parents:
16653
diff
changeset
|
1691 else: |
22925
68df36ce3d8a
strip: make checklocalchanges() return full status tuple
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
22821
diff
changeset
|
1692 tobackup.update(status.modified + status.added) |
16634
435375cc0ca0
mq: backup local changes in qpush --force
Patrick Mezard <patrick@mezard.eu>
parents:
16633
diff
changeset
|
1693 |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1694 s = self.series[start:end] |
10661
c4859aad1980
mq: all_files can be a set, remove dangerous default values
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10611
diff
changeset
|
1695 all_files = set() |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1696 try: |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1697 if mergeq: |
10184
8a47347d298b
mq: stop caching and sharing diff options
Patrick Mezard <pmezard@gmail.com>
parents:
10114
diff
changeset
|
1698 ret = self.mergepatch(repo, mergeq, s, diffopts) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1699 else: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1700 ret = self.apply( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1701 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1702 s, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1703 list, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1704 all_files=all_files, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1705 tobackup=tobackup, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1706 keepchanges=keepchanges, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1707 ) |
24826
9b02b678888e
mq: avoid silent failure when single patch doesn't apply (issue4604)
Matt Mackall <mpm@selenic.com>
parents:
24365
diff
changeset
|
1708 except AbortNoCleanup: |
9b02b678888e
mq: avoid silent failure when single patch doesn't apply (issue4604)
Matt Mackall <mpm@selenic.com>
parents:
24365
diff
changeset
|
1709 raise |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1710 except: # re-raises |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1711 self.ui.warn(_(b'cleaning up working directory...\n')) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1712 cmdutil.revert( |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
1713 self.ui, |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
1714 repo, |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
1715 repo[b'.'], |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
1716 no_backup=True, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1717 ) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1718 # only remove unknown files that we know we touched or |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1719 # created while patching |
10662
e8e56d8377ab
mq: avoid a (potentially expensive) repo.status(unknown=True) call
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10661
diff
changeset
|
1720 for f in all_files: |
e8e56d8377ab
mq: avoid a (potentially expensive) repo.status(unknown=True) call
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10661
diff
changeset
|
1721 if f not in repo.dirstate: |
31309
8908f985570c
vfs: use repo.wvfs.unlinkpath
Mads Kiilerich <madski@unity3d.com>
parents:
31243
diff
changeset
|
1722 repo.wvfs.unlinkpath(f, ignoremissing=True) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1723 self.ui.warn(_(b'done\n')) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1724 raise |
8875
801cacf46e62
mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8833
diff
changeset
|
1725 |
9590
07a62819b309
mq: fix traceback for qpush inexistant-patch with no patch applied
Benoit Allard <benoit@aeteurope.nl>
parents:
9588
diff
changeset
|
1726 if not self.applied: |
07a62819b309
mq: fix traceback for qpush inexistant-patch with no patch applied
Benoit Allard <benoit@aeteurope.nl>
parents:
9588
diff
changeset
|
1727 return ret[0] |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1728 top = self.applied[-1].name |
8875
801cacf46e62
mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8833
diff
changeset
|
1729 if ret[0] and ret[0] > 1: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1730 msg = _(b"errors during apply, please fix and qrefresh %s\n") |
8875
801cacf46e62
mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8833
diff
changeset
|
1731 self.ui.write(msg % top) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1732 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1733 self.ui.write(_(b"now at: %s\n") % top) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1734 return ret[0] |
8875
801cacf46e62
mq: fix error message for qpush inexistent-patch (issue1702)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
8833
diff
changeset
|
1735 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1736 def pop( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1737 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1738 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1739 patch=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1740 force=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1741 update=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1742 all=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1743 nobackup=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1744 keepchanges=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1745 ): |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
1746 self.checkkeepchanges(keepchanges, force) |
27829
bab359a3cf49
with: use context manager for wlock in qpop
Bryan O'Sullivan <bryano@fb.com>
parents:
27828
diff
changeset
|
1747 with repo.wlock(): |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1748 if patch: |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1749 # index, rev, patch |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1750 info = self.isapplied(patch) |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1751 if not info: |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1752 patch = self.lookup(patch) |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1753 info = self.isapplied(patch) |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1754 if not info: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1755 raise error.Abort(_(b"patch %s is not applied") % patch) |
4100
c30c922f907a
Modify qpush/qpop idempotent operations to return success
Ben Thomas <bthomas@virtualiron.com>
parents:
4099
diff
changeset
|
1756 |
10686
0c68c2c36ed8
mq: don't use len(list) unless necessary
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10685
diff
changeset
|
1757 if not self.applied: |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1758 # Allow qpop -a to work repeatedly, |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1759 # but not qpop without an argument |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1760 self.ui.warn(_(b"no patches applied\n")) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1761 return not all |
1808 | 1762 |
7620
fbfd92d51540
mq: refactor the pop code to be more readable and allow more changes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7619
diff
changeset
|
1763 if all: |
fbfd92d51540
mq: refactor the pop code to be more readable and allow more changes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7619
diff
changeset
|
1764 start = 0 |
fbfd92d51540
mq: refactor the pop code to be more readable and allow more changes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7619
diff
changeset
|
1765 elif patch: |
fbfd92d51540
mq: refactor the pop code to be more readable and allow more changes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7619
diff
changeset
|
1766 start = info[0] + 1 |
fbfd92d51540
mq: refactor the pop code to be more readable and allow more changes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7619
diff
changeset
|
1767 else: |
fbfd92d51540
mq: refactor the pop code to be more readable and allow more changes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7619
diff
changeset
|
1768 start = len(self.applied) - 1 |
fbfd92d51540
mq: refactor the pop code to be more readable and allow more changes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7619
diff
changeset
|
1769 |
fbfd92d51540
mq: refactor the pop code to be more readable and allow more changes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7619
diff
changeset
|
1770 if start >= len(self.applied): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1771 self.ui.warn(_(b"qpop: %s is already at the top\n") % patch) |
7620
fbfd92d51540
mq: refactor the pop code to be more readable and allow more changes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7619
diff
changeset
|
1772 return |
fbfd92d51540
mq: refactor the pop code to be more readable and allow more changes
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7619
diff
changeset
|
1773 |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1774 if not update: |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1775 parents = repo.dirstate.parents() |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
1776 rr = [x.node for x in self.applied] |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1777 for p in parents: |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1778 if p in rr: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1779 self.ui.warn(_(b"qpop: forcing dirstate update\n")) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1780 update = True |
7621
6d891df43a5f
mq: allow qpop if popped revisions are not working dir parents
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7620
diff
changeset
|
1781 else: |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
1782 parents = [p.node() for p in repo[None].parents()] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1783 update = any( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1784 entry.node in parents for entry in self.applied[start:] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1785 ) |
1808 | 1786 |
16633
b2ca2f40c9c1
mq: backup local changes in qpop --force (issue3433)
Patrick Mezard <patrick@mezard.eu>
parents:
16551
diff
changeset
|
1787 tobackup = set() |
b2ca2f40c9c1
mq: backup local changes in qpop --force (issue3433)
Patrick Mezard <patrick@mezard.eu>
parents:
16551
diff
changeset
|
1788 if update: |
22925
68df36ce3d8a
strip: make checklocalchanges() return full status tuple
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
22821
diff
changeset
|
1789 s = self.checklocalchanges(repo, force=force or keepchanges) |
16653
73b8c2554be8
mq: introduce qpop --check
Patrick Mezard <patrick@mezard.eu>
parents:
16635
diff
changeset
|
1790 if force: |
73b8c2554be8
mq: introduce qpop --check
Patrick Mezard <patrick@mezard.eu>
parents:
16635
diff
changeset
|
1791 if not nobackup: |
22925
68df36ce3d8a
strip: make checklocalchanges() return full status tuple
Martin von Zweigbergk <martinvonz@gmail.com>
parents:
22821
diff
changeset
|
1792 tobackup.update(s.modified + s.added) |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
1793 elif keepchanges: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1794 tobackup.update( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1795 s.modified + s.added + s.removed + s.deleted |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1796 ) |
14732
e9ed3506f066
backout of d04ba50e104d: allow to qpop/push with a dirty working copy
Idan Kamara <idankk86@gmail.com>
parents:
14671
diff
changeset
|
1797 |
15879
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
1798 self.applieddirty = True |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1799 end = len(self.applied) |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
1800 rev = self.applied[start].node |
5980
dcda0c90125c
mq: pop/refresh: avoid losing revisions not managed by mq
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5979
diff
changeset
|
1801 |
7621
6d891df43a5f
mq: allow qpop if popped revisions are not working dir parents
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7620
diff
changeset
|
1802 try: |
6d891df43a5f
mq: allow qpop if popped revisions are not working dir parents
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7620
diff
changeset
|
1803 heads = repo.changelog.heads(rev) |
7639
ae7a614a6a57
mq: remove import of revlog
Matt Mackall <mpm@selenic.com>
parents:
7637
diff
changeset
|
1804 except error.LookupError: |
7621
6d891df43a5f
mq: allow qpop if popped revisions are not working dir parents
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7620
diff
changeset
|
1805 node = short(rev) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1806 raise error.Abort(_(b'trying to pop unknown node %s') % node) |
7621
6d891df43a5f
mq: allow qpop if popped revisions are not working dir parents
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7620
diff
changeset
|
1807 |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
1808 if heads != [self.applied[-1].node]: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1809 raise error.Abort( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1810 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1811 b"popping would remove a revision not " |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1812 b"managed by this patch queue" |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1813 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1814 ) |
16048
140b6282ac79
mq: prevent rewriting operation on public changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16043
diff
changeset
|
1815 if not repo[self.applied[-1].node].mutable(): |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26578
diff
changeset
|
1816 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1817 _(b"popping would remove a public revision"), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1818 hint=_(b"see 'hg help phases' for details"), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1819 ) |
5980
dcda0c90125c
mq: pop/refresh: avoid losing revisions not managed by mq
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5979
diff
changeset
|
1820 |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1821 # we know there are no local changes, so we can make a simplified |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1822 # form of hg.update. |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1823 if update: |
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1824 qp = self.qparents(repo, rev) |
10663
85e81d9bfb7a
mq: simplify and use context API
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10662
diff
changeset
|
1825 ctx = repo[qp] |
43640
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1826 st = repo.status(qp, b'.') |
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1827 m, a, r, d = st.modified, st.added, st.removed, st.deleted |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1828 if d: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1829 raise error.Abort(_(b"deletions found between repo revs")) |
16633
b2ca2f40c9c1
mq: backup local changes in qpop --force (issue3433)
Patrick Mezard <patrick@mezard.eu>
parents:
16551
diff
changeset
|
1830 |
16653
73b8c2554be8
mq: introduce qpop --check
Patrick Mezard <patrick@mezard.eu>
parents:
16635
diff
changeset
|
1831 tobackup = set(a + m + r) & tobackup |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
1832 if keepchanges and tobackup: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1833 raise error.Abort(_(b"local changes found, qrefresh first")) |
16653
73b8c2554be8
mq: introduce qpop --check
Patrick Mezard <patrick@mezard.eu>
parents:
16635
diff
changeset
|
1834 self.backup(repo, tobackup) |
49961
7a8bfc05b691
dirstate: rename parentchange to changing_parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49960
diff
changeset
|
1835 with repo.dirstate.changing_parents(repo): |
32347
f4aee989ebec
mq: migrate to context manager for changing dirstate parents
Augie Fackler <augie@google.com>
parents:
32337
diff
changeset
|
1836 for f in a: |
f4aee989ebec
mq: migrate to context manager for changing dirstate parents
Augie Fackler <augie@google.com>
parents:
32337
diff
changeset
|
1837 repo.wvfs.unlinkpath(f, ignoremissing=True) |
47751
d25eb277e925
mq: replace `drop` call with newer API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47743
diff
changeset
|
1838 repo.dirstate.update_file( |
d25eb277e925
mq: replace `drop` call with newer API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47743
diff
changeset
|
1839 f, p1_tracked=False, wc_tracked=False |
d25eb277e925
mq: replace `drop` call with newer API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47743
diff
changeset
|
1840 ) |
32347
f4aee989ebec
mq: migrate to context manager for changing dirstate parents
Augie Fackler <augie@google.com>
parents:
32337
diff
changeset
|
1841 for f in m + r: |
f4aee989ebec
mq: migrate to context manager for changing dirstate parents
Augie Fackler <augie@google.com>
parents:
32337
diff
changeset
|
1842 fctx = ctx[f] |
f4aee989ebec
mq: migrate to context manager for changing dirstate parents
Augie Fackler <augie@google.com>
parents:
32337
diff
changeset
|
1843 repo.wwrite(f, fctx.data(), fctx.flags()) |
47717
d905eff405d1
mq: replace usage of `normal` with newer API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47697
diff
changeset
|
1844 repo.dirstate.update_file( |
d905eff405d1
mq: replace usage of `normal` with newer API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47697
diff
changeset
|
1845 f, p1_tracked=True, wc_tracked=True |
d905eff405d1
mq: replace usage of `normal` with newer API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47697
diff
changeset
|
1846 ) |
47012
d55b71393907
node: replace nullid and friends with nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46935
diff
changeset
|
1847 repo.setparents(qp, repo.nullid) |
9110
561ff8d9e4f0
mq: qpop now tells which patches are popped
Mads Kiilerich <mads@kiilerich.com>
parents:
9067
diff
changeset
|
1848 for patch in reversed(self.applied[start:end]): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1849 self.ui.status(_(b"popping %s\n") % patch.name) |
5987
f2201aee3dc8
qpop/qrefresh: update self.applied before calling strip
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5981
diff
changeset
|
1850 del self.applied[start:end] |
22057
445472225ccd
strip: remove -b/--backup codepaths
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22049
diff
changeset
|
1851 strip(self.ui, repo, [rev], update=False, backup=False) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1852 for s, state in repo[b'.'].substate.items(): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1853 repo[b'.'].sub(s).get(state) |
10686
0c68c2c36ed8
mq: don't use len(list) unless necessary
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10685
diff
changeset
|
1854 if self.applied: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1855 self.ui.write(_(b"now at: %s\n") % self.applied[-1].name) |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1856 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1857 self.ui.write(_(b"patch queue now empty\n")) |
1808 | 1858 |
2937
9dc568f5e03d
Fix test-mq-qdiff; add -I and -X options to qdiff
Brendan Cully <brendan@kublai.com>
parents:
2936
diff
changeset
|
1859 def diff(self, repo, pats, opts): |
14581
da40ee1adc2b
mq: rename check_toppatch to checktoppatch
Adrian Buehlmann <adrian@cadifra.com>
parents:
14580
diff
changeset
|
1860 top, patch = self.checktoppatch(repo) |
1808 | 1861 if not top: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1862 self.ui.write(_(b"no patches applied\n")) |
1808 | 1863 return |
1864 qp = self.qparents(repo, top) | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1865 if opts.get(b'reverse'): |
9725
3f522d2fa633
diff: add --inverse option
Yannick Gingras <ygingras@ygingras.net>
parents:
9642
diff
changeset
|
1866 node1, node2 = None, qp |
3f522d2fa633
diff: add --inverse option
Yannick Gingras <ygingras@ygingras.net>
parents:
9642
diff
changeset
|
1867 else: |
3f522d2fa633
diff: add --inverse option
Yannick Gingras <ygingras@ygingras.net>
parents:
9642
diff
changeset
|
1868 node1, node2 = qp, None |
10191
99d285ac5da4
mq: qdiff with the same diff options than qrefresh (issue1350)
Patrick Mezard <pmezard@gmail.com>
parents:
10190
diff
changeset
|
1869 diffopts = self.diffopts(opts, patch) |
10184
8a47347d298b
mq: stop caching and sharing diff options
Patrick Mezard <pmezard@gmail.com>
parents:
10114
diff
changeset
|
1870 self.printdiff(repo, diffopts, node1, node2, files=pats, opts=opts) |
1808 | 1871 |
2938
5b7a118f5b6c
allow qrefresh to take a list of files; closes #96.
Brendan Cully <brendan@kublai.com>
parents:
2937
diff
changeset
|
1872 def refresh(self, repo, pats=None, **opts): |
36387
dbf34d0ef9f6
py3: use pycompat.byteskwargs() to fix keyword arguments handling
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36343
diff
changeset
|
1873 opts = pycompat.byteskwargs(opts) |
10686
0c68c2c36ed8
mq: don't use len(list) unless necessary
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10685
diff
changeset
|
1874 if not self.applied: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1875 self.ui.write(_(b"no patches applied\n")) |
3004
ac74046f8f58
qrefresh: exit with status 1 if no patches applied.
Bryan O'Sullivan <bos@serpentine.com>
parents:
2984
diff
changeset
|
1876 return 1 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1877 msg = opts.get(b'msg', b'').rstrip() |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1878 edit = opts.get(b'edit') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1879 editform = opts.get(b'editform', b'mq.qrefresh') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1880 newuser = opts.get(b'user') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1881 newdate = opts.get(b'date') |
6139
989467e8e3a9
Fix bad behaviour when specifying an invalid date (issue700)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
6120
diff
changeset
|
1882 if newdate: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1883 newdate = b'%d %d' % dateutil.parsedate(newdate) |
1808 | 1884 wlock = repo.wlock() |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1885 |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
1886 try: |
14581
da40ee1adc2b
mq: rename check_toppatch to checktoppatch
Adrian Buehlmann <adrian@cadifra.com>
parents:
14580
diff
changeset
|
1887 self.checktoppatch(repo) |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
1888 (top, patchfn) = (self.applied[-1].node, self.applied[-1].name) |
5980
dcda0c90125c
mq: pop/refresh: avoid losing revisions not managed by mq
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5979
diff
changeset
|
1889 if repo.changelog.heads(top) != [top]: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1890 raise error.Abort( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1891 _(b"cannot qrefresh a revision with children") |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1892 ) |
16048
140b6282ac79
mq: prevent rewriting operation on public changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16043
diff
changeset
|
1893 if not repo[top].mutable(): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1894 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1895 _(b"cannot qrefresh public revision"), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1896 hint=_(b"see 'hg help phases' for details"), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1897 ) |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1898 |
17153
54da604fefee
mq: check subrepo synchronizations against parent of workdir or other appropriate context
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17152
diff
changeset
|
1899 cparents = repo.changelog.parents(top) |
54da604fefee
mq: check subrepo synchronizations against parent of workdir or other appropriate context
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17152
diff
changeset
|
1900 patchparent = self.qparents(repo, top) |
54da604fefee
mq: check subrepo synchronizations against parent of workdir or other appropriate context
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17152
diff
changeset
|
1901 |
37381
76823340a899
mq: avoid a silly conversion from binary nodeid to hex
Martin von Zweigbergk <martinvonz@google.com>
parents:
37262
diff
changeset
|
1902 inclsubs = checksubstate(repo, patchparent) |
17152
f287d4a62031
mq: create patch file after commit to import diff of ".hgsubstate" at qrefresh
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17151
diff
changeset
|
1903 if inclsubs: |
48092
0dc9ced02a3b
dirstate-item: use item's property to deal with hgsubstate in mq
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48091
diff
changeset
|
1904 substatestate = repo.dirstate.get_entry(b'.hgsubstate') |
13174
be7e8e9bc5e5
mq: update .hgsubstate if subrepos are clean (issue2499)
Kevin Bullock <kbullock@ringworld.org>
parents:
13173
diff
changeset
|
1905 |
10397
8cb81d75730c
mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents:
10382
diff
changeset
|
1906 ph = patchheader(self.join(patchfn), self.plainmode) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1907 diffopts = self.diffopts( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1908 {b'git': opts.get(b'git')}, patchfn, plain=True |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
1909 ) |
5673
dd3ce7515f4d
mq: add --currentuser and --user options to qnew and qrefresh
peter.arrenbrecht@gmail.com
parents:
5645
diff
changeset
|
1910 if newuser: |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
1911 ph.setuser(newuser) |
5788
4107e823dc2c
mq: add --currentdate and --date options to qnew and qrefresh
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
5673
diff
changeset
|
1912 if newdate: |
7399
e71bda2d2087
mq: create patch header class to abstract header manipulation
Brendan Cully <brendan@kublai.com>
parents:
7398
diff
changeset
|
1913 ph.setdate(newdate) |
10397
8cb81d75730c
mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents:
10382
diff
changeset
|
1914 ph.setparent(hex(patchparent)) |
5180
5bbbd1f1d586
mq: truncate patch just before rewriting header
Brendan Cully <brendan@kublai.com>
parents:
4930
diff
changeset
|
1915 |
7400
409a9b442308
mq: use atomictempfiles during patch refresh
Brendan Cully <brendan@kublai.com>
parents:
7399
diff
changeset
|
1916 # only commit new patch when write is complete |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1917 patchf = self.opener(patchfn, b'w', atomictemp=True) |
7400
409a9b442308
mq: use atomictempfiles during patch refresh
Brendan Cully <brendan@kublai.com>
parents:
7399
diff
changeset
|
1918 |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1919 # update the dirstate in place, strip off the qtip commit |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1920 # and then commit. |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1921 # |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1922 # this should really read: |
43640
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1923 # st = repo.status(top, patchparent) |
17425
e95ec38f86b0
fix wording and not-completely-trivial spelling errors and bad docstrings
Mads Kiilerich <mads@kiilerich.com>
parents:
17424
diff
changeset
|
1924 # but we do it backwards to take advantage of manifest/changelog |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1925 # caching against the next repo.status call |
43640
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1926 st = repo.status(patchparent, top) |
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1927 mm, aa, dd = st.modified, st.added, st.removed |
41779
6ed520c3e932
mq: slightly modernize by using context object
Martin von Zweigbergk <martinvonz@google.com>
parents:
41599
diff
changeset
|
1928 ctx = repo[top] |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1929 aaa = aa[:] |
34083
08346a8fa65f
cleanup: rename "matchfn" to "match" where obviously a matcher
Martin von Zweigbergk <martinvonz@google.com>
parents:
34022
diff
changeset
|
1930 match1 = scmutil.match(repo[None], pats, opts) |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1931 # in short mode, we only diff the files included in the |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1932 # patch already plus specified files |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
1933 if opts.get(b'short'): |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1934 # if amending a patch, we start with existing |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1935 # files plus specified files - unfiltered |
34083
08346a8fa65f
cleanup: rename "matchfn" to "match" where obviously a matcher
Martin von Zweigbergk <martinvonz@google.com>
parents:
34022
diff
changeset
|
1936 match = scmutil.matchfiles(repo, mm + aa + dd + match1.files()) |
17424
e7cfe3587ea4
fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents:
17191
diff
changeset
|
1937 # filter with include/exclude options |
34083
08346a8fa65f
cleanup: rename "matchfn" to "match" where obviously a matcher
Martin von Zweigbergk <martinvonz@google.com>
parents:
34022
diff
changeset
|
1938 match1 = scmutil.match(repo[None], opts=opts) |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1939 else: |
14322
a90131b85fd8
scmutil: drop aliases in cmdutil for match functions
Matt Mackall <mpm@selenic.com>
parents:
14319
diff
changeset
|
1940 match = scmutil.matchall(repo) |
43640
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1941 stb = repo.status(match=match) |
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1942 m, a, r, d = stb.modified, stb.added, stb.removed, stb.deleted |
12948
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1943 mm = set(mm) |
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1944 aa = set(aa) |
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1945 dd = set(dd) |
1808 | 1946 |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1947 # we might end up with files that were added between |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1948 # qtip and the dirstate parent, but then changed in the |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1949 # local dirstate. in this case, we want them to only |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1950 # show up in the added section |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1951 for x in m: |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1952 if x not in aa: |
12948
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1953 mm.add(x) |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1954 # we might end up with files added by the local dirstate that |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1955 # were deleted by the patch. In this case, they should only |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1956 # show up in the changed section. |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1957 for x in a: |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1958 if x in dd: |
12948
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1959 dd.remove(x) |
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1960 mm.add(x) |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1961 else: |
12948
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1962 aa.add(x) |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1963 # make sure any files deleted in the local dirstate |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1964 # are not in the add or change column of the patch |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1965 forget = [] |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1966 for x in d + r: |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1967 if x in aa: |
12948
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1968 aa.remove(x) |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1969 forget.append(x) |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
1970 continue |
12948
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1971 else: |
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1972 mm.discard(x) |
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1973 dd.add(x) |
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1974 |
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1975 m = list(mm) |
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1976 r = list(dd) |
de6a28ff5ffc
mq: use sets instead of lists for speed
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
12879
diff
changeset
|
1977 a = list(aa) |
17888
39b7052b217b
mq: fix qrefresh case sensitivity (issue3271)
Durham Goode <durham@fb.com>
parents:
17887
diff
changeset
|
1978 |
18644
3e92772d5383
spelling: fix some minor issues found by spell checker
Mads Kiilerich <mads@kiilerich.com>
parents:
18371
diff
changeset
|
1979 # create 'match' that includes the files to be recommitted. |
34083
08346a8fa65f
cleanup: rename "matchfn" to "match" where obviously a matcher
Martin von Zweigbergk <martinvonz@google.com>
parents:
34022
diff
changeset
|
1980 # apply match1 via repo.status to ensure correct case handling. |
43640
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1981 st = repo.status(patchparent, match=match1) |
2d5b991c2192
mq: use field names instead of field numbers on scmutil.status
Augie Fackler <augie@google.com>
parents:
43506
diff
changeset
|
1982 cm, ca, cr, cd = st.modified, st.added, st.removed, st.deleted |
17888
39b7052b217b
mq: fix qrefresh case sensitivity (issue3271)
Durham Goode <durham@fb.com>
parents:
17887
diff
changeset
|
1983 allmatches = set(cm + ca + cr + cd) |
39b7052b217b
mq: fix qrefresh case sensitivity (issue3271)
Durham Goode <durham@fb.com>
parents:
17887
diff
changeset
|
1984 refreshchanges = [x.intersection(allmatches) for x in (mm, aa, dd)] |
39b7052b217b
mq: fix qrefresh case sensitivity (issue3271)
Durham Goode <durham@fb.com>
parents:
17887
diff
changeset
|
1985 |
39b7052b217b
mq: fix qrefresh case sensitivity (issue3271)
Durham Goode <durham@fb.com>
parents:
17887
diff
changeset
|
1986 files = set(inclsubs) |
39b7052b217b
mq: fix qrefresh case sensitivity (issue3271)
Durham Goode <durham@fb.com>
parents:
17887
diff
changeset
|
1987 for x in refreshchanges: |
20827
ca5dd216cb62
localrepo: omit ".hgsubstate" also from "added" files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
20790
diff
changeset
|
1988 files.update(x) |
17888
39b7052b217b
mq: fix qrefresh case sensitivity (issue3271)
Durham Goode <durham@fb.com>
parents:
17887
diff
changeset
|
1989 match = scmutil.matchfiles(repo, files) |
39b7052b217b
mq: fix qrefresh case sensitivity (issue3271)
Durham Goode <durham@fb.com>
parents:
17887
diff
changeset
|
1990 |
17730
6c6987761e42
mq: update bookmarks during qrefresh
David Soria Parra <dsp@php.net>
parents:
17708
diff
changeset
|
1991 bmlist = repo[top].bookmarks() |
1808 | 1992 |
49961
7a8bfc05b691
dirstate: rename parentchange to changing_parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49960
diff
changeset
|
1993 with repo.dirstate.changing_parents(repo): |
50061
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
1994 if diffopts.git or diffopts.upgrade: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
1995 copies = {} |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
1996 for dst in a: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
1997 src = repo.dirstate.copied(dst) |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
1998 # during qfold, the source file for copies may |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
1999 # be removed. Treat this as a simple add. |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2000 if src is not None and src in repo.dirstate: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2001 copies.setdefault(src, []).append(dst) |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2002 repo.dirstate.update_file( |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2003 dst, p1_tracked=False, wc_tracked=True |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2004 ) |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2005 # remember the copies between patchparent and qtip |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2006 for dst in aaa: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2007 src = ctx[dst].copysource() |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2008 if src: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2009 copies.setdefault(src, []).extend( |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2010 copies.get(dst, []) |
47756
7a06e04cbd68
mq: replace `add` call with newer API
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47751
diff
changeset
|
2011 ) |
50061
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2012 if dst in a: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2013 copies[src].append(dst) |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2014 # we can't copy a file created by the patch itself |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2015 if dst in copies: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2016 del copies[dst] |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2017 for src, dsts in copies.items(): |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2018 for dst in dsts: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2019 repo.dirstate.copy(src, dst) |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2020 else: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2021 for dst in a: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2022 repo.dirstate.update_file( |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2023 dst, p1_tracked=False, wc_tracked=True |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2024 ) |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2025 # Drop useless copy information |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2026 for f in list(repo.dirstate.copies()): |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2027 repo.dirstate.copy(None, f) |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2028 for f in r: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2029 repo.dirstate.update_file_p1(f, p1_tracked=True) |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2030 # if the patch excludes a modified file, mark that |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2031 # file with mtime=0 so status can see it. |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2032 mm = [] |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2033 for i in range(len(m) - 1, -1, -1): |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2034 if not match1(m[i]): |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2035 mm.append(m[i]) |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2036 del m[i] |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2037 for f in m: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2038 repo.dirstate.update_file_p1(f, p1_tracked=True) |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2039 for f in mm: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2040 repo.dirstate.update_file_p1(f, p1_tracked=True) |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2041 for f in forget: |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2042 repo.dirstate.update_file_p1(f, p1_tracked=False) |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2043 |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2044 user = ph.user or ctx.user() |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2045 |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2046 oldphase = repo[top].phase() |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2047 |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2048 # assumes strip can roll itself back if interrupted |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2049 repo.setparents(*cparents) |
50080
2a46555c5522
mq: write the dirstate before stripping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50061
diff
changeset
|
2050 repo.dirstate.write(repo.currenttransaction()) |
50061
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2051 self.applied.pop() |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2052 self.applieddirty = True |
64b3cc021833
dirstate-guard: remove it usage in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50047
diff
changeset
|
2053 strip(self.ui, repo, [top], update=False, backup=False) |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
2054 |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
2055 try: |
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
2056 # might be nice to attempt to roll back strip after this |
16100
24df9338aa01
mq: ensure all mq commits are made with secretcommit()
Patrick Mezard <patrick@mezard.eu>
parents:
16064
diff
changeset
|
2057 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2058 defaultmsg = b"[mq]: %s" % patchfn |
22003
cbbd957358ff
mq: pass 'editform' argument to 'cmdutil.getcommiteditor'
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21965
diff
changeset
|
2059 editor = cmdutil.getcommiteditor(editform=editform) |
21422
edc6ced48d2d
mq: fold the code paths to invoke editor into specific logic (qrefresh/qfold)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21421
diff
changeset
|
2060 if edit: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2061 |
21423
7d408720453d
mq: use the editor gotten by "getcommiteditor()" instead of "ui.edit()" (qrefresh/qfold)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21422
diff
changeset
|
2062 def finishdesc(desc): |
21236
49148d7868df
qrefresh: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21235
diff
changeset
|
2063 if desc.rstrip(): |
49148d7868df
qrefresh: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21235
diff
changeset
|
2064 ph.setmessage(desc) |
49148d7868df
qrefresh: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21235
diff
changeset
|
2065 return desc |
49148d7868df
qrefresh: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21235
diff
changeset
|
2066 return defaultmsg |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2067 |
21423
7d408720453d
mq: use the editor gotten by "getcommiteditor()" instead of "ui.edit()" (qrefresh/qfold)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21422
diff
changeset
|
2068 # i18n: this message is shown in editor with "HG: " prefix |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2069 extramsg = _(b'Leave message empty to use default message.') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2070 editor = cmdutil.getcommiteditor( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2071 finishdesc=finishdesc, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2072 extramsg=extramsg, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2073 editform=editform, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2074 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2075 message = msg or b"\n".join(ph.message) |
21236
49148d7868df
qrefresh: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21235
diff
changeset
|
2076 elif not msg: |
21235
51069bf6366b
qrefresh: relocate message/patch-header handling to delay message determination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21234
diff
changeset
|
2077 if not ph.message: |
21236
49148d7868df
qrefresh: use "editor" argument of "commit()" instead of explicit "ui.edit()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21235
diff
changeset
|
2078 message = defaultmsg |
21235
51069bf6366b
qrefresh: relocate message/patch-header handling to delay message determination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21234
diff
changeset
|
2079 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2080 message = b"\n".join(ph.message) |
21235
51069bf6366b
qrefresh: relocate message/patch-header handling to delay message determination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21234
diff
changeset
|
2081 else: |
51069bf6366b
qrefresh: relocate message/patch-header handling to delay message determination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21234
diff
changeset
|
2082 message = msg |
51069bf6366b
qrefresh: relocate message/patch-header handling to delay message determination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21234
diff
changeset
|
2083 ph.setmessage(msg) |
51069bf6366b
qrefresh: relocate message/patch-header handling to delay message determination
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21234
diff
changeset
|
2084 |
16100
24df9338aa01
mq: ensure all mq commits are made with secretcommit()
Patrick Mezard <patrick@mezard.eu>
parents:
16064
diff
changeset
|
2085 # Ensure we create a new changeset in the same phase than |
24df9338aa01
mq: ensure all mq commits are made with secretcommit()
Patrick Mezard <patrick@mezard.eu>
parents:
16064
diff
changeset
|
2086 # the old one. |
27001
c07a2fd31970
mq: use repo._bookmarks.recordchange instead of repo._bookmarks.write
Laurent Charignon <lcharignon@fb.com>
parents:
27000
diff
changeset
|
2087 lock = tr = None |
c07a2fd31970
mq: use repo._bookmarks.recordchange instead of repo._bookmarks.write
Laurent Charignon <lcharignon@fb.com>
parents:
27000
diff
changeset
|
2088 try: |
c07a2fd31970
mq: use repo._bookmarks.recordchange instead of repo._bookmarks.write
Laurent Charignon <lcharignon@fb.com>
parents:
27000
diff
changeset
|
2089 lock = repo.lock() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2090 tr = repo.transaction(b'mq') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2091 n = newcommit( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2092 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2093 oldphase, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2094 message, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2095 user, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2096 ph.date, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2097 match=match, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2098 force=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2099 editor=editor, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2100 ) |
27000
05d8db5d2116
mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com>
parents:
26943
diff
changeset
|
2101 # only write patch after a successful commit |
05d8db5d2116
mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com>
parents:
26943
diff
changeset
|
2102 c = [list(x) for x in refreshchanges] |
05d8db5d2116
mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com>
parents:
26943
diff
changeset
|
2103 if inclsubs: |
05d8db5d2116
mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com>
parents:
26943
diff
changeset
|
2104 self.putsubstate2changes(substatestate, c) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2105 chunks = patchmod.diff( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2106 repo, patchparent, changes=c, opts=diffopts |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2107 ) |
35948
f87641bf4d23
py3: use bytes instead of str
Pulkit Goyal <7895pulkit@gmail.com>
parents:
35918
diff
changeset
|
2108 comments = bytes(ph) |
27000
05d8db5d2116
mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com>
parents:
26943
diff
changeset
|
2109 if comments: |
05d8db5d2116
mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com>
parents:
26943
diff
changeset
|
2110 patchf.write(comments) |
05d8db5d2116
mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com>
parents:
26943
diff
changeset
|
2111 for chunk in chunks: |
05d8db5d2116
mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com>
parents:
26943
diff
changeset
|
2112 patchf.write(chunk) |
05d8db5d2116
mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com>
parents:
26943
diff
changeset
|
2113 patchf.close() |
05d8db5d2116
mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com>
parents:
26943
diff
changeset
|
2114 |
05d8db5d2116
mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com>
parents:
26943
diff
changeset
|
2115 marks = repo._bookmarks |
33489
870560c759ed
bookmark: use 'applychanges' in the mq extension
Boris Feld <boris.feld@octobus.net>
parents:
32375
diff
changeset
|
2116 marks.applychanges(repo, tr, [(bm, n) for bm in bmlist]) |
27001
c07a2fd31970
mq: use repo._bookmarks.recordchange instead of repo._bookmarks.write
Laurent Charignon <lcharignon@fb.com>
parents:
27000
diff
changeset
|
2117 tr.close() |
27000
05d8db5d2116
mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com>
parents:
26943
diff
changeset
|
2118 |
05d8db5d2116
mq: indentation change to make the next patch more legible
Laurent Charignon <lcharignon@fb.com>
parents:
26943
diff
changeset
|
2119 self.applied.append(statusentry(n, patchfn)) |
27001
c07a2fd31970
mq: use repo._bookmarks.recordchange instead of repo._bookmarks.write
Laurent Charignon <lcharignon@fb.com>
parents:
27000
diff
changeset
|
2120 finally: |
30070
3006d0d26ad3
mq: release lock after transaction in qrefresh
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29968
diff
changeset
|
2121 lockmod.release(tr, lock) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2122 except: # re-raises |
50111
0ca8dc8a135f
mq: wrap the dirstate's rebuild in a `changing_parents` context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50080
diff
changeset
|
2123 with repo.dirstate.changing_parents(repo): |
0ca8dc8a135f
mq: wrap the dirstate's rebuild in a `changing_parents` context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50080
diff
changeset
|
2124 ctx = repo[cparents[0]] |
0ca8dc8a135f
mq: wrap the dirstate's rebuild in a `changing_parents` context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50080
diff
changeset
|
2125 repo.dirstate.rebuild(ctx.node(), ctx.manifest()) |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
2126 self.savedirty() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2127 self.ui.warn( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2128 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2129 b'qrefresh interrupted while patch was popped! ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2130 b'(revert --all, qpush to recover)\n' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2131 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2132 ) |
10366
d355cebde5e6
mq: remove qrefresh slow path (issue2025)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10274
diff
changeset
|
2133 raise |
4915
97b734fb9c6f
Use try/finally pattern to cleanup locks and transactions
Matt Mackall <mpm@selenic.com>
parents:
4906
diff
changeset
|
2134 finally: |
8112
6ee71f78497c
switch lock releasing in the extensions from gc to explicit
Ronny Pfannschmidt <Ronny.Pfannschmidt@gmx.de>
parents:
8076
diff
changeset
|
2135 wlock.release() |
7401
41e87b4d0c9d
mq: recover more gracefully from interrupted qrefresh (issue1216)
Brendan Cully <brendan@kublai.com>
parents:
7400
diff
changeset
|
2136 self.removeundo(repo) |
1808 | 2137 |
2138 def init(self, repo, create=False): | |
4071
165abe554c80
mq: qinit -c creates a repo even after a regular qinit
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4068
diff
changeset
|
2139 if not create and os.path.isdir(self.path): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2140 raise error.Abort(_(b"patch queue directory already exists")) |
4071
165abe554c80
mq: qinit -c creates a repo even after a regular qinit
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4068
diff
changeset
|
2141 try: |
165abe554c80
mq: qinit -c creates a repo even after a regular qinit
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4068
diff
changeset
|
2142 os.mkdir(self.path) |
49305
53e9422a9b45
py3: catch FileExistsError instead of checking errno == EEXIST
Manuel Jacob <me@manueljacob.de>
parents:
49284
diff
changeset
|
2143 except FileExistsError: |
53e9422a9b45
py3: catch FileExistsError instead of checking errno == EEXIST
Manuel Jacob <me@manueljacob.de>
parents:
49284
diff
changeset
|
2144 if not create: |
4071
165abe554c80
mq: qinit -c creates a repo even after a regular qinit
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4068
diff
changeset
|
2145 raise |
1808 | 2146 if create: |
2147 return self.qrepo(create=True) | |
2148 | |
2149 def unapplied(self, repo, patch=None): | |
2150 if patch and patch not in self.series: | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2151 raise error.Abort(_(b"patch %s is not in series file") % patch) |
1808 | 2152 if not patch: |
14586
af91cb281975
mq: rename series_end to seriesend
Adrian Buehlmann <adrian@cadifra.com>
parents:
14585
diff
changeset
|
2153 start = self.seriesend() |
1808 | 2154 else: |
2155 start = self.series.index(patch) + 1 | |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
2156 unapplied = [] |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
2157 for i in range(start, len(self.series)): |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
2158 pushable, reason = self.pushable(i) |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
2159 if pushable: |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
2160 unapplied.append((i, self.series[i])) |
14579
f7b25764d974
mq: rename explain_pushable to explainpushable
Adrian Buehlmann <adrian@cadifra.com>
parents:
14578
diff
changeset
|
2161 self.explainpushable(i) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
2162 return unapplied |
1810
7596611ab3d5
Whitespace, tab and formatting cleanups, mainly in mq.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1808
diff
changeset
|
2163 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2164 def qseries( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2165 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2166 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2167 missing=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2168 start=0, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2169 length=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2170 status=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2171 summary=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2172 ): |
10824
18def0d5692d
qseries: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10823
diff
changeset
|
2173 def displayname(pfx, patchname, state): |
10932
29c39fe2491b
mq: only highlight/label patch name for qseries.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10890
diff
changeset
|
2174 if pfx: |
29c39fe2491b
mq: only highlight/label patch name for qseries.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
10890
diff
changeset
|
2175 self.ui.write(pfx) |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2176 if summary: |
10397
8cb81d75730c
mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents:
10382
diff
changeset
|
2177 ph = patchheader(self.join(patchname), self.plainmode) |
24306
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
2178 if ph.message: |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
2179 msg = ph.message[0] |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
2180 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2181 msg = b'' |
24306
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
2182 |
11327
6c469f2f9f12
mq: use ui.formatted() instead of ui.plain().
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11321
diff
changeset
|
2183 if self.ui.formatted(): |
12689
c52c629ce19e
termwidth: move to ui.ui from util
Augie Fackler <durin42@gmail.com>
parents:
12682
diff
changeset
|
2184 width = self.ui.termwidth() - len(pfx) - len(patchname) - 2 |
9874
c51494c53841
qseries: don't truncate the patch name (issue1912)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9867
diff
changeset
|
2185 if width > 0: |
37084
f0b6fbea00cf
stringutil: bulk-replace call sites to point to new module
Yuya Nishihara <yuya@tcha.org>
parents:
36668
diff
changeset
|
2186 msg = stringutil.ellipsis(msg, width) |
9874
c51494c53841
qseries: don't truncate the patch name (issue1912)
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
9867
diff
changeset
|
2187 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2188 msg = b'' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2189 self.ui.write(patchname, label=b'qseries.' + state) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2190 self.ui.write(b': ') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2191 self.ui.write(msg, label=b'qseries.message.' + state) |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2192 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2193 self.ui.write(patchname, label=b'qseries.' + state) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2194 self.ui.write(b'\n') |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2195 |
42057
566daffc607d
cleanup: use set literals where possible
Martin von Zweigbergk <martinvonz@google.com>
parents:
42002
diff
changeset
|
2196 applied = {p.name for p in self.applied} |
4239
417c2068cb92
Simplified qseries and hg qapplied to fix some bugs caused by optimization:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4238
diff
changeset
|
2197 if length is None: |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2198 length = len(self.series) - start |
1808 | 2199 if not missing: |
9016
894c5b4be275
mq: align columns in verbose qseries output.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
8948
diff
changeset
|
2200 if self.ui.verbose: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2201 idxwidth = len(b"%d" % (start + length - 1)) |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
2202 for i in range(start, start + length): |
4239
417c2068cb92
Simplified qseries and hg qapplied to fix some bugs caused by optimization:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4238
diff
changeset
|
2203 patch = self.series[i] |
417c2068cb92
Simplified qseries and hg qapplied to fix some bugs caused by optimization:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4238
diff
changeset
|
2204 if patch in applied: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2205 char, state = b'A', b'applied' |
4239
417c2068cb92
Simplified qseries and hg qapplied to fix some bugs caused by optimization:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4238
diff
changeset
|
2206 elif self.pushable(i)[0]: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2207 char, state = b'U', b'unapplied' |
4239
417c2068cb92
Simplified qseries and hg qapplied to fix some bugs caused by optimization:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4238
diff
changeset
|
2208 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2209 char, state = b'G', b'guarded' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2210 pfx = b'' |
1808 | 2211 if self.ui.verbose: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2212 pfx = b'%*d %s ' % (idxwidth, i, char) |
10824
18def0d5692d
qseries: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10823
diff
changeset
|
2213 elif status and status != char: |
4238
ce6c364ebb2a
Fix issue443: inconsistent output of "hg qunapplied -v"
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4173
diff
changeset
|
2214 continue |
10824
18def0d5692d
qseries: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10823
diff
changeset
|
2215 displayname(pfx, patch, state) |
1808 | 2216 else: |
2794
86c54b7cd331
mq: fix variables shadowing builtin
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2792
diff
changeset
|
2217 msng_list = [] |
1808 | 2218 for root, dirs, files in os.walk(self.path): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2219 d = root[len(self.path) + 1 :] |
1808 | 2220 for f in files: |
2221 fl = os.path.join(d, f) | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2222 if ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2223 fl not in self.series |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2224 and fl |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2225 not in ( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2226 self.statuspath, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2227 self.seriespath, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2228 self.guardspath, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2229 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2230 and not fl.startswith(b'.') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2231 ): |
2794
86c54b7cd331
mq: fix variables shadowing builtin
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2792
diff
changeset
|
2232 msng_list.append(fl) |
8209
a1a5a57efe90
replace util.sort with sorted built-in
Matt Mackall <mpm@selenic.com>
parents:
8188
diff
changeset
|
2233 for x in sorted(msng_list): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2234 pfx = self.ui.verbose and b'D ' or b'' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2235 displayname(pfx, x, b'missing') |
1808 | 2236 |
2237 def issaveline(self, l): | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2238 if l.name == b'.hg.patches.save.line': |
1808 | 2239 return True |
2240 | |
2241 def qrepo(self, create=False): | |
19064
743daa601445
mq: do not inherit settings form base repo in mqrepo (Fixes issue2358)
Simon Heimberg <simohe@besonet.ch>
parents:
18958
diff
changeset
|
2242 ui = self.baseui.copy() |
34918
274811627808
mq: copy pager attributes back to qrepo.ui
Yuya Nishihara <yuya@tcha.org>
parents:
34562
diff
changeset
|
2243 # copy back attributes set by ui.pager() |
274811627808
mq: copy pager attributes back to qrepo.ui
Yuya Nishihara <yuya@tcha.org>
parents:
34562
diff
changeset
|
2244 if self.ui.pageractive and not ui.pageractive: |
274811627808
mq: copy pager attributes back to qrepo.ui
Yuya Nishihara <yuya@tcha.org>
parents:
34562
diff
changeset
|
2245 ui.pageractive = self.ui.pageractive |
274811627808
mq: copy pager attributes back to qrepo.ui
Yuya Nishihara <yuya@tcha.org>
parents:
34562
diff
changeset
|
2246 # internal config: ui.formatted |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2247 ui.setconfig( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2248 b'ui', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2249 b'formatted', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2250 self.ui.config(b'ui', b'formatted'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2251 b'mqpager', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2252 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2253 ui.setconfig( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2254 b'ui', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2255 b'interactive', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2256 self.ui.config(b'ui', b'interactive'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2257 b'mqpager', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2258 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2259 if create or os.path.isdir(self.join(b".hg")): |
11965
77f1f206e135
mq: don't inherit default and default-push paths with --mq (issue2333)
Mads Kiilerich <mads@kiilerich.com>
parents:
11715
diff
changeset
|
2260 return hg.repository(ui, path=self.path, create=create) |
1808 | 2261 |
2262 def restore(self, repo, rev, delete=None, qupdate=None): | |
10681
3f6a6407a3c7
mq: use context API
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10680
diff
changeset
|
2263 desc = repo[rev].description().strip() |
1808 | 2264 lines = desc.splitlines() |
2265 datastart = None | |
2266 series = [] | |
2267 applied = [] | |
2268 qpp = None | |
8632
9e055cfdd620
replace "i in range(len(xs))" with "i, x in enumerate(xs)"
Martin Geisler <mg@lazybytes.net>
parents:
8624
diff
changeset
|
2269 for i, line in enumerate(lines): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2270 if line == b'Patch Data:': |
1808 | 2271 datastart = i + 1 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2272 elif line.startswith(b'Dirstate:'): |
8632
9e055cfdd620
replace "i in range(len(xs))" with "i, x in enumerate(xs)"
Martin Geisler <mg@lazybytes.net>
parents:
8624
diff
changeset
|
2273 l = line.rstrip() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2274 l = l[10:].split(b' ') |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10276
diff
changeset
|
2275 qpp = [bin(x) for x in l] |
13031
3da456d0c885
code style: prefer 'is' and 'is not' tests with singletons
Martin Geisler <mg@aragost.com>
parents:
13005
diff
changeset
|
2276 elif datastart is not None: |
8632
9e055cfdd620
replace "i in range(len(xs))" with "i, x in enumerate(xs)"
Martin Geisler <mg@lazybytes.net>
parents:
8624
diff
changeset
|
2277 l = line.rstrip() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2278 n, name = l.split(b':', 1) |
10683
cfbf064f0069
mq: qsave creates entries with the left part empty (':patchname')
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10682
diff
changeset
|
2279 if n: |
cfbf064f0069
mq: qsave creates entries with the left part empty (':patchname')
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10682
diff
changeset
|
2280 applied.append(statusentry(bin(n), name)) |
3185
b3e103c388fc
mq: don't write applied patches into series twice in restore
Brendan Cully <brendan@kublai.com>
parents:
3184
diff
changeset
|
2281 else: |
10682
8ed350051896
mq: simplify statusentry(), fix restore broken by ee48e5ef8753
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10681
diff
changeset
|
2282 series.append(l) |
8527
f9a80054dd3c
use 'x is None' instead of 'x == None'
Martin Geisler <mg@lazybytes.net>
parents:
8525
diff
changeset
|
2283 if datastart is None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2284 self.ui.warn(_(b"no saved patch data found\n")) |
1808 | 2285 return 1 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2286 self.ui.warn(_(b"restoring status: %s\n") % lines[0]) |
14572
8ff2957c1d82
mq: rename full_series to fullseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14564
diff
changeset
|
2287 self.fullseries = series |
1808 | 2288 self.applied = applied |
14575
845c864200d0
mq: rename parse_series to parseseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14574
diff
changeset
|
2289 self.parseseries() |
15879
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
2290 self.seriesdirty = True |
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
2291 self.applieddirty = True |
1808 | 2292 heads = repo.changelog.heads() |
2293 if delete: | |
2294 if rev not in heads: | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2295 self.ui.warn(_(b"save entry has children, leaving it alone\n")) |
1808 | 2296 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2297 self.ui.warn(_(b"removing save entry %s\n") % short(rev)) |
1808 | 2298 pp = repo.dirstate.parents() |
2299 if rev in pp: | |
2300 update = True | |
2301 else: | |
2302 update = False | |
22057
445472225ccd
strip: remove -b/--backup codepaths
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
22049
diff
changeset
|
2303 strip(self.ui, repo, [rev], update=update, backup=False) |
1808 | 2304 if qpp: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2305 self.ui.warn( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2306 _(b"saved queue repository parents: %s %s\n") |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2307 % (short(qpp[0]), short(qpp[1])) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2308 ) |
1808 | 2309 if qupdate: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2310 self.ui.status(_(b"updating queue directory\n")) |
1808 | 2311 r = self.qrepo() |
2312 if not r: | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2313 self.ui.warn(_(b"unable to load queue repository\n")) |
1808 | 2314 return 1 |
2808
30f59f4a327e
Introduce update helper functions: update, merge, clean, and revert
Matt Mackall <mpm@selenic.com>
parents:
2804
diff
changeset
|
2315 hg.clean(r, qpp[0]) |
1808 | 2316 |
2317 def save(self, repo, msg=None): | |
10686
0c68c2c36ed8
mq: don't use len(list) unless necessary
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10685
diff
changeset
|
2318 if not self.applied: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2319 self.ui.warn(_(b"save: no patches applied, exiting\n")) |
1808 | 2320 return 1 |
2321 if self.issaveline(self.applied[-1]): | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2322 self.ui.warn(_(b"status is already saved\n")) |
1808 | 2323 return 1 |
1810
7596611ab3d5
Whitespace, tab and formatting cleanups, mainly in mq.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1808
diff
changeset
|
2324 |
1808 | 2325 if not msg: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2326 msg = _(b"hg patches saved state") |
1808 | 2327 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2328 msg = b"hg patches: " + msg.rstrip(b'\r\n') |
1808 | 2329 r = self.qrepo() |
2330 if r: | |
2331 pp = r.dirstate.parents() | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2332 msg += b"\nDirstate: %s %s" % (hex(pp[0]), hex(pp[1])) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2333 msg += b"\n\nPatch Data:\n" |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2334 msg += b''.join(b'%s\n' % x for x in self.applied) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2335 msg += b''.join(b':%s\n' % x for x in self.fullseries) |
10679
35abaea778dc
mq: simplify commit message generation
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10678
diff
changeset
|
2336 n = repo.commit(msg, force=True) |
1808 | 2337 if not n: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2338 self.ui.warn(_(b"repo commit failed\n")) |
1808 | 2339 return 1 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2340 self.applied.append(statusentry(n, b'.hg.patches.save.line')) |
15879
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
2341 self.applieddirty = True |
4209
dbc3846c09a1
Merge with -stable, fix small test failure
Matt Mackall <mpm@selenic.com>
parents:
4207
diff
changeset
|
2342 self.removeundo(repo) |
1808 | 2343 |
14585
74bf9c84cfd0
mq: rename full_series_end to fullseriesend
Adrian Buehlmann <adrian@cadifra.com>
parents:
14584
diff
changeset
|
2344 def fullseriesend(self): |
10686
0c68c2c36ed8
mq: don't use len(list) unless necessary
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10685
diff
changeset
|
2345 if self.applied: |
2780
ee48e5ef8753
Use StatusEntry class instead of repeated status line parsing.
Brendan Cully <brendan@kublai.com>
parents:
2765
diff
changeset
|
2346 p = self.applied[-1].name |
14574
12fba7bcb4f1
mq: rename find_series to findseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14573
diff
changeset
|
2347 end = self.findseries(p) |
8527
f9a80054dd3c
use 'x is None' instead of 'x == None'
Martin Geisler <mg@lazybytes.net>
parents:
8525
diff
changeset
|
2348 if end is None: |
14572
8ff2957c1d82
mq: rename full_series to fullseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14564
diff
changeset
|
2349 return len(self.fullseries) |
2698
c1123e83c8e2
mq: fix qnew and qimport to deal with series file comments
Chris Mason <mason@suse.com>
parents:
2697
diff
changeset
|
2350 return end + 1 |
c1123e83c8e2
mq: fix qnew and qimport to deal with series file comments
Chris Mason <mason@suse.com>
parents:
2697
diff
changeset
|
2351 return 0 |
c1123e83c8e2
mq: fix qnew and qimport to deal with series file comments
Chris Mason <mason@suse.com>
parents:
2697
diff
changeset
|
2352 |
14586
af91cb281975
mq: rename series_end to seriesend
Adrian Buehlmann <adrian@cadifra.com>
parents:
14585
diff
changeset
|
2353 def seriesend(self, all_patches=False): |
4406
f700ea2b0689
mq: fix qtop failure when the series ends with guarded patches.
Patrick Mezard <pmezard@gmail.com>
parents:
4341
diff
changeset
|
2354 """If all_patches is False, return the index of the next pushable patch |
f700ea2b0689
mq: fix qtop failure when the series ends with guarded patches.
Patrick Mezard <pmezard@gmail.com>
parents:
4341
diff
changeset
|
2355 in the series, or the series length. If all_patches is True, return the |
f700ea2b0689
mq: fix qtop failure when the series ends with guarded patches.
Patrick Mezard <pmezard@gmail.com>
parents:
4341
diff
changeset
|
2356 index of the first patch past the last applied one. |
f700ea2b0689
mq: fix qtop failure when the series ends with guarded patches.
Patrick Mezard <pmezard@gmail.com>
parents:
4341
diff
changeset
|
2357 """ |
1808 | 2358 end = 0 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2359 |
19500
a96565abbd59
mq: rename next() to nextpatch() to avoid confusing a future check-code patch
Augie Fackler <raf@durin42.com>
parents:
19481
diff
changeset
|
2360 def nextpatch(start): |
10687
583adcf63f80
mq: use xrange/enumerate instead of += 1
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10686
diff
changeset
|
2361 if all_patches or start >= len(self.series): |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
2362 return start |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
2363 for i in range(start, len(self.series)): |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
2364 p, reason = self.pushable(i) |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
2365 if p: |
16063
c36db39b3fee
mq: fix qnext when all remaining patches are guarded
Patrick Mezard <pmezard@gmail.com>
parents:
16048
diff
changeset
|
2366 return i |
14579
f7b25764d974
mq: rename explain_pushable to explainpushable
Adrian Buehlmann <adrian@cadifra.com>
parents:
14578
diff
changeset
|
2367 self.explainpushable(i) |
16063
c36db39b3fee
mq: fix qnext when all remaining patches are guarded
Patrick Mezard <pmezard@gmail.com>
parents:
16048
diff
changeset
|
2368 return len(self.series) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2369 |
10686
0c68c2c36ed8
mq: don't use len(list) unless necessary
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10685
diff
changeset
|
2370 if self.applied: |
2780
ee48e5ef8753
Use StatusEntry class instead of repeated status line parsing.
Brendan Cully <brendan@kublai.com>
parents:
2765
diff
changeset
|
2371 p = self.applied[-1].name |
1808 | 2372 try: |
2373 end = self.series.index(p) | |
2374 except ValueError: | |
2375 return 0 | |
19500
a96565abbd59
mq: rename next() to nextpatch() to avoid confusing a future check-code patch
Augie Fackler <raf@durin42.com>
parents:
19481
diff
changeset
|
2376 return nextpatch(end + 1) |
a96565abbd59
mq: rename next() to nextpatch() to avoid confusing a future check-code patch
Augie Fackler <raf@durin42.com>
parents:
19481
diff
changeset
|
2377 return nextpatch(end) |
1808 | 2378 |
2379 def appliedname(self, index): | |
2780
ee48e5ef8753
Use StatusEntry class instead of repeated status line parsing.
Brendan Cully <brendan@kublai.com>
parents:
2765
diff
changeset
|
2380 pname = self.applied[index].name |
1808 | 2381 if not self.ui.verbose: |
2677
ec05ce9cbf47
mq: uniform verbose display of patche[s].
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
2664
diff
changeset
|
2382 p = pname |
ec05ce9cbf47
mq: uniform verbose display of patche[s].
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
2664
diff
changeset
|
2383 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2384 p = (b"%d" % self.series.index(pname)) + b" " + pname |
1808 | 2385 return p |
1810
7596611ab3d5
Whitespace, tab and formatting cleanups, mainly in mq.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1808
diff
changeset
|
2386 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2387 def qimport( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2388 self, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2389 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2390 files, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2391 patchname=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2392 rev=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2393 existing=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2394 force=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2395 git=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2396 ): |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2397 def checkseries(patchname): |
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2398 if patchname in self.series: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2399 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2400 _(b'patch %s is already in the series file') % patchname |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2401 ) |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2402 |
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2403 if rev: |
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2404 if files: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2405 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
2406 _(b'option "-r" not valid when importing files') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2407 ) |
48116
5ced12cfa41b
errors: raise InputError on bad revset to revrange() iff provided by the user
Martin von Zweigbergk <martinvonz@google.com>
parents:
48092
diff
changeset
|
2408 rev = logcmdutil.revrange(repo, rev) |
9032
1fa80c5428b8
compat: use 'key' argument instead of 'cmp' when sorting a list
Alejandro Santos <alejolp@alejolp.com>
parents:
9016
diff
changeset
|
2409 rev.sort(reverse=True) |
16987
54295c87eefc
mq: abort if no files or revisions are specified for qimport
Thomas Arendsen Hein <thomas@intevation.de>
parents:
16929
diff
changeset
|
2410 elif not files: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2411 raise error.Abort(_(b'no files or revisions specified')) |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2412 if (len(files) > 1 or len(rev) > 1) and patchname: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2413 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
2414 _(b'option "-n" not valid when importing multiple patches') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2415 ) |
16119
5de83d9ca79c
mq: make qimport --push push all imported patches (issue3130)
Patrick Mezard <patrick@mezard.eu>
parents:
16101
diff
changeset
|
2416 imported = [] |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2417 if rev: |
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2418 # If mq patches are applied, we can only import revisions |
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2419 # that form a linear path to qbase. |
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2420 # Otherwise, they should form a linear path to a head. |
22821
5d4c17d11d7e
qimport: use `first` and `last` instead of direct indexing
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22819
diff
changeset
|
2421 heads = repo.changelog.heads(repo.changelog.node(rev.first())) |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2422 if len(heads) > 1: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2423 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
2424 _(b'revision %d is the root of more than one branch') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2425 % rev.last() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2426 ) |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2427 if self.applied: |
22821
5d4c17d11d7e
qimport: use `first` and `last` instead of direct indexing
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22819
diff
changeset
|
2428 base = repo.changelog.node(rev.first()) |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
2429 if base in [n.node for n in self.applied]: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2430 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2431 _(b'revision %d is already managed') % rev.first() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2432 ) |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
2433 if heads != [self.applied[-1].node]: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2434 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
2435 _(b'revision %d is not the parent of the queue') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2436 % rev.first() |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2437 ) |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
2438 base = repo.changelog.rev(self.applied[0].node) |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2439 lastparent = repo.changelog.parentrevs(base)[0] |
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2440 else: |
22821
5d4c17d11d7e
qimport: use `first` and `last` instead of direct indexing
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22819
diff
changeset
|
2441 if heads != [repo.changelog.node(rev.first())]: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2442 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2443 _(b'revision %d has unmanaged children') % rev.first() |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2444 ) |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2445 lastparent = None |
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2446 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2447 diffopts = self.diffopts({b'git': git}) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2448 with repo.transaction(b'qimport') as tr: |
22049
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2449 for r in rev: |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2450 if not repo[r].mutable(): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2451 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2452 _(b'revision %d is not mutable') % r, |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2453 hint=_(b"see 'hg help phases' " b'for details'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2454 ) |
22049
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2455 p1, p2 = repo.changelog.parentrevs(r) |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2456 n = repo.changelog.node(r) |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2457 if p2 != nullrev: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2458 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2459 _(b'cannot import merge revision %d') % r |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2460 ) |
22049
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2461 if lastparent and lastparent != r: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2462 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
2463 _(b'revision %d is not the parent of %d') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2464 % (r, lastparent) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2465 ) |
22049
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2466 lastparent = p1 |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2467 |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2468 if not patchname: |
27918
c7cd551f07d0
mq: refactor makepatchname into class method
Mads Kiilerich <madski@unity3d.com>
parents:
27865
diff
changeset
|
2469 patchname = self.makepatchname( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2470 repo[r].description().split(b'\n', 1)[0], |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2471 b'%d.diff' % r, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2472 ) |
22049
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2473 checkseries(patchname) |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2474 self.checkpatchname(patchname, force) |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2475 self.fullseries.insert(0, patchname) |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2476 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2477 with self.opener(patchname, b"w") as fp: |
37603
678d760c71ff
export: extract function to write patch to file object (API)
Yuya Nishihara <yuya@tcha.org>
parents:
37559
diff
changeset
|
2478 cmdutil.exportfile(repo, [n], fp, opts=diffopts) |
22049
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2479 |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2480 se = statusentry(n, patchname) |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2481 self.applied.insert(0, se) |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2482 |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2483 self.added.append(patchname) |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2484 imported.append(patchname) |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2485 patchname = None |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2486 if rev and repo.ui.configbool(b'mq', b'secret'): |
22049
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2487 # if we added anything with --rev, move the secret root |
22070
c1ca47204590
phase: add a transaction argument to retractboundary
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22069
diff
changeset
|
2488 phases.retractboundary(repo, tr, phases.secret, [n]) |
22049
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2489 self.parseseries() |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2490 self.applieddirty = True |
86c5318b8e5b
mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
22048
diff
changeset
|
2491 self.seriesdirty = True |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2492 |
10687
583adcf63f80
mq: use xrange/enumerate instead of += 1
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10686
diff
changeset
|
2493 for i, filename in enumerate(files): |
1808 | 2494 if existing: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2495 if filename == b'-': |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2496 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2497 _(b'-e is incompatible with import from -') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2498 ) |
11699
da0b9109186d
mq: support "qimport --existing --name renametothis thatexistingpatch"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11644
diff
changeset
|
2499 filename = normname(filename) |
14584
3343a74eea4e
mq: rename check_reserved_name to checkreservedname
Adrian Buehlmann <adrian@cadifra.com>
parents:
14583
diff
changeset
|
2500 self.checkreservedname(filename) |
46907
ffd3e823a7e5
urlutil: extract `url` related code from `util` into the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45942
diff
changeset
|
2501 if urlutil.url(filename).islocal(): |
20394
a817964e7fdf
qimport: allow importing URLs
Matt Mackall <mpm@selenic.com>
parents:
20119
diff
changeset
|
2502 originpath = self.join(filename) |
a817964e7fdf
qimport: allow importing URLs
Matt Mackall <mpm@selenic.com>
parents:
20119
diff
changeset
|
2503 if not os.path.isfile(originpath): |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26578
diff
changeset
|
2504 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2505 _(b"patch %s does not exist") % filename |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2506 ) |
11699
da0b9109186d
mq: support "qimport --existing --name renametothis thatexistingpatch"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11644
diff
changeset
|
2507 |
da0b9109186d
mq: support "qimport --existing --name renametothis thatexistingpatch"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11644
diff
changeset
|
2508 if patchname: |
14423 | 2509 self.checkpatchname(patchname, force) |
11699
da0b9109186d
mq: support "qimport --existing --name renametothis thatexistingpatch"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11644
diff
changeset
|
2510 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2511 self.ui.write( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2512 _(b'renaming %s to %s\n') % (filename, patchname) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2513 ) |
11701
84fb29f5e0d2
mq: fix qimport --name --existing --force on win32
Patrick Mezard <pmezard@gmail.com>
parents:
11700
diff
changeset
|
2514 util.rename(originpath, self.join(patchname)) |
11699
da0b9109186d
mq: support "qimport --existing --name renametothis thatexistingpatch"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11644
diff
changeset
|
2515 else: |
da0b9109186d
mq: support "qimport --existing --name renametothis thatexistingpatch"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11644
diff
changeset
|
2516 patchname = filename |
da0b9109186d
mq: support "qimport --existing --name renametothis thatexistingpatch"
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11644
diff
changeset
|
2517 |
1808 | 2518 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2519 if filename == b'-' and not patchname: |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2520 raise error.Abort( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2521 _(b'need --name to import a patch from -') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2522 ) |
14395
dc961471efde
mq: check patch name is valid before reading imported file
Idan Kamara <idankk86@gmail.com>
parents:
14382
diff
changeset
|
2523 elif not patchname: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2524 patchname = normname( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2525 os.path.basename(filename.rstrip(b'/')) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2526 ) |
14423 | 2527 self.checkpatchname(patchname, force) |
1808 | 2528 try: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2529 if filename == b'-': |
14636
b98063487a6f
mq: use ui.fin when importing patch from '-'
Idan Kamara <idankk86@gmail.com>
parents:
14635
diff
changeset
|
2530 text = self.ui.fin.read() |
3547 | 2531 else: |
17887
0e2846b2482c
url: use open and not url.open for local files (issue3624)
Siddharth Agarwal <sid0@fb.com>
parents:
17773
diff
changeset
|
2532 fp = hg.openpath(self.ui, filename) |
13400
14f3795a5ed7
explicitly close files
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
13373
diff
changeset
|
2533 text = fp.read() |
14f3795a5ed7
explicitly close files
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
13373
diff
changeset
|
2534 fp.close() |
7421
4c4324476be6
Catch both IOError and OSError, fix regression introduced by 8046f0a070a6
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
7414
diff
changeset
|
2535 except (OSError, IOError): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2536 raise error.Abort(_(b"unable to read file %s") % filename) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2537 patchf = self.opener(patchname, b"w") |
1808 | 2538 patchf.write(text) |
13400
14f3795a5ed7
explicitly close files
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
13373
diff
changeset
|
2539 patchf.close() |
7160
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
2540 if not force: |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
2541 checkseries(patchname) |
1b7b21b634f2
mq: make qimport -f work properly. Closes issue1255.
Brendan Cully <brendan@kublai.com>
parents:
7158
diff
changeset
|
2542 if patchname not in self.series: |
14585
74bf9c84cfd0
mq: rename full_series_end to fullseriesend
Adrian Buehlmann <adrian@cadifra.com>
parents:
14584
diff
changeset
|
2543 index = self.fullseriesend() + i |
14572
8ff2957c1d82
mq: rename full_series to fullseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14564
diff
changeset
|
2544 self.fullseries[index:index] = [patchname] |
14575
845c864200d0
mq: rename parse_series to parseseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14574
diff
changeset
|
2545 self.parseseries() |
14593
599a72895c0d
mq: rename series_dirty to seriesdirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14592
diff
changeset
|
2546 self.seriesdirty = True |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2547 self.ui.warn(_(b"adding %s to series file\n") % patchname) |
11462
1b82a26635d7
mq: qimport cleanup on fail (issue2214)
Vishakh H <vsh426@gmail.com>
parents:
11439
diff
changeset
|
2548 self.added.append(patchname) |
16119
5de83d9ca79c
mq: make qimport --push push all imported patches (issue3130)
Patrick Mezard <patrick@mezard.eu>
parents:
16101
diff
changeset
|
2549 imported.append(patchname) |
3133
15fde1970003
qimport: rename patch to patchname to avoid shadowing module
Brendan Cully <brendan@kublai.com>
parents:
3091
diff
changeset
|
2550 patchname = None |
1808 | 2551 |
13409
9e5df8719ad4
mq: remove undo after a qimport
André Sintzoff <andre.sintzoff@gmail.com>
parents:
13400
diff
changeset
|
2552 self.removeundo(repo) |
16119
5de83d9ca79c
mq: make qimport --push push all imported patches (issue3130)
Patrick Mezard <patrick@mezard.eu>
parents:
16101
diff
changeset
|
2553 return imported |
13409
9e5df8719ad4
mq: remove undo after a qimport
André Sintzoff <andre.sintzoff@gmail.com>
parents:
13400
diff
changeset
|
2554 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2555 |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
2556 def fixkeepchangesopts(ui, opts): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2557 if ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2558 not ui.configbool(b'mq', b'keepchanges') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2559 or opts.get(b'force') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2560 or opts.get(b'exact') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2561 ): |
16656
4ae3ba9e4d7a
mq: introduce mq.check setting
Patrick Mezard <patrick@mezard.eu>
parents:
16655
diff
changeset
|
2562 return opts |
4ae3ba9e4d7a
mq: introduce mq.check setting
Patrick Mezard <patrick@mezard.eu>
parents:
16655
diff
changeset
|
2563 opts = dict(opts) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2564 opts[b'keep_changes'] = True |
16656
4ae3ba9e4d7a
mq: introduce mq.check setting
Patrick Mezard <patrick@mezard.eu>
parents:
16655
diff
changeset
|
2565 return opts |
4ae3ba9e4d7a
mq: introduce mq.check setting
Patrick Mezard <patrick@mezard.eu>
parents:
16655
diff
changeset
|
2566 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2567 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2568 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2569 b"qdelete|qremove|qrm", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2570 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2571 (b'k', b'keep', None, _(b'keep patch file')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2572 ( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2573 b'r', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2574 b'rev', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2575 [], |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2576 _(b'stop managing a revision (DEPRECATED)'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2577 _(b'REV'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2578 ), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2579 ], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2580 _(b'hg qdelete [-k] [PATCH]...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2581 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2582 ) |
3373
9851f46d6ecc
mq: change qdel --forget to --rev; accept any revision symbol
Brendan Cully <brendan@kublai.com>
parents:
3243
diff
changeset
|
2583 def delete(ui, repo, *patches, **opts): |
2905
790fd342b6c7
Allow qdel to delete multiple patches.
Brendan Cully <brendan@kublai.com>
parents:
2904
diff
changeset
|
2584 """remove patches from queue |
2752
5dfeda163bb7
Add -f option to qdelete, to remove patch file.
Brendan Cully <brendan@kublai.com>
parents:
2751
diff
changeset
|
2585 |
15798
e6c44dbe902f
mq: Document that qdel requires exact patch identifiers
Olav Reinert <seroton10@gmail.com>
parents:
15322
diff
changeset
|
2586 The patches must not be applied, and at least one patch is required. Exact |
e6c44dbe902f
mq: Document that qdel requires exact patch identifiers
Olav Reinert <seroton10@gmail.com>
parents:
15322
diff
changeset
|
2587 patch identifiers must be given. With -k/--keep, the patch files are |
e6c44dbe902f
mq: Document that qdel requires exact patch identifiers
Olav Reinert <seroton10@gmail.com>
parents:
15322
diff
changeset
|
2588 preserved in the patch directory. |
8904
8be38b624902
mq: no longer mention the deprecated qdelete's --revision option
Cédric Duval <cedricduval@free.fr>
parents:
8894
diff
changeset
|
2589 |
8be38b624902
mq: no longer mention the deprecated qdelete's --revision option
Cédric Duval <cedricduval@free.fr>
parents:
8894
diff
changeset
|
2590 To stop managing a patch and move it into permanent history, |
11307
7f72031d4047
mq: use hg reST role some more
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
2591 use the :hg:`qfinish` command.""" |
2724
9c41ae1908c7
mq: replace module-wide repo hash with a repo attribute
Brendan Cully <brendan@kublai.com>
parents:
2723
diff
changeset
|
2592 q = repo.mq |
36281
d822f3fb6be8
py3: use pycompat.byteskwargs() to convert opts keys to bytes
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36107
diff
changeset
|
2593 q.delete(repo, patches, pycompat.byteskwargs(opts)) |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
2594 q.savedirty() |
1808 | 2595 return 0 |
2596 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2597 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2598 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2599 b"qapplied", |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2600 [(b'1', b'last', None, _(b'show only the preceding applied patch'))] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2601 + seriesopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2602 _(b'hg qapplied [-1] [-s] [PATCH]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2603 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2604 ) |
1808 | 2605 def applied(ui, repo, patch=None, **opts): |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2606 """print the patches already applied |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2607 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2608 Returns 0 on success.""" |
9364
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2609 |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2610 q = repo.mq |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
2611 opts = pycompat.byteskwargs(opts) |
9364
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2612 |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2613 if patch: |
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2614 if patch not in q.series: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2615 raise error.Abort(_(b"patch %s is not in series file") % patch) |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2616 end = q.series.index(patch) + 1 |
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2617 else: |
14586
af91cb281975
mq: rename series_end to seriesend
Adrian Buehlmann <adrian@cadifra.com>
parents:
14585
diff
changeset
|
2618 end = q.seriesend(True) |
9364
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2619 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2620 if opts.get(b'last') and not end: |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2621 ui.write(_(b"no patches applied\n")) |
9364
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2622 return 1 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2623 elif opts.get(b'last') and end == 1: |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2624 ui.write(_(b"only one patch applied\n")) |
9364
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2625 return 1 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2626 elif opts.get(b'last'): |
9364
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2627 start = end - 2 |
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2628 end = 1 |
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2629 else: |
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2630 start = 0 |
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2631 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2632 q.qseries( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2633 repo, length=end, start=start, status=b'A', summary=opts.get(b'summary') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2634 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2635 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2636 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2637 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2638 b"qunapplied", |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2639 [(b'1', b'first', None, _(b'show only the first patch'))] + seriesopts, |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2640 _(b'hg qunapplied [-1] [-s] [PATCH]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2641 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2642 ) |
1808 | 2643 def unapplied(ui, repo, patch=None, **opts): |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2644 """print the patches not yet applied |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2645 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2646 Returns 0 on success.""" |
9364
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2647 |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2648 q = repo.mq |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
2649 opts = pycompat.byteskwargs(opts) |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2650 if patch: |
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2651 if patch not in q.series: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2652 raise error.Abort(_(b"patch %s is not in series file") % patch) |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2653 start = q.series.index(patch) + 1 |
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2654 else: |
14586
af91cb281975
mq: rename series_end to seriesend
Adrian Buehlmann <adrian@cadifra.com>
parents:
14585
diff
changeset
|
2655 start = q.seriesend(True) |
9364
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2656 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2657 if start == len(q.series) and opts.get(b'first'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2658 ui.write(_(b"all patches applied\n")) |
9364
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2659 return 1 |
c7c2dd7524dd
mq: add options to qapplied/qunapplied to act like qprev/qnext
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
9338
diff
changeset
|
2660 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2661 if opts.get(b'first'): |
24306
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
2662 length = 1 |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
2663 else: |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
2664 length = None |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2665 q.qseries( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2666 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2667 start=start, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2668 length=length, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2669 status=b'U', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2670 summary=opts.get(b'summary'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2671 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2672 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2673 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2674 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2675 b"qimport", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2676 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2677 (b'e', b'existing', None, _(b'import file in patch directory')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2678 (b'n', b'name', b'', _(b'name of patch file'), _(b'NAME')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2679 (b'f', b'force', None, _(b'overwrite existing files')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2680 ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2681 b'r', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2682 b'rev', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2683 [], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2684 _(b'place existing revisions under mq control'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2685 _(b'REV'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2686 ), |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2687 (b'g', b'git', None, _(b'use git extended diff format')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2688 (b'P', b'push', None, _(b'qpush after importing')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2689 ], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2690 _(b'hg qimport [-e] [-n NAME] [-f] [-g] [-P] [-r REV]... [FILE]...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2691 helpcategory=command.CATEGORY_IMPORT_EXPORT, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2692 ) |
1808 | 2693 def qimport(ui, repo, *filename, **opts): |
16152
816211dfa3a5
mq: expand qimport summary
Matt Mackall <mpm@selenic.com>
parents:
16128
diff
changeset
|
2694 """import a patch or existing changeset |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2695 |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
2696 The patch is inserted into the series after the last applied |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
2697 patch. If no patches have been applied, qimport prepends the patch |
6634
d6caebe9c293
mq: qimport: explain insertion point in doc string
Adrian Buehlmann <adrian@cadifra.com>
parents:
6627
diff
changeset
|
2698 to the series. |
d6caebe9c293
mq: qimport: explain insertion point in doc string
Adrian Buehlmann <adrian@cadifra.com>
parents:
6627
diff
changeset
|
2699 |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2700 The patch will have the same name as its source file unless you |
8076
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
2701 give it a new one with -n/--name. |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2702 |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
2703 You can register an existing patch inside the patch directory with |
8076
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
2704 the -e/--existing flag. |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2705 |
8076
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
2706 With -f/--force, an existing patch of the same name will be |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
2707 overwritten. |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2708 |
8076
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
2709 An existing changeset may be placed under mq control with -r/--rev |
19397
42fc6c7c4ad5
mq: remove reference to tip
Matt Mackall <mpm@selenic.com>
parents:
19395
diff
changeset
|
2710 (e.g. qimport --rev . -n patch will place the current revision |
42fc6c7c4ad5
mq: remove reference to tip
Matt Mackall <mpm@selenic.com>
parents:
19395
diff
changeset
|
2711 under mq control). With -g/--git, patches imported with --rev will |
42fc6c7c4ad5
mq: remove reference to tip
Matt Mackall <mpm@selenic.com>
parents:
19395
diff
changeset
|
2712 use the git diff format. See the diffs help topic for information |
42fc6c7c4ad5
mq: remove reference to tip
Matt Mackall <mpm@selenic.com>
parents:
19395
diff
changeset
|
2713 on why this is important for preserving rename/copy information |
42fc6c7c4ad5
mq: remove reference to tip
Matt Mackall <mpm@selenic.com>
parents:
19395
diff
changeset
|
2714 and permission changes. Use :hg:`qfinish` to remove changesets |
42fc6c7c4ad5
mq: remove reference to tip
Matt Mackall <mpm@selenic.com>
parents:
19395
diff
changeset
|
2715 from mq control. |
8075
1f0a5a5fff43
Update qimport help explaining how to read a patch from stdin (Issue371)
David Frey <dpfrey@shaw.ca>
parents:
8028
diff
changeset
|
2716 |
1f0a5a5fff43
Update qimport help explaining how to read a patch from stdin (Issue371)
David Frey <dpfrey@shaw.ca>
parents:
8028
diff
changeset
|
2717 To import a patch from standard input, pass - as the patch file. |
1f0a5a5fff43
Update qimport help explaining how to read a patch from stdin (Issue371)
David Frey <dpfrey@shaw.ca>
parents:
8028
diff
changeset
|
2718 When importing from standard input, a patch name must be specified |
1f0a5a5fff43
Update qimport help explaining how to read a patch from stdin (Issue371)
David Frey <dpfrey@shaw.ca>
parents:
8028
diff
changeset
|
2719 using the --name flag. |
11700
52c863295754
mq: document possible combination of -e and -n for qimport
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11699
diff
changeset
|
2720 |
11706
5fdf08b6b50c
mq: correct qimport documentation
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11701
diff
changeset
|
2721 To import an existing patch while renaming it:: |
11700
52c863295754
mq: document possible combination of -e and -n for qimport
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11699
diff
changeset
|
2722 |
52c863295754
mq: document possible combination of -e and -n for qimport
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
11699
diff
changeset
|
2723 hg qimport -e existing-patch -n new-name |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2724 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2725 Returns 0 if import succeeded. |
3141
e21337e06952
mq: Add --rev argument to qimport, to adopt existing changesets.
Brendan Cully <brendan@kublai.com>
parents:
3133
diff
changeset
|
2726 """ |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
2727 opts = pycompat.byteskwargs(opts) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2728 with repo.lock(): # cause this may move phase |
16027
29ea059be33c
qimport: when mq.secret=True set qimported revision as secret
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16026
diff
changeset
|
2729 q = repo.mq |
29ea059be33c
qimport: when mq.secret=True set qimported revision as secret
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16026
diff
changeset
|
2730 try: |
16119
5de83d9ca79c
mq: make qimport --push push all imported patches (issue3130)
Patrick Mezard <patrick@mezard.eu>
parents:
16101
diff
changeset
|
2731 imported = q.qimport( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2732 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2733 filename, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2734 patchname=opts.get(b'name'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2735 existing=opts.get(b'existing'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2736 force=opts.get(b'force'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2737 rev=opts.get(b'rev'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2738 git=opts.get(b'git'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2739 ) |
16027
29ea059be33c
qimport: when mq.secret=True set qimported revision as secret
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16026
diff
changeset
|
2740 finally: |
29ea059be33c
qimport: when mq.secret=True set qimported revision as secret
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16026
diff
changeset
|
2741 q.savedirty() |
16681
0128cdb846d9
mq: qimport need wlock for --push - do that after releasing lock
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16635
diff
changeset
|
2742 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2743 if imported and opts.get(b'push') and not opts.get(b'rev'): |
16681
0128cdb846d9
mq: qimport need wlock for --push - do that after releasing lock
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16635
diff
changeset
|
2744 return q.push(repo, imported[-1]) |
1808 | 2745 return 0 |
2746 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2747 |
10480
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2748 def qinit(ui, repo, create): |
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2749 """initialize a new queue repository |
2754
19041b8cbc86
Add more verbose help text to mq commands.
Brendan Cully <brendan@kublai.com>
parents:
2753
diff
changeset
|
2750 |
10480
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2751 This command also creates a series file for ordering patches, and |
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2752 an mq-specific .hgignore file in the queue repository, to exclude |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2753 the status and guards files (these contain mostly transient state). |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2754 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2755 Returns 0 if initialization succeeded.""" |
2724
9c41ae1908c7
mq: replace module-wide repo hash with a repo attribute
Brendan Cully <brendan@kublai.com>
parents:
2723
diff
changeset
|
2756 q = repo.mq |
10480
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2757 r = q.init(repo, create) |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
2758 q.savedirty() |
1808 | 2759 if r: |
50047
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
2760 with r.wlock(), r.dirstate.changing_files(r): |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
2761 if not os.path.exists(r.wjoin(b'.hgignore')): |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
2762 fp = r.wvfs(b'.hgignore', b'w') |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
2763 fp.write(b'^\\.hg\n') |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
2764 fp.write(b'^\\.mq\n') |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
2765 fp.write(b'syntax: glob\n') |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
2766 fp.write(b'status\n') |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
2767 fp.write(b'guards\n') |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
2768 fp.close() |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
2769 if not os.path.exists(r.wjoin(b'series')): |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
2770 r.wvfs(b'series', b'w').close() |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
2771 r[None].add([b'.hgignore', b'series']) |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
2772 commands.add(ui, r) |
1808 | 2773 return 0 |
2774 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2775 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2776 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2777 b"qinit", |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2778 [(b'c', b'create-repo', None, _(b'create queue repository'))], |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2779 _(b'hg qinit [-c]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2780 helpcategory=command.CATEGORY_REPO_CREATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2781 helpbasic=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2782 ) |
10480
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2783 def init(ui, repo, **opts): |
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2784 """init a new queue repository (DEPRECATED) |
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2785 |
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2786 The queue repository is unversioned by default. If |
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2787 -c/--create-repo is specified, qinit will create a separate nested |
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2788 repository for patches (qinit -c may also be run later to convert |
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2789 an unversioned patch repository into a versioned one). You can use |
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2790 qcommit to commit changes to this queue repository. |
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2791 |
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2792 This command is deprecated. Without -c, it's implied by other relevant |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11121
diff
changeset
|
2793 commands. With -c, use :hg:`init --mq` instead.""" |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
2794 return qinit(ui, repo, create=opts.get('create_repo')) |
10480
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
2795 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2796 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2797 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2798 b"qclone", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2799 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2800 (b'', b'pull', None, _(b'use pull protocol to copy metadata')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2801 ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2802 b'U', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2803 b'noupdate', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2804 None, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2805 _(b'do not update the new working directories'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2806 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2807 ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2808 b'', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2809 b'uncompressed', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2810 None, |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2811 _(b'use uncompressed transfer (fast over LAN)'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2812 ), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2813 ( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2814 b'p', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2815 b'patches', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2816 b'', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2817 _(b'location of source patch repository'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2818 _(b'REPO'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2819 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2820 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2821 + cmdutil.remoteopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2822 _(b'hg qclone [OPTION]... SOURCE [DEST]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2823 helpcategory=command.CATEGORY_REPO_CREATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2824 norepo=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2825 ) |
2720
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2826 def clone(ui, source, dest=None, **opts): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
2827 """clone main and patch repository at same time |
2720
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2828 |
7983
7b813bdbd5d0
Change double spaces to single spaces in help texts.
Martin Geisler <mg@daimi.au.dk>
parents:
7874
diff
changeset
|
2829 If source is local, destination will have no patches applied. If |
2720
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2830 source is remote, this command can not check if patches are |
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2831 applied in source, so cannot guarantee that patches are not |
7983
7b813bdbd5d0
Change double spaces to single spaces in help texts.
Martin Geisler <mg@daimi.au.dk>
parents:
7874
diff
changeset
|
2832 applied in destination. If you clone remote repository, be sure |
2720
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2833 before that it has no patches applied. |
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2834 |
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2835 Source patch repository is looked for in <src>/.hg/patches by |
7983
7b813bdbd5d0
Change double spaces to single spaces in help texts.
Martin Geisler <mg@daimi.au.dk>
parents:
7874
diff
changeset
|
2836 default. Use -p <url> to change. |
4862
cba10652a901
mq: improve qclone error handling when patch directory is not a repository.
Brendan Cully <brendan@kublai.com>
parents:
4737
diff
changeset
|
2837 |
8760
bf17aeafb869
Spell Mercurial as a proper noun
timeless <timeless@gmail.com>
parents:
8711
diff
changeset
|
2838 The patch directory must be a nested Mercurial repository, as |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11121
diff
changeset
|
2839 would be created by :hg:`init --mq`. |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2840 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2841 Return 0 on success. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
2842 """ |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
2843 opts = pycompat.byteskwargs(opts) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2844 |
5226
438ff951df70
avoid double slash problem mentioned in issue695
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5180
diff
changeset
|
2845 def patchdir(repo): |
15921
92e455f2866c
qclone: add a few comment and blank line
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15920
diff
changeset
|
2846 """compute a patch repo url from a repo object""" |
5226
438ff951df70
avoid double slash problem mentioned in issue695
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5180
diff
changeset
|
2847 url = repo.url() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2848 if url.endswith(b'/'): |
5226
438ff951df70
avoid double slash problem mentioned in issue695
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5180
diff
changeset
|
2849 url = url[:-1] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2850 return url + b'/.hg/patches' |
15921
92e455f2866c
qclone: add a few comment and blank line
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15920
diff
changeset
|
2851 |
92e455f2866c
qclone: add a few comment and blank line
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15920
diff
changeset
|
2852 # main repo (destination and sources) |
2720
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2853 if dest is None: |
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2854 dest = hg.defaultdest(source) |
49743
f22364e4eb13
path: pass `path` to `peer` in mq
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49306
diff
changeset
|
2855 source_path = urlutil.get_clone_path_obj(ui, source) |
46935
ae4c0f279282
mq: use the new `get_clone_path` to get the remote url
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46907
diff
changeset
|
2856 sr = hg.peer(ui, opts, source_path) |
15921
92e455f2866c
qclone: add a few comment and blank line
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15920
diff
changeset
|
2857 |
92e455f2866c
qclone: add a few comment and blank line
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15920
diff
changeset
|
2858 # patches repo (source only) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2859 if opts.get(b'patches'): |
49743
f22364e4eb13
path: pass `path` to `peer` in mq
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49306
diff
changeset
|
2860 patches_path = urlutil.get_clone_path_obj(ui, opts.get(b'patches')) |
7729
dd08e1e0cea1
mq: allow qclone's -p option to use path alias
John Mulligan <phlogistonjohn@asynchrono.us>
parents:
7639
diff
changeset
|
2861 else: |
49743
f22364e4eb13
path: pass `path` to `peer` in mq
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49306
diff
changeset
|
2862 # XXX path: we should turn this into a path object |
f22364e4eb13
path: pass `path` to `peer` in mq
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49306
diff
changeset
|
2863 patches_path = patchdir(sr) |
4862
cba10652a901
mq: improve qclone error handling when patch directory is not a repository.
Brendan Cully <brendan@kublai.com>
parents:
4737
diff
changeset
|
2864 try: |
49743
f22364e4eb13
path: pass `path` to `peer` in mq
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49306
diff
changeset
|
2865 hg.peer(ui, opts, patches_path) |
7637 | 2866 except error.RepoError: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2867 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
2868 _(b'versioned patch repository not found (see init --mq)') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2869 ) |
2720
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2870 qbase, destrev = None, None |
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2871 if sr.local(): |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17153
diff
changeset
|
2872 repo = sr.local() |
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17153
diff
changeset
|
2873 if repo.mq.applied and repo[qbase].phase() != phases.secret: |
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17153
diff
changeset
|
2874 qbase = repo.mq.applied[0].node |
2720
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2875 if not hg.islocal(dest): |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17153
diff
changeset
|
2876 heads = set(repo.heads()) |
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17153
diff
changeset
|
2877 destrev = list(heads.difference(repo.heads(qbase))) |
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17153
diff
changeset
|
2878 destrev.append(repo.changelog.parents(qbase)[0]) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2879 elif sr.capable(b'lookup'): |
6380
a632a9a57821
qclone: do not abort if remote hasn't enabled mq (issue1040)
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6340
diff
changeset
|
2880 try: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2881 qbase = sr.lookup(b'qbase') |
7637 | 2882 except error.RepoError: |
6380
a632a9a57821
qclone: do not abort if remote hasn't enabled mq (issue1040)
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
6340
diff
changeset
|
2883 pass |
15921
92e455f2866c
qclone: add a few comment and blank line
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15920
diff
changeset
|
2884 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2885 ui.note(_(b'cloning main repository\n')) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2886 sr, dr = hg.clone( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2887 ui, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2888 opts, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2889 sr.url(), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2890 dest, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2891 pull=opts.get(b'pull'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2892 revs=destrev, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2893 update=False, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2894 stream=opts.get(b'uncompressed'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2895 ) |
15921
92e455f2866c
qclone: add a few comment and blank line
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15920
diff
changeset
|
2896 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2897 ui.note(_(b'cloning patch repository\n')) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2898 hg.clone( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2899 ui, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2900 opts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2901 opts.get(b'patches') or patchdir(sr), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2902 patchdir(dr), |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2903 pull=opts.get(b'pull'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2904 update=not opts.get(b'noupdate'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2905 stream=opts.get(b'uncompressed'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2906 ) |
15921
92e455f2866c
qclone: add a few comment and blank line
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15920
diff
changeset
|
2907 |
2720
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2908 if dr.local(): |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17153
diff
changeset
|
2909 repo = dr.local() |
2720
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2910 if qbase: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2911 ui.note( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2912 _( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2913 b'stripping applied patches from destination ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2914 b'repository\n' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2915 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2916 ) |
19819
f0fc4d5797e1
mq: extract `mq.queue.strip`
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19818
diff
changeset
|
2917 strip(ui, repo, [qbase], update=False, backup=None) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2918 if not opts.get(b'noupdate'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2919 ui.note(_(b'updating destination repository\n')) |
17191
5884812686f7
peer: introduce peer methods to prepare for peer classes
Sune Foldager <cryo@cyanite.org>
parents:
17153
diff
changeset
|
2920 hg.update(repo, repo.changelog.tip()) |
2720
c91ca61c8953
mq: add qclone command
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2713
diff
changeset
|
2921 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2922 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2923 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2924 b"qcommit|qci", |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2925 commands.table[b"commit|ci"][1], |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2926 _(b'hg qcommit [OPTION]... [FILE]...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2927 helpcategory=command.CATEGORY_COMMITTING, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2928 inferrepo=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2929 ) |
1808 | 2930 def commit(ui, repo, *pats, **opts): |
10361
49cd2e7fd91c
mq: deprecate qinit and qcommit
Dirkjan Ochtman <djc.ochtman@kentyde.com>
parents:
10360
diff
changeset
|
2931 """commit changes in the queue repository (DEPRECATED) |
49cd2e7fd91c
mq: deprecate qinit and qcommit
Dirkjan Ochtman <djc.ochtman@kentyde.com>
parents:
10360
diff
changeset
|
2932 |
11193
687c7d395f20
Use our custom hg reStructuredText role some more
Martin Geisler <mg@aragost.com>
parents:
11121
diff
changeset
|
2933 This command is deprecated; use :hg:`commit --mq` instead.""" |
2724
9c41ae1908c7
mq: replace module-wide repo hash with a repo attribute
Brendan Cully <brendan@kublai.com>
parents:
2723
diff
changeset
|
2934 q = repo.mq |
1808 | 2935 r = q.qrepo() |
10282
08a0f04b56bd
many, many trivial check-code fixups
Matt Mackall <mpm@selenic.com>
parents:
10276
diff
changeset
|
2936 if not r: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2937 raise error.Abort(b'no queue repository') |
1808 | 2938 commands.commit(r.ui, r, *pats, **opts) |
2939 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2940 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2941 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2942 b"qseries", |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
2943 [ |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
2944 (b'm', b'missing', None, _(b'print patches not in series')), |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
2945 ] |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
2946 + seriesopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2947 _(b'hg qseries [-ms]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2948 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2949 ) |
1808 | 2950 def series(ui, repo, **opts): |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2951 """print the entire series file |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2952 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2953 Returns 0 on success.""" |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2954 repo.mq.qseries( |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
2955 repo, missing=opts.get('missing'), summary=opts.get('summary') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2956 ) |
1808 | 2957 return 0 |
2958 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2959 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2960 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2961 b"qtop", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2962 seriesopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2963 _(b'hg qtop [-s]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2964 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2965 ) |
1808 | 2966 def top(ui, repo, **opts): |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2967 """print the name of the current patch |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2968 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2969 Returns 0 on success.""" |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2970 q = repo.mq |
24306
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
2971 if q.applied: |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
2972 t = q.seriesend(True) |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
2973 else: |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
2974 t = 0 |
6ddc86eedc3b
style: kill ersatz if-else ternary operators
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
23879
diff
changeset
|
2975 |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2976 if t: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2977 q.qseries( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2978 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2979 start=t - 1, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2980 length=1, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2981 status=b'A', |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
2982 summary=opts.get('summary'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2983 ) |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2984 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2985 ui.write(_(b"no patches applied\n")) |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2986 return 1 |
1808 | 2987 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2988 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2989 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2990 b"qnext", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2991 seriesopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
2992 _(b'hg qnext [-s]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2993 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
2994 ) |
1808 | 2995 def next(ui, repo, **opts): |
16063
c36db39b3fee
mq: fix qnext when all remaining patches are guarded
Patrick Mezard <pmezard@gmail.com>
parents:
16048
diff
changeset
|
2996 """print the name of the next pushable patch |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2997 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
2998 Returns 0 on success.""" |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
2999 q = repo.mq |
14586
af91cb281975
mq: rename series_end to seriesend
Adrian Buehlmann <adrian@cadifra.com>
parents:
14585
diff
changeset
|
3000 end = q.seriesend() |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
3001 if end == len(q.series): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3002 ui.write(_(b"all patches applied\n")) |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
3003 return 1 |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
3004 q.qseries(repo, start=end, length=1, summary=opts.get('summary')) |
1808 | 3005 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3006 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3007 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3008 b"qprev", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3009 seriesopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3010 _(b'hg qprev [-s]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3011 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3012 ) |
1808 | 3013 def prev(ui, repo, **opts): |
16188
6b52963ced73
mq: fix qapplied --last and qprev documentation (issue3282)
Patrick Mezard <patrick@mezard.eu>
parents:
16119
diff
changeset
|
3014 """print the name of the preceding applied patch |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3015 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3016 Returns 0 on success.""" |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
3017 q = repo.mq |
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
3018 l = len(q.applied) |
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
3019 if l == 1: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3020 ui.write(_(b"only one patch applied\n")) |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
3021 return 1 |
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
3022 if not l: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3023 ui.write(_(b"no patches applied\n")) |
3183
0e6b58c7beea
mq: add --summary to qapplied, qunapplied, qtop, qnext and qprev
Brendan Cully <brendan@kublai.com>
parents:
3141
diff
changeset
|
3024 return 1 |
16064
7e5a281a082c
mq: make qprev return the previous applied patch (issue3245)
Patrick Mezard <pmezard@gmail.com>
parents:
16063
diff
changeset
|
3025 idx = q.series.index(q.applied[-2].name) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3026 q.qseries( |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
3027 repo, start=idx, length=1, status=b'A', summary=opts.get('summary') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3028 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3029 |
1808 | 3030 |
5673
dd3ce7515f4d
mq: add --currentuser and --user options to qnew and qrefresh
peter.arrenbrecht@gmail.com
parents:
5645
diff
changeset
|
3031 def setupheaderopts(ui, opts): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3032 if not opts.get(b'user') and opts.get(b'currentuser'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3033 opts[b'user'] = ui.username() |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3034 if not opts.get(b'date') and opts.get(b'currentdate'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3035 opts[b'date'] = b"%d %d" % dateutil.makedate() |
5673
dd3ce7515f4d
mq: add --currentuser and --user options to qnew and qrefresh
peter.arrenbrecht@gmail.com
parents:
5645
diff
changeset
|
3036 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3037 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3038 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3039 b"qnew", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3040 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3041 (b'e', b'edit', None, _(b'invoke editor on commit messages')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3042 (b'f', b'force', None, _(b'import uncommitted changes (DEPRECATED)')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3043 (b'g', b'git', None, _(b'use git extended diff format')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3044 (b'U', b'currentuser', None, _(b'add "From: <current user>" to patch')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3045 (b'u', b'user', b'', _(b'add "From: <USER>" to patch'), _(b'USER')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3046 (b'D', b'currentdate', None, _(b'add "Date: <current date>" to patch')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3047 (b'd', b'date', b'', _(b'add "Date: <DATE>" to patch'), _(b'DATE')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3048 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3049 + cmdutil.walkopts |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3050 + cmdutil.commitopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3051 _(b'hg qnew [-e] [-m TEXT] [-l FILE] PATCH [FILE]...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3052 helpcategory=command.CATEGORY_COMMITTING, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3053 helpbasic=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3054 inferrepo=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3055 ) |
4713
c29ee52e0b68
mq: support qnew -I/-X and file name lists
Brendan Cully <brendan@kublai.com>
parents:
4712
diff
changeset
|
3056 def new(ui, repo, patch, *args, **opts): |
2754
19041b8cbc86
Add more verbose help text to mq commands.
Brendan Cully <brendan@kublai.com>
parents:
2753
diff
changeset
|
3057 """create a new patch |
19041b8cbc86
Add more verbose help text to mq commands.
Brendan Cully <brendan@kublai.com>
parents:
2753
diff
changeset
|
3058 |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3059 qnew creates a new patch on top of the currently-applied patch (if |
10808
1ebba857b371
mq: remove reference for deprecated -f option
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
10770
diff
changeset
|
3060 any). The patch will be initialized with any outstanding changes |
1ebba857b371
mq: remove reference for deprecated -f option
Wagner Bruna <wbruna@softwareexpress.com.br>
parents:
10770
diff
changeset
|
3061 in the working directory. You may also use -I/--include, |
8076
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3062 -X/--exclude, and/or a list of files after the patch name to add |
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3063 only changes to matching files to the new patch, leaving the rest |
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3064 as uncommitted modifications. |
2754
19041b8cbc86
Add more verbose help text to mq commands.
Brendan Cully <brendan@kublai.com>
parents:
2753
diff
changeset
|
3065 |
8076
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3066 -u/--user and -d/--date can be used to set the (given) user and |
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3067 date, respectively. -U/--currentuser and -D/--currentdate set user |
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3068 to current user and date to current date. |
7306
8e46e59aaf4c
mq: reflow qnew help, add help for options
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7297
diff
changeset
|
3069 |
8076
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3070 -e/--edit, -m/--message or -l/--logfile set the patch header as |
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3071 well as the commit message. If none is specified, the header is |
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3072 empty and the commit message is '[mq]: PATCH'. |
7307
56380212d630
help: commands supporting --git point to the gitdiffs topic (issue1352)
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7306
diff
changeset
|
3073 |
8076
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3074 Use the -g/--git option to keep the patch in the git extended diff |
7387 | 3075 format. Read the diffs help topic for more information on why this |
3076 is important for preserving permission changes and copy/rename | |
3077 information. | |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3078 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3079 Returns 0 on successful creation of a new patch. |
7306
8e46e59aaf4c
mq: reflow qnew help, add help for options
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7297
diff
changeset
|
3080 """ |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
3081 opts = pycompat.byteskwargs(opts) |
14635
217b7d83afc3
cmdutil, logmessage: use ui.fin when reading from '-'
Idan Kamara <idankk86@gmail.com>
parents:
14620
diff
changeset
|
3082 msg = cmdutil.logmessage(ui, opts) |
2724
9c41ae1908c7
mq: replace module-wide repo hash with a repo attribute
Brendan Cully <brendan@kublai.com>
parents:
2723
diff
changeset
|
3083 q = repo.mq |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3084 opts[b'msg'] = msg |
5673
dd3ce7515f4d
mq: add --currentuser and --user options to qnew and qrefresh
peter.arrenbrecht@gmail.com
parents:
5645
diff
changeset
|
3085 setupheaderopts(ui, opts) |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
3086 q.new(repo, patch, *args, **pycompat.strkwargs(opts)) |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
3087 q.savedirty() |
1808 | 3088 return 0 |
3089 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3090 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3091 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3092 b"qrefresh", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3093 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3094 (b'e', b'edit', None, _(b'invoke editor on commit messages')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3095 (b'g', b'git', None, _(b'use git extended diff format')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3096 ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3097 b's', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3098 b'short', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3099 None, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3100 _(b'refresh only files already in the patch and specified files'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3101 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3102 ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3103 b'U', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3104 b'currentuser', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3105 None, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3106 _(b'add/update author field in patch with current user'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3107 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3108 ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3109 b'u', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3110 b'user', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3111 b'', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3112 _(b'add/update author field in patch with given user'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3113 _(b'USER'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3114 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3115 ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3116 b'D', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3117 b'currentdate', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3118 None, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3119 _(b'add/update date field in patch with current date'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3120 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3121 ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3122 b'd', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3123 b'date', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3124 b'', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3125 _(b'add/update date field in patch with given date'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3126 _(b'DATE'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3127 ), |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3128 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3129 + cmdutil.walkopts |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3130 + cmdutil.commitopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3131 _(b'hg qrefresh [-I] [-X] [-e] [-m TEXT] [-l FILE] [-s] [FILE]...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3132 helpcategory=command.CATEGORY_COMMITTING, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3133 helpbasic=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3134 inferrepo=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3135 ) |
2938
5b7a118f5b6c
allow qrefresh to take a list of files; closes #96.
Brendan Cully <brendan@kublai.com>
parents:
2937
diff
changeset
|
3136 def refresh(ui, repo, *pats, **opts): |
2940
b1e6d701a03a
mq help text updates and speling fixes
Brendan Cully <brendan@kublai.com>
parents:
2939
diff
changeset
|
3137 """update the current patch |
b1e6d701a03a
mq help text updates and speling fixes
Brendan Cully <brendan@kublai.com>
parents:
2939
diff
changeset
|
3138 |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3139 If any file patterns are provided, the refreshed patch will |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3140 contain only the modifications that match those patterns; the |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3141 remaining modifications will remain in the working directory. |
4048
5d6b3fa62736
mq: Mention usage of hg add/remove/copy/rename in qrefresh help text.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
4040
diff
changeset
|
3142 |
8076
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3143 If -s/--short is specified, files currently included in the patch |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3144 will be refreshed just like matched files and remain in the patch. |
7113
f7fc5f5ecd62
mq: Allow qrefresh --silent to take parameters
Mads Kiilerich <mads@kiilerich.com>
parents:
7002
diff
changeset
|
3145 |
11947
59ec12093261
mq: save qrefresh message for easy recovery in case it fails (issue2062)
Renato Cunha <renatoc@gmail.com>
parents:
11939
diff
changeset
|
3146 If -e/--edit is specified, Mercurial will start your configured editor for |
59ec12093261
mq: save qrefresh message for easy recovery in case it fails (issue2062)
Renato Cunha <renatoc@gmail.com>
parents:
11939
diff
changeset
|
3147 you to enter a message. In case qrefresh fails, you will find a backup of |
59ec12093261
mq: save qrefresh message for easy recovery in case it fails (issue2062)
Renato Cunha <renatoc@gmail.com>
parents:
11939
diff
changeset
|
3148 your message in ``.hg/last-message.txt``. |
59ec12093261
mq: save qrefresh message for easy recovery in case it fails (issue2062)
Renato Cunha <renatoc@gmail.com>
parents:
11939
diff
changeset
|
3149 |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3150 hg add/remove/copy/rename work as usual, though you might want to |
8076
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3151 use git-style patches (-g/--git or [diff] git=1) to track copies |
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3152 and renames. See the diffs help topic for more information on the |
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3153 git diff format. |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3154 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3155 Returns 0 on success. |
2940
b1e6d701a03a
mq help text updates and speling fixes
Brendan Cully <brendan@kublai.com>
parents:
2939
diff
changeset
|
3156 """ |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
3157 opts = pycompat.byteskwargs(opts) |
2724
9c41ae1908c7
mq: replace module-wide repo hash with a repo attribute
Brendan Cully <brendan@kublai.com>
parents:
2723
diff
changeset
|
3158 q = repo.mq |
14635
217b7d83afc3
cmdutil, logmessage: use ui.fin when reading from '-'
Idan Kamara <idankk86@gmail.com>
parents:
14620
diff
changeset
|
3159 message = cmdutil.logmessage(ui, opts) |
5673
dd3ce7515f4d
mq: add --currentuser and --user options to qnew and qrefresh
peter.arrenbrecht@gmail.com
parents:
5645
diff
changeset
|
3160 setupheaderopts(ui, opts) |
27830
1c5941542f24
with: use context manager for wlock in qrefresh
Bryan O'Sullivan <bryano@fb.com>
parents:
27829
diff
changeset
|
3161 with repo.wlock(): |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
3162 ret = q.refresh(repo, pats, msg=message, **pycompat.strkwargs(opts)) |
14620
2b9c32929e62
mq: make qrefresh/qfold keep wlock until saving patch status
Yuya Nishihara <yuya@tcha.org>
parents:
14600
diff
changeset
|
3163 q.savedirty() |
2b9c32929e62
mq: make qrefresh/qfold keep wlock until saving patch status
Yuya Nishihara <yuya@tcha.org>
parents:
14600
diff
changeset
|
3164 return ret |
1808 | 3165 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3166 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3167 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3168 b"qdiff", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3169 cmdutil.diffopts + cmdutil.diffopts2 + cmdutil.walkopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3170 _(b'hg qdiff [OPTION]... [FILE]...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3171 helpcategory=command.CATEGORY_FILE_CONTENTS, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3172 helpbasic=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3173 inferrepo=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3174 ) |
2937
9dc568f5e03d
Fix test-mq-qdiff; add -I and -X options to qdiff
Brendan Cully <brendan@kublai.com>
parents:
2936
diff
changeset
|
3175 def diff(ui, repo, *pats, **opts): |
6606
088ba40585b9
mq: expand help text for qdiff
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6561
diff
changeset
|
3176 """diff of the current patch and subsequent modifications |
6621
d5cbbe2c49ce
mq: lose the trailing whitespace
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6611
diff
changeset
|
3177 |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3178 Shows a diff which includes the current patch as well as any |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3179 changes which have been made in the working directory since the |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3180 last refresh (thus showing what the current patch would become |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3181 after a qrefresh). |
6621
d5cbbe2c49ce
mq: lose the trailing whitespace
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6611
diff
changeset
|
3182 |
10973
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10962
diff
changeset
|
3183 Use :hg:`diff` if you only want to see the changes made since the |
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10962
diff
changeset
|
3184 last qrefresh, or :hg:`export qtip` if you want to see changes |
49a07f441496
Use hg role in help strings
Martin Geisler <mg@aragost.com>
parents:
10962
diff
changeset
|
3185 made by the current patch without including changes made since the |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3186 qrefresh. |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3187 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3188 Returns 0 on success. |
6606
088ba40585b9
mq: expand help text for qdiff
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6561
diff
changeset
|
3189 """ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3190 ui.pager(b'qdiff') |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
3191 repo.mq.diff(repo, pats, pycompat.byteskwargs(opts)) |
1808 | 3192 return 0 |
3193 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3194 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3195 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3196 b'qfold', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3197 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3198 (b'e', b'edit', None, _(b'invoke editor on commit messages')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3199 (b'k', b'keep', None, _(b'keep folded patch files')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3200 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3201 + cmdutil.commitopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3202 _(b'hg qfold [-e] [-k] [-m TEXT] [-l FILE] PATCH...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3203 helpcategory=command.CATEGORY_CHANGE_MANAGEMENT, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3204 ) |
2753
84218111e80f
Add -m, -l, -e options to qfold.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3205 def fold(ui, repo, *files, **opts): |
2748
752b9475a700
New mq command qfold: Merge patches into the current patch.
Brendan Cully <brendan@kublai.com>
parents:
2747
diff
changeset
|
3206 """fold the named patches into the current patch |
2753
84218111e80f
Add -m, -l, -e options to qfold.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3207 |
2771
519bf0cd28d2
Add -f option to qfold; improve qfold documentation.
Brendan Cully <brendan@kublai.com>
parents:
2770
diff
changeset
|
3208 Patches must not yet be applied. Each patch will be successively |
519bf0cd28d2
Add -f option to qfold; improve qfold documentation.
Brendan Cully <brendan@kublai.com>
parents:
2770
diff
changeset
|
3209 applied to the current patch in the order given. If all the |
519bf0cd28d2
Add -f option to qfold; improve qfold documentation.
Brendan Cully <brendan@kublai.com>
parents:
2770
diff
changeset
|
3210 patches apply successfully, the current patch will be refreshed |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3211 with the new cumulative patch, and the folded patches will be |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3212 deleted. With -k/--keep, the folded patch files will not be |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3213 removed afterwards. |
2771
519bf0cd28d2
Add -f option to qfold; improve qfold documentation.
Brendan Cully <brendan@kublai.com>
parents:
2770
diff
changeset
|
3214 |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3215 The header for each folded patch will be concatenated with the |
12755
db79d3627872
mq: switched to `` around * * *
Erik Zielke <ez@aragost.com>
parents:
12689
diff
changeset
|
3216 current patch header, separated by a line of ``* * *``. |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3217 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3218 Returns 0 on success.""" |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
3219 opts = pycompat.byteskwargs(opts) |
2748
752b9475a700
New mq command qfold: Merge patches into the current patch.
Brendan Cully <brendan@kublai.com>
parents:
2747
diff
changeset
|
3220 q = repo.mq |
752b9475a700
New mq command qfold: Merge patches into the current patch.
Brendan Cully <brendan@kublai.com>
parents:
2747
diff
changeset
|
3221 if not files: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3222 raise error.Abort(_(b'qfold requires at least one patch name')) |
14581
da40ee1adc2b
mq: rename check_toppatch to checktoppatch
Adrian Buehlmann <adrian@cadifra.com>
parents:
14580
diff
changeset
|
3223 if not q.checktoppatch(repo)[0]: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3224 raise error.Abort(_(b'no patches applied')) |
50010
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3225 |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3226 with repo.wlock(): |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3227 q.checklocalchanges(repo) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3228 |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3229 message = cmdutil.logmessage(ui, opts) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3230 |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3231 parent = q.lookup(b'qtip') |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3232 patches = [] |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3233 messages = [] |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3234 for f in files: |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3235 p = q.lookup(f) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3236 if p in patches or p == parent: |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3237 ui.warn(_(b'skipping already folded patch %s\n') % p) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3238 if q.isapplied(p): |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3239 raise error.Abort( |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3240 _(b'qfold cannot fold already applied patch %s') % p |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3241 ) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3242 patches.append(p) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3243 |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3244 for p in patches: |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3245 if not message: |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3246 ph = patchheader(q.join(p), q.plainmode) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3247 if ph.message: |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3248 messages.append(ph.message) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3249 pf = q.join(p) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3250 (patchsuccess, files, fuzz) = q.patch(repo, pf) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3251 if not patchsuccess: |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3252 raise error.Abort(_(b'error folding patch %s') % p) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3253 |
2753
84218111e80f
Add -m, -l, -e options to qfold.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3254 if not message: |
50010
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3255 ph = patchheader(q.join(parent), q.plainmode) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3256 message = ph.message |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3257 for msg in messages: |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3258 if msg: |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3259 if message: |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3260 message.append(b'* * *') |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3261 message.extend(msg) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3262 message = b'\n'.join(message) |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3263 |
f93bccadcf42
mq: properly take the wlock during the full qfold operation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49996
diff
changeset
|
3264 diffopts = q.patchopts(q.diffopts(), *patches) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3265 q.refresh( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3266 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3267 msg=message, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3268 git=diffopts.git, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3269 edit=opts.get(b'edit'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3270 editform=b'mq.qfold', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3271 ) |
14620
2b9c32929e62
mq: make qrefresh/qfold keep wlock until saving patch status
Yuya Nishihara <yuya@tcha.org>
parents:
14600
diff
changeset
|
3272 q.delete(repo, patches, opts) |
2b9c32929e62
mq: make qrefresh/qfold keep wlock until saving patch status
Yuya Nishihara <yuya@tcha.org>
parents:
14600
diff
changeset
|
3273 q.savedirty() |
2748
752b9475a700
New mq command qfold: Merge patches into the current patch.
Brendan Cully <brendan@kublai.com>
parents:
2747
diff
changeset
|
3274 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3275 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3276 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3277 b"qgoto", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3278 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3279 ( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3280 b'', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3281 b'keep-changes', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3282 None, |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3283 _(b'tolerate non-conflicting local changes'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3284 ), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3285 (b'f', b'force', None, _(b'overwrite any local changes')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3286 (b'', b'no-backup', None, _(b'do not save backup copies of files')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3287 ], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3288 _(b'hg qgoto [OPTION]... PATCH'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3289 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3290 ) |
4432
905397be7688
mq: add qgoto command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4430
diff
changeset
|
3291 def goto(ui, repo, patch, **opts): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
3292 """push or pop patches until named patch is at top of stack |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
3293 |
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
3294 Returns 0 on success.""" |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
3295 opts = pycompat.byteskwargs(opts) |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
3296 opts = fixkeepchangesopts(ui, opts) |
4432
905397be7688
mq: add qgoto command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4430
diff
changeset
|
3297 q = repo.mq |
905397be7688
mq: add qgoto command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4430
diff
changeset
|
3298 patch = q.lookup(patch) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3299 nobackup = opts.get(b'no_backup') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3300 keepchanges = opts.get(b'keep_changes') |
4432
905397be7688
mq: add qgoto command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4430
diff
changeset
|
3301 if q.isapplied(patch): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3302 ret = q.pop( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3303 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3304 patch, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3305 force=opts.get(b'force'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3306 nobackup=nobackup, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3307 keepchanges=keepchanges, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3308 ) |
4432
905397be7688
mq: add qgoto command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4430
diff
changeset
|
3309 else: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3310 ret = q.push( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3311 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3312 patch, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3313 force=opts.get(b'force'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3314 nobackup=nobackup, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3315 keepchanges=keepchanges, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3316 ) |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
3317 q.savedirty() |
4432
905397be7688
mq: add qgoto command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4430
diff
changeset
|
3318 return ret |
905397be7688
mq: add qgoto command.
Bryan O'Sullivan <bos@serpentine.com>
parents:
4430
diff
changeset
|
3319 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3320 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3321 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3322 b"qguard", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3323 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3324 (b'l', b'list', None, _(b'list all patches and guards')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3325 (b'n', b'none', None, _(b'drop all guards')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3326 ], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3327 _(b'hg qguard [-l] [-n] [PATCH] [-- [+GUARD]... [-GUARD]...]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3328 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3329 ) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3330 def guard(ui, repo, *args, **opts): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
3331 """set or print guards for a patch |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3332 |
2940
b1e6d701a03a
mq help text updates and speling fixes
Brendan Cully <brendan@kublai.com>
parents:
2939
diff
changeset
|
3333 Guards control whether a patch can be pushed. A patch with no |
b1e6d701a03a
mq help text updates and speling fixes
Brendan Cully <brendan@kublai.com>
parents:
2939
diff
changeset
|
3334 guards is always pushed. A patch with a positive guard ("+foo") is |
11307
7f72031d4047
mq: use hg reST role some more
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
3335 pushed only if the :hg:`qselect` command has activated it. A patch with |
7f72031d4047
mq: use hg reST role some more
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
3336 a negative guard ("-foo") is never pushed if the :hg:`qselect` command |
2940
b1e6d701a03a
mq help text updates and speling fixes
Brendan Cully <brendan@kublai.com>
parents:
2939
diff
changeset
|
3337 has activated it. |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3338 |
2940
b1e6d701a03a
mq help text updates and speling fixes
Brendan Cully <brendan@kublai.com>
parents:
2939
diff
changeset
|
3339 With no arguments, print the currently active guards. |
b1e6d701a03a
mq help text updates and speling fixes
Brendan Cully <brendan@kublai.com>
parents:
2939
diff
changeset
|
3340 With arguments, set guards for the named patch. |
12389 | 3341 |
3342 .. note:: | |
19997
de16c673455b
documentation: add an extra newline after note directive
Simon Heimberg <simohe@besonet.ch>
parents:
19951
diff
changeset
|
3343 |
12389 | 3344 Specifying negative guards now requires '--'. |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3345 |
9824
87c92b260710
mq: fix literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9733
diff
changeset
|
3346 To set guards on another patch:: |
87c92b260710
mq: fix literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9733
diff
changeset
|
3347 |
10476
3113736dbac5
mq: more instructive use of "--" in qguard help (issue2040)
Martin Geisler <mg@lazybytes.net>
parents:
10413
diff
changeset
|
3348 hg qguard other.patch -- +2.6.17 -stable |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3349 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3350 Returns 0 on success. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
3351 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3352 |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3353 def status(idx): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3354 guards = q.seriesguards[idx] or [b'unguarded'] |
11819
1c00577b0298
qguard: label patch names by status when listing guards
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11789
diff
changeset
|
3355 if q.series[idx] in applied: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3356 state = b'applied' |
11819
1c00577b0298
qguard: label patch names by status when listing guards
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11789
diff
changeset
|
3357 elif q.pushable(idx)[0]: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3358 state = b'unapplied' |
11819
1c00577b0298
qguard: label patch names by status when listing guards
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11789
diff
changeset
|
3359 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3360 state = b'guarded' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3361 label = b'qguard.patch qguard.%s qseries.%s' % (state, state) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3362 ui.write(b'%s: ' % ui.label(q.series[idx], label)) |
11819
1c00577b0298
qguard: label patch names by status when listing guards
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11789
diff
changeset
|
3363 |
10822
4c63f8e787b8
qguard: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10814
diff
changeset
|
3364 for i, guard in enumerate(guards): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3365 if guard.startswith(b'+'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3366 ui.write(guard, label=b'qguard.positive') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3367 elif guard.startswith(b'-'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3368 ui.write(guard, label=b'qguard.negative') |
10822
4c63f8e787b8
qguard: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10814
diff
changeset
|
3369 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3370 ui.write(guard, label=b'qguard.unguarded') |
10822
4c63f8e787b8
qguard: make use of output labeling
Brodie Rao <brodie@bitheap.org>
parents:
10814
diff
changeset
|
3371 if i != len(guards) - 1: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3372 ui.write(b' ') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3373 ui.write(b'\n') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3374 |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3375 q = repo.mq |
44452
9d2b2df2c2ba
cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com>
parents:
44435
diff
changeset
|
3376 applied = {p.name for p in q.applied} |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3377 patch = None |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3378 args = list(args) |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
3379 if opts.get('list'): |
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
3380 if args or opts.get('none'): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3381 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
3382 _(b'cannot mix -l/--list with options or arguments') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3383 ) |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
3384 for i in range(len(q.series)): |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3385 status(i) |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3386 return |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3387 if not args or args[0][0:1] in b'-+': |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3388 if not q.applied: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3389 raise error.Abort(_(b'no patches applied')) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3390 patch = q.applied[-1].name |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3391 if patch is None and args[0][0:1] not in b'-+': |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3392 patch = args.pop(0) |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3393 if patch is None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3394 raise error.Abort(_(b'no patch to work with')) |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
3395 if args or opts.get('none'): |
14574
12fba7bcb4f1
mq: rename find_series to findseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14573
diff
changeset
|
3396 idx = q.findseries(patch) |
4133
a9ee6c53af8d
mq: abort cleanly when invalid patch name is given to qguard
Christian Ebert <blacktrash@gmx.net>
parents:
4090
diff
changeset
|
3397 if idx is None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3398 raise error.Abort(_(b'no patch named %s') % patch) |
14577
76357276662e
mq: rename set_guards to setguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14576
diff
changeset
|
3399 q.setguards(idx, args) |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
3400 q.savedirty() |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3401 else: |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3402 status(q.series.index(q.lookup(patch))) |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3403 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3404 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3405 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3406 b"qheader", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3407 [], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3408 _(b'hg qheader [PATCH]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3409 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3410 ) |
2747
0016fc748f61
Add command qheader to display the header of a given patch.
Brendan Cully <brendan@kublai.com>
parents:
2746
diff
changeset
|
3411 def header(ui, repo, patch=None): |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3412 """print the header of the topmost or specified patch |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3413 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3414 Returns 0 on success.""" |
2747
0016fc748f61
Add command qheader to display the header of a given patch.
Brendan Cully <brendan@kublai.com>
parents:
2746
diff
changeset
|
3415 q = repo.mq |
0016fc748f61
Add command qheader to display the header of a given patch.
Brendan Cully <brendan@kublai.com>
parents:
2746
diff
changeset
|
3416 |
0016fc748f61
Add command qheader to display the header of a given patch.
Brendan Cully <brendan@kublai.com>
parents:
2746
diff
changeset
|
3417 if patch: |
0016fc748f61
Add command qheader to display the header of a given patch.
Brendan Cully <brendan@kublai.com>
parents:
2746
diff
changeset
|
3418 patch = q.lookup(patch) |
0016fc748f61
Add command qheader to display the header of a given patch.
Brendan Cully <brendan@kublai.com>
parents:
2746
diff
changeset
|
3419 else: |
0016fc748f61
Add command qheader to display the header of a given patch.
Brendan Cully <brendan@kublai.com>
parents:
2746
diff
changeset
|
3420 if not q.applied: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3421 ui.write(_(b'no patches applied\n')) |
3008
c203ccd7d838
qheader: exit withh meaningful error code.
Bryan O'Sullivan <bos@serpentine.com>
parents:
3006
diff
changeset
|
3422 return 1 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3423 patch = q.lookup(b'qtip') |
10397
8cb81d75730c
mq: add parent node IDs to MQ patches on qrefresh/qnew
Steve Losh <steve@stevelosh.com>
parents:
10382
diff
changeset
|
3424 ph = patchheader(q.join(patch), q.plainmode) |
2747
0016fc748f61
Add command qheader to display the header of a given patch.
Brendan Cully <brendan@kublai.com>
parents:
2746
diff
changeset
|
3425 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3426 ui.write(b'\n'.join(ph.message) + b'\n') |
2747
0016fc748f61
Add command qheader to display the header of a given patch.
Brendan Cully <brendan@kublai.com>
parents:
2746
diff
changeset
|
3427 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3428 |
1808 | 3429 def lastsavename(path): |
2794
86c54b7cd331
mq: fix variables shadowing builtin
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2792
diff
changeset
|
3430 (directory, base) = os.path.split(path) |
86c54b7cd331
mq: fix variables shadowing builtin
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2792
diff
changeset
|
3431 names = os.listdir(directory) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3432 namere = re.compile(b"%s.([0-9]+)" % base) |
2794
86c54b7cd331
mq: fix variables shadowing builtin
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2792
diff
changeset
|
3433 maxindex = None |
1808 | 3434 maxname = None |
3435 for f in names: | |
3436 m = namere.match(f) | |
3437 if m: | |
3438 index = int(m.group(1)) | |
8527
f9a80054dd3c
use 'x is None' instead of 'x == None'
Martin Geisler <mg@lazybytes.net>
parents:
8525
diff
changeset
|
3439 if maxindex is None or index > maxindex: |
2794
86c54b7cd331
mq: fix variables shadowing builtin
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2792
diff
changeset
|
3440 maxindex = index |
1808 | 3441 maxname = f |
3442 if maxname: | |
2794
86c54b7cd331
mq: fix variables shadowing builtin
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
2792
diff
changeset
|
3443 return (os.path.join(directory, maxname), maxindex) |
1808 | 3444 return (None, None) |
1810
7596611ab3d5
Whitespace, tab and formatting cleanups, mainly in mq.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1808
diff
changeset
|
3445 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3446 |
1808 | 3447 def savename(path): |
3448 (last, index) = lastsavename(path) | |
3449 if last is None: | |
3450 index = 0 | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3451 newpath = path + b".%d" % (index + 1) |
1808 | 3452 return newpath |
3453 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3454 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3455 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3456 b"qpush", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3457 [ |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3458 ( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3459 b'', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3460 b'keep-changes', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3461 None, |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3462 _(b'tolerate non-conflicting local changes'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3463 ), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3464 (b'f', b'force', None, _(b'apply on top of local changes')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3465 ( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3466 b'e', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3467 b'exact', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3468 None, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3469 _(b'apply the target patch to its recorded parent'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3470 ), |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3471 (b'l', b'list', None, _(b'list patch name in commit text')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3472 (b'a', b'all', None, _(b'apply all patches')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3473 (b'm', b'merge', None, _(b'merge from another queue (DEPRECATED)')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3474 (b'n', b'name', b'', _(b'merge queue name (DEPRECATED)'), _(b'NAME')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3475 ( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3476 b'', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3477 b'move', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3478 None, |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3479 _(b'reorder patch series and apply only the patch'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3480 ), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3481 (b'', b'no-backup', None, _(b'do not save backup copies of files')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3482 ], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3483 _(b'hg qpush [-f] [-l] [-a] [--move] [PATCH | INDEX]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3484 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3485 helpbasic=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3486 ) |
1808 | 3487 def push(ui, repo, patch=None, **opts): |
6552
315b36ce6251
mq: add a little documentation on qpush -f
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6382
diff
changeset
|
3488 """push the next patch onto the stack |
6553
0bb76d168437
remove trailing spaces
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6552
diff
changeset
|
3489 |
16654
490ed8972f1b
mq: introduce qpush --check
Patrick Mezard <patrick@mezard.eu>
parents:
16653
diff
changeset
|
3490 By default, abort if the working directory contains uncommitted |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
3491 changes. With --keep-changes, abort only if the uncommitted files |
16654
490ed8972f1b
mq: introduce qpush --check
Patrick Mezard <patrick@mezard.eu>
parents:
16653
diff
changeset
|
3492 overlap with patched files. With -f/--force, backup and patch over |
490ed8972f1b
mq: introduce qpush --check
Patrick Mezard <patrick@mezard.eu>
parents:
16653
diff
changeset
|
3493 uncommitted changes. |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3494 |
13725
6783f47d90dd
mq: fix typo in docstring
Stefano Tortarolo <stefano.tortarolo@gmail.com>
parents:
13632
diff
changeset
|
3495 Return 0 on success. |
6552
315b36ce6251
mq: add a little documentation on qpush -f
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6382
diff
changeset
|
3496 """ |
2724
9c41ae1908c7
mq: replace module-wide repo hash with a repo attribute
Brendan Cully <brendan@kublai.com>
parents:
2723
diff
changeset
|
3497 q = repo.mq |
1808 | 3498 mergeq = None |
1810
7596611ab3d5
Whitespace, tab and formatting cleanups, mainly in mq.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1808
diff
changeset
|
3499 |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
3500 opts = pycompat.byteskwargs(opts) |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
3501 opts = fixkeepchangesopts(ui, opts) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3502 if opts.get(b'merge'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3503 if opts.get(b'name'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3504 newpath = repo.vfs.join(opts.get(b'name')) |
1808 | 3505 else: |
1810
7596611ab3d5
Whitespace, tab and formatting cleanups, mainly in mq.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1808
diff
changeset
|
3506 newpath, i = lastsavename(q.path) |
1808 | 3507 if not newpath: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3508 ui.warn(_(b"no saved queues found, please use -n\n")) |
1808 | 3509 return 1 |
19064
743daa601445
mq: do not inherit settings form base repo in mqrepo (Fixes issue2358)
Simon Heimberg <simohe@besonet.ch>
parents:
18958
diff
changeset
|
3510 mergeq = queue(ui, repo.baseui, repo.path, newpath) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3511 ui.warn(_(b"merging with queue at: %s\n") % mergeq.path) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3512 ret = q.push( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3513 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3514 patch, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3515 force=opts.get(b'force'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3516 list=opts.get(b'list'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3517 mergeq=mergeq, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3518 all=opts.get(b'all'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3519 move=opts.get(b'move'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3520 exact=opts.get(b'exact'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3521 nobackup=opts.get(b'no_backup'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3522 keepchanges=opts.get(b'keep_changes'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3523 ) |
1808 | 3524 return ret |
3525 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3526 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3527 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3528 b"qpop", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3529 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3530 (b'a', b'all', None, _(b'pop all patches')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3531 (b'n', b'name', b'', _(b'queue name to pop (DEPRECATED)'), _(b'NAME')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3532 ( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3533 b'', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3534 b'keep-changes', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3535 None, |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3536 _(b'tolerate non-conflicting local changes'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3537 ), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3538 (b'f', b'force', None, _(b'forget any local changes to patched files')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3539 (b'', b'no-backup', None, _(b'do not save backup copies of files')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3540 ], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3541 _(b'hg qpop [-a] [-f] [PATCH | INDEX]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3542 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3543 helpbasic=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3544 ) |
1808 | 3545 def pop(ui, repo, patch=None, **opts): |
6611
f4c612da788d
mq: add correct documentation for qpop
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6610
diff
changeset
|
3546 """pop the current patch off the stack |
6621
d5cbbe2c49ce
mq: lose the trailing whitespace
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6611
diff
changeset
|
3547 |
16653
73b8c2554be8
mq: introduce qpop --check
Patrick Mezard <patrick@mezard.eu>
parents:
16635
diff
changeset
|
3548 Without argument, pops off the top of the patch stack. If given a |
73b8c2554be8
mq: introduce qpop --check
Patrick Mezard <patrick@mezard.eu>
parents:
16635
diff
changeset
|
3549 patch name, keeps popping off patches until the named patch is at |
73b8c2554be8
mq: introduce qpop --check
Patrick Mezard <patrick@mezard.eu>
parents:
16635
diff
changeset
|
3550 the top of the stack. |
73b8c2554be8
mq: introduce qpop --check
Patrick Mezard <patrick@mezard.eu>
parents:
16635
diff
changeset
|
3551 |
73b8c2554be8
mq: introduce qpop --check
Patrick Mezard <patrick@mezard.eu>
parents:
16635
diff
changeset
|
3552 By default, abort if the working directory contains uncommitted |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
3553 changes. With --keep-changes, abort only if the uncommitted files |
16653
73b8c2554be8
mq: introduce qpop --check
Patrick Mezard <patrick@mezard.eu>
parents:
16635
diff
changeset
|
3554 overlap with patched files. With -f/--force, backup and discard |
73b8c2554be8
mq: introduce qpop --check
Patrick Mezard <patrick@mezard.eu>
parents:
16635
diff
changeset
|
3555 changes made to such files. |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3556 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3557 Return 0 on success. |
6611
f4c612da788d
mq: add correct documentation for qpop
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6610
diff
changeset
|
3558 """ |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
3559 opts = pycompat.byteskwargs(opts) |
16733
4da10c00a20c
mq: rename --check into --keep-changes
Patrick Mezard <patrick@mezard.eu>
parents:
16718
diff
changeset
|
3560 opts = fixkeepchangesopts(ui, opts) |
1808 | 3561 localupdate = True |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3562 if opts.get(b'name'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3563 q = queue(ui, repo.baseui, repo.path, repo.vfs.join(opts.get(b'name'))) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3564 ui.warn(_(b'using patch queue: %s\n') % q.path) |
1808 | 3565 localupdate = False |
3566 else: | |
2724
9c41ae1908c7
mq: replace module-wide repo hash with a repo attribute
Brendan Cully <brendan@kublai.com>
parents:
2723
diff
changeset
|
3567 q = repo.mq |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3568 ret = q.pop( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3569 repo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3570 patch, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3571 force=opts.get(b'force'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3572 update=localupdate, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3573 all=opts.get(b'all'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3574 nobackup=opts.get(b'no_backup'), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3575 keepchanges=opts.get(b'keep_changes'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3576 ) |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
3577 q.savedirty() |
4099
cf5580c16b13
mq: propagate the return error of pop
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
4096
diff
changeset
|
3578 return ret |
1808 | 3579 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3580 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3581 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3582 b"qrename|qmv", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3583 [], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3584 _(b'hg qrename PATCH1 [PATCH2]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3585 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3586 ) |
2750
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3587 def rename(ui, repo, patch, name=None, **opts): |
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3588 """rename a patch |
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3589 |
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3590 With one argument, renames the current patch to PATCH1. |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3591 With two arguments, renames PATCH1 to PATCH2. |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3592 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3593 Returns 0 on success.""" |
2750
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3594 q = repo.mq |
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3595 if not name: |
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3596 name = patch |
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3597 patch = None |
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3598 |
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3599 if patch: |
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3600 patch = q.lookup(patch) |
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3601 else: |
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3602 if not q.applied: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3603 ui.write(_(b'no patches applied\n')) |
2750
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3604 return |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3605 patch = q.lookup(b'qtip') |
3083
82c9d1aac308
Make qrename handle directory targets; closes #333.
Brendan Cully <brendan@kublai.com>
parents:
3082
diff
changeset
|
3606 absdest = q.join(name) |
82c9d1aac308
Make qrename handle directory targets; closes #333.
Brendan Cully <brendan@kublai.com>
parents:
3082
diff
changeset
|
3607 if os.path.isdir(absdest): |
4037
bbdba01cce28
Enforce unixish style for all generated patch names.
Patrick Mezard <pmezard@gmail.com>
parents:
4016
diff
changeset
|
3608 name = normname(os.path.join(name, os.path.basename(patch))) |
3083
82c9d1aac308
Make qrename handle directory targets; closes #333.
Brendan Cully <brendan@kublai.com>
parents:
3082
diff
changeset
|
3609 absdest = q.join(name) |
14423 | 3610 q.checkpatchname(name) |
2750
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3611 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3612 ui.note(_(b'renaming %s to %s\n') % (patch, name)) |
14574
12fba7bcb4f1
mq: rename find_series to findseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14573
diff
changeset
|
3613 i = q.findseries(patch) |
14572
8ff2957c1d82
mq: rename full_series to fullseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14564
diff
changeset
|
3614 guards = q.guard_re.findall(q.fullseries[i]) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3615 q.fullseries[i] = name + b''.join([b' #' + g for g in guards]) |
14575
845c864200d0
mq: rename parse_series to parseseries
Adrian Buehlmann <adrian@cadifra.com>
parents:
14574
diff
changeset
|
3616 q.parseseries() |
15879
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
3617 q.seriesdirty = True |
2750
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3618 |
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3619 info = q.isapplied(patch) |
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3620 if info: |
2818
bdc067ff6cf5
Make mq camelcase consistent with the rest of hg.
Brendan Cully <brendan@kublai.com>
parents:
2816
diff
changeset
|
3621 q.applied[info[0]] = statusentry(info[1], name) |
15879
710e6bf15538
mq: consistently use boolean values for dirty flags
Mads Kiilerich <mads@kiilerich.com>
parents:
15878
diff
changeset
|
3622 q.applieddirty = True |
2750
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3623 |
11513
0c944b7af564
mq: fixed ENOENT when qrename to new/directory.patch
Yuya Nishihara <yuya@tcha.org>
parents:
11462
diff
changeset
|
3624 destdir = os.path.dirname(absdest) |
0c944b7af564
mq: fixed ENOENT when qrename to new/directory.patch
Yuya Nishihara <yuya@tcha.org>
parents:
11462
diff
changeset
|
3625 if not os.path.isdir(destdir): |
0c944b7af564
mq: fixed ENOENT when qrename to new/directory.patch
Yuya Nishihara <yuya@tcha.org>
parents:
11462
diff
changeset
|
3626 os.makedirs(destdir) |
2819 | 3627 util.rename(q.join(patch), absdest) |
2750
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3628 r = q.qrepo() |
12875
b59b5193d4d0
mq: qrename should not touch the dirstate if src is untracked (issue2460)
Patrick Mezard <pmezard@gmail.com>
parents:
12850
diff
changeset
|
3629 if r and patch in r.dirstate: |
50047
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
3630 with r.wlock(), r.dirstate.changing_files(r): |
3c431f7551dd
dirstate: use wlock and `dirstate.change_files` to scope the change in `mq`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50010
diff
changeset
|
3631 wctx = r[None] |
48091
bac753df8021
dirstate-item: use `added` instead of the `state` in the `mq` extension
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47756
diff
changeset
|
3632 if r.dirstate.get_entry(patch).added: |
47601
4dca29b00405
mq: use `set_untracked` in `qrename`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47598
diff
changeset
|
3633 r.dirstate.set_untracked(patch) |
47598
305356a7ec99
mq: use `set_tracked` in `qrename`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47597
diff
changeset
|
3634 r.dirstate.set_tracked(name) |
6648
2519976a998b
mq: handle added patch renaming correctly
Weijun Wang <weijun.wang@sun.com>
parents:
6635
diff
changeset
|
3635 else: |
11303
a1aad8333864
move working dir/dirstate methods from localrepo to workingctx
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
11302
diff
changeset
|
3636 wctx.copy(patch, name) |
14435
5f6090e559fa
context: make forget work like commands.forget
Matt Mackall <mpm@selenic.com>
parents:
14434
diff
changeset
|
3637 wctx.forget([patch]) |
2750
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3638 |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
3639 q.savedirty() |
2750
8c814c1ab31e
New self-explanatory command qrename.
Brendan Cully <brendan@kublai.com>
parents:
2748
diff
changeset
|
3640 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3641 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3642 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3643 b"qrestore", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3644 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3645 (b'd', b'delete', None, _(b'delete save entry')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3646 (b'u', b'update', None, _(b'update queue working directory')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3647 ], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3648 _(b'hg qrestore [-d] [-u] REV'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3649 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3650 ) |
1808 | 3651 def restore(ui, repo, rev, **opts): |
10360
bcf90e712dc3
mq: deprecate qsave, qrestore and related options
Dirkjan Ochtman <djc.ochtman@kentyde.com>
parents:
10359
diff
changeset
|
3652 """restore the queue state saved by a revision (DEPRECATED) |
bcf90e712dc3
mq: deprecate qsave, qrestore and related options
Dirkjan Ochtman <djc.ochtman@kentyde.com>
parents:
10359
diff
changeset
|
3653 |
12352
5be733b20bd1
mq: fix the deprecation comment for qsave & qrestore.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12344
diff
changeset
|
3654 This command is deprecated, use :hg:`rebase` instead.""" |
1808 | 3655 rev = repo.lookup(rev) |
2724
9c41ae1908c7
mq: replace module-wide repo hash with a repo attribute
Brendan Cully <brendan@kublai.com>
parents:
2723
diff
changeset
|
3656 q = repo.mq |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
3657 q.restore(repo, rev, delete=opts.get('delete'), qupdate=opts.get('update')) |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
3658 q.savedirty() |
1808 | 3659 return 0 |
3660 | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3661 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3662 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3663 b"qsave", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3664 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3665 (b'c', b'copy', None, _(b'copy patch directory')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3666 (b'n', b'name', b'', _(b'copy directory name'), _(b'NAME')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3667 (b'e', b'empty', None, _(b'clear queue status file')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3668 (b'f', b'force', None, _(b'force copy')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3669 ] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3670 + cmdutil.commitopts, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3671 _(b'hg qsave [-m TEXT] [-l FILE] [-c] [-n NAME] [-e] [-f]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3672 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3673 ) |
1808 | 3674 def save(ui, repo, **opts): |
10360
bcf90e712dc3
mq: deprecate qsave, qrestore and related options
Dirkjan Ochtman <djc.ochtman@kentyde.com>
parents:
10359
diff
changeset
|
3675 """save current queue state (DEPRECATED) |
bcf90e712dc3
mq: deprecate qsave, qrestore and related options
Dirkjan Ochtman <djc.ochtman@kentyde.com>
parents:
10359
diff
changeset
|
3676 |
12352
5be733b20bd1
mq: fix the deprecation comment for qsave & qrestore.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
12344
diff
changeset
|
3677 This command is deprecated, use :hg:`rebase` instead.""" |
2724
9c41ae1908c7
mq: replace module-wide repo hash with a repo attribute
Brendan Cully <brendan@kublai.com>
parents:
2723
diff
changeset
|
3678 q = repo.mq |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
3679 opts = pycompat.byteskwargs(opts) |
14635
217b7d83afc3
cmdutil, logmessage: use ui.fin when reading from '-'
Idan Kamara <idankk86@gmail.com>
parents:
14620
diff
changeset
|
3680 message = cmdutil.logmessage(ui, opts) |
2694
0fb28dbf0dc7
MQ: uniformise message and logfile option.
"Mathieu Clabaut <mathieu.clabaut@gmail.com>"
parents:
2682
diff
changeset
|
3681 ret = q.save(repo, msg=message) |
1808 | 3682 if ret: |
3683 return ret | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3684 q.savedirty() # save to .hg/patches before copying |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3685 if opts.get(b'copy'): |
1808 | 3686 path = q.path |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3687 if opts.get(b'name'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3688 newpath = os.path.join(q.basepath, opts.get(b'name')) |
1808 | 3689 if os.path.exists(newpath): |
3690 if not os.path.isdir(newpath): | |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3691 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
3692 _(b'destination %s exists and is not a directory') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3693 % newpath |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3694 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3695 if not opts.get(b'force'): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3696 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
3697 _(b'destination %s exists, use -f to force') % newpath |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3698 ) |
1808 | 3699 else: |
3700 newpath = savename(path) | |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3701 ui.warn(_(b"copy %s to %s\n") % (path, newpath)) |
1808 | 3702 util.copyfiles(path, newpath) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3703 if opts.get(b'empty'): |
15880
02b135558756
mq: make qsave implementation more explicit
Mads Kiilerich <mads@kiilerich.com>
parents:
15879
diff
changeset
|
3704 del q.applied[:] |
02b135558756
mq: make qsave implementation more explicit
Mads Kiilerich <mads@kiilerich.com>
parents:
15879
diff
changeset
|
3705 q.applieddirty = True |
02b135558756
mq: make qsave implementation more explicit
Mads Kiilerich <mads@kiilerich.com>
parents:
15879
diff
changeset
|
3706 q.savedirty() |
1808 | 3707 return 0 |
1810
7596611ab3d5
Whitespace, tab and formatting cleanups, mainly in mq.py
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1808
diff
changeset
|
3708 |
1808 | 3709 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3710 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3711 b"qselect", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3712 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3713 (b'n', b'none', None, _(b'disable all guards')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3714 (b's', b'series', None, _(b'list all guards in series file')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3715 (b'', b'pop', None, _(b'pop to before first guarded applied patch')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3716 (b'', b'reapply', None, _(b'pop, then reapply patches')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3717 ], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3718 _(b'hg qselect [OPTION]... [GUARD]...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3719 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3720 ) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3721 def select(ui, repo, *args, **opts): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
3722 """set or print guarded patches to push |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3723 |
11307
7f72031d4047
mq: use hg reST role some more
Martin Geisler <mg@aragost.com>
parents:
11303
diff
changeset
|
3724 Use the :hg:`qguard` command to set or print guards on patch, then use |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3725 qselect to tell mq which guards to use. A patch will be pushed if |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3726 it has no guards or any positive guards match the currently |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3727 selected guard, but will not be pushed if any negative guards |
9824
87c92b260710
mq: fix literal blocks in docstrings
Martin Geisler <mg@lazybytes.net>
parents:
9733
diff
changeset
|
3728 match the current guard. For example:: |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3729 |
13791 | 3730 qguard foo.patch -- -stable (negative guard) |
3731 qguard bar.patch +stable (positive guard) | |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3732 qselect stable |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3733 |
2940
b1e6d701a03a
mq help text updates and speling fixes
Brendan Cully <brendan@kublai.com>
parents:
2939
diff
changeset
|
3734 This activates the "stable" guard. mq will skip foo.patch (because |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3735 it has a negative match) but push bar.patch (because it has a |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3736 positive match). |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3737 |
2940
b1e6d701a03a
mq help text updates and speling fixes
Brendan Cully <brendan@kublai.com>
parents:
2939
diff
changeset
|
3738 With no arguments, prints the currently active guards. |
b1e6d701a03a
mq help text updates and speling fixes
Brendan Cully <brendan@kublai.com>
parents:
2939
diff
changeset
|
3739 With one argument, sets the active guard. |
3223
53e843840349
Whitespace/Tab cleanup
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3186
diff
changeset
|
3740 |
2940
b1e6d701a03a
mq help text updates and speling fixes
Brendan Cully <brendan@kublai.com>
parents:
2939
diff
changeset
|
3741 Use -n/--none to deactivate guards (no other arguments needed). |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3742 When no guards are active, patches with positive guards are |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3743 skipped and patches with negative guards are pushed. |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3744 |
2940
b1e6d701a03a
mq help text updates and speling fixes
Brendan Cully <brendan@kublai.com>
parents:
2939
diff
changeset
|
3745 qselect can change the guards on applied patches. It does not pop |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3746 guarded patches by default. Use --pop to pop back to the last |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3747 applied patch that is not guarded. Use --reapply (which implies |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3748 --pop) to push back to the current patch afterwards, but skip |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3749 guarded patches. |
2844
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3750 |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3751 Use -s/--series to print a list of all guards in the series file |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3752 (no other arguments needed). Use -v for more information. |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3753 |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
3754 Returns 0 on success.""" |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3755 |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3756 q = repo.mq |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
3757 opts = pycompat.byteskwargs(opts) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3758 guards = q.active() |
22453
fd0f0b0d316d
mq: report correct numbers for changing "number of guarded, applied patches"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
21965
diff
changeset
|
3759 pushable = lambda i: q.pushable(q.applied[i].name)[0] |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3760 if args or opts.get(b'none'): |
2844
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3761 old_unapplied = q.unapplied(repo) |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
3762 old_guarded = [i for i in range(len(q.applied)) if not pushable(i)] |
14578
28a2646f3b81
mq: rename set_active to setactive
Adrian Buehlmann <adrian@cadifra.com>
parents:
14577
diff
changeset
|
3763 q.setactive(args) |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
3764 q.savedirty() |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3765 if not args: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3766 ui.status(_(b'guards deactivated\n')) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3767 if not opts.get(b'pop') and not opts.get(b'reapply'): |
2844
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3768 unapplied = q.unapplied(repo) |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
3769 guarded = [i for i in range(len(q.applied)) if not pushable(i)] |
2844
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3770 if len(unapplied) != len(old_unapplied): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3771 ui.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3772 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3773 b'number of unguarded, unapplied patches has ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3774 b'changed from %d to %d\n' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3775 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3776 % (len(old_unapplied), len(unapplied)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3777 ) |
2844
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3778 if len(guarded) != len(old_guarded): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3779 ui.status( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3780 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3781 b'number of guarded, applied patches has changed ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3782 b'from %d to %d\n' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3783 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3784 % (len(old_guarded), len(guarded)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3785 ) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3786 elif opts.get(b'series'): |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3787 guards = {} |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3788 noguards = 0 |
14573
d590ff1f22b2
mq: rename series_guards to seriesguards
Adrian Buehlmann <adrian@cadifra.com>
parents:
14572
diff
changeset
|
3789 for gs in q.seriesguards: |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3790 if not gs: |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3791 noguards += 1 |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3792 for g in gs: |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3793 guards.setdefault(g, 0) |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3794 guards[g] += 1 |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3795 if ui.verbose: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3796 guards[b'NONE'] = noguards |
36282
3e1139b7d617
py3: explicitly convert result of dict.items() into list
Pulkit Goyal <7895pulkit@gmail.com>
parents:
36281
diff
changeset
|
3797 guards = list(guards.items()) |
9032
1fa80c5428b8
compat: use 'key' argument instead of 'cmp' when sorting a list
Alejandro Santos <alejolp@alejolp.com>
parents:
9016
diff
changeset
|
3798 guards.sort(key=lambda x: x[0][1:]) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3799 if guards: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3800 ui.note(_(b'guards in series file:\n')) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3801 for guard, count in guards: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3802 ui.note(b'%2d ' % count) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3803 ui.write(guard, b'\n') |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3804 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3805 ui.note(_(b'no guards in series file\n')) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3806 else: |
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3807 if guards: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3808 ui.note(_(b'active guards:\n')) |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3809 for g in guards: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3810 ui.write(g, b'\n') |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3811 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3812 ui.write(_(b'no active guards\n')) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3813 reapply = opts.get(b'reapply') and q.applied and q.applied[-1].name |
2844
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3814 popped = False |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3815 if opts.get(b'pop') or opts.get(b'reapply'): |
49284
d44e3c45f0e4
py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de>
parents:
48946
diff
changeset
|
3816 for i in range(len(q.applied)): |
22456
4bbcee186fc6
mq: examine "pushable" of already applied patch correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
22455
diff
changeset
|
3817 if not pushable(i): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3818 ui.status(_(b'popping guarded patches\n')) |
2844
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3819 popped = True |
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3820 if i == 0: |
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3821 q.pop(repo, all=True) |
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3822 else: |
22455
c89379d47e95
mq: pop correct patches when changing pushable-ness of already applied ones
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
22454
diff
changeset
|
3823 q.pop(repo, q.applied[i - 1].name) |
2844
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3824 break |
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3825 if popped: |
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3826 try: |
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3827 if reapply: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3828 ui.status(_(b'reapplying unguarded patches\n')) |
2844
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3829 q.push(repo, reapply) |
582cbc4392cb
qselect: add --pop, --reapply options
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2830
diff
changeset
|
3830 finally: |
14580
92101ea35015
mq: rename save_dirty to savedirty
Adrian Buehlmann <adrian@cadifra.com>
parents:
14579
diff
changeset
|
3831 q.savedirty() |
2821
2e4ace008c94
mq: new commands qselect, qguard
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2819
diff
changeset
|
3832 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3833 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3834 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3835 b"qfinish", |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3836 [(b'a', b'applied', None, _(b'finish all applied changesets'))], |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3837 _(b'hg qfinish [-a] [REV]...'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3838 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3839 ) |
6645
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
3840 def finish(ui, repo, *revrange, **opts): |
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
3841 """move applied patches into repository history |
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
3842 |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3843 Finishes the specified revisions (corresponding to applied |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3844 patches) by moving them out of mq control into regular repository |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3845 history. |
6645
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
3846 |
8076
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3847 Accepts a revision range or the -a/--applied option. If --applied |
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3848 is specified, all applied mq revisions are removed from mq |
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3849 control. Otherwise, the given revisions must be at the base of the |
5ec526c1a32f
help texts: write command line switches as -a/--abc
Martin Geisler <mg@lazybytes.net>
parents:
8075
diff
changeset
|
3850 stack of applied patches. |
6645
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
3851 |
7994
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3852 This can be especially useful if your changes have been applied to |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3853 an upstream repository, or if you are about to push your changes |
3c22fdc741d8
mq: word-wrap help texts at 70 characters
Martin Geisler <mg@daimi.au.dk>
parents:
7983
diff
changeset
|
3854 to upstream. |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3855 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3856 Returns 0 on success. |
6645
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
3857 """ |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
3858 if not opts.get('applied') and not revrange: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3859 raise error.Abort(_(b'no revisions specified')) |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
3860 elif opts.get('applied'): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3861 revrange = (b'qbase::qtip',) + revrange |
6645
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
3862 |
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
3863 q = repo.mq |
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
3864 if not q.applied: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3865 ui.status(_(b'no patches applied\n')) |
6645
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
3866 return 0 |
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
3867 |
48116
5ced12cfa41b
errors: raise InputError on bad revset to revrange() iff provided by the user
Martin von Zweigbergk <martinvonz@google.com>
parents:
48092
diff
changeset
|
3868 revs = logcmdutil.revrange(repo, revrange) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3869 if repo[b'.'].rev() in revs and repo[None].files(): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3870 ui.warn(_(b'warning: uncommitted changes in the working directory\n')) |
17512 | 3871 # queue.finish may changes phases but leave the responsibility to lock the |
15920
885e0c71db9b
mq: turn changeset draft on qfinish (except if qparent is secret)
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15883
diff
changeset
|
3872 # repo to the caller to avoid deadlock with wlock. This command code is |
17424
e7cfe3587ea4
fix trivial spelling errors
Mads Kiilerich <mads@kiilerich.com>
parents:
17191
diff
changeset
|
3873 # responsibility for this locking. |
27847
71853c0ba592
with: use context manager in qfinish
Bryan O'Sullivan <bryano@fb.com>
parents:
27832
diff
changeset
|
3874 with repo.lock(): |
15920
885e0c71db9b
mq: turn changeset draft on qfinish (except if qparent is secret)
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15883
diff
changeset
|
3875 q.finish(repo, revs) |
885e0c71db9b
mq: turn changeset draft on qfinish (except if qparent is secret)
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15883
diff
changeset
|
3876 q.savedirty() |
6645
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
3877 return 0 |
37eedb1a1848
mq: introduce the qfinish command
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
6644
diff
changeset
|
3878 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3879 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3880 @command( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3881 b"qqueue", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3882 [ |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3883 (b'l', b'list', False, _(b'list all available queues')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3884 (b'', b'active', False, _(b'print name of active queue')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3885 (b'c', b'create', False, _(b'create new queue')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3886 (b'', b'rename', False, _(b'rename active queue')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3887 (b'', b'delete', False, _(b'delete reference to queue')), |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3888 (b'', b'purge', False, _(b'delete queue, and remove patch dir')), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3889 ], |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3890 _(b'[OPTION] [QUEUE]'), |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3891 helpcategory=command.CATEGORY_CHANGE_ORGANIZATION, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3892 ) |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3893 def qqueue(ui, repo, name=None, **opts): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
3894 """manage multiple patch queues |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3895 |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3896 Supports switching between different patch queues, as well as creating |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3897 new patch queues and deleting existing ones. |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3898 |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3899 Omitting a queue name or specifying -l/--list will show you the registered |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3900 queues - by default the "normal" patches queue is registered. The currently |
14987
3709cca378ff
mq/qqueue: print current queue name
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
14943
diff
changeset
|
3901 active queue will be marked with "(active)". Specifying --active will print |
3709cca378ff
mq/qqueue: print current queue name
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
14943
diff
changeset
|
3902 only the name of the active queue. |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3903 |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3904 To create a new queue, use -c/--create. The queue is automatically made |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3905 active, except in the case where there are applied patches from the |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3906 currently active queue in the repository. Then the queue will only be |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3907 created and switching will fail. |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3908 |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3909 To delete an existing queue, use --delete. You cannot delete the currently |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3910 active queue. |
12538
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3911 |
c87216e5e43e
mq: added return 0 on success
Erik Zielke <ez@aragost.com>
parents:
12508
diff
changeset
|
3912 Returns 0 on success. |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
3913 """ |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3914 q = repo.mq |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3915 _defaultqueue = b'patches' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3916 _allqueues = b'patches.queues' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3917 _activequeue = b'patches.queue' |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3918 |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3919 def _getcurrent(): |
11270
457813cb3024
mq: fix naming issues for qqueue directories
Henrik Stuart <hg@hstuart.dk>
parents:
11234
diff
changeset
|
3920 cur = os.path.basename(q.path) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3921 if cur.startswith(b'patches-'): |
11270
457813cb3024
mq: fix naming issues for qqueue directories
Henrik Stuart <hg@hstuart.dk>
parents:
11234
diff
changeset
|
3922 cur = cur[8:] |
457813cb3024
mq: fix naming issues for qqueue directories
Henrik Stuart <hg@hstuart.dk>
parents:
11234
diff
changeset
|
3923 return cur |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3924 |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3925 def _noqueues(): |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3926 try: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3927 fh = repo.vfs(_allqueues, b'r') |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3928 fh.close() |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3929 except IOError: |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3930 return True |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3931 |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3932 return False |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3933 |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3934 def _getqueues(): |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3935 current = _getcurrent() |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3936 |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3937 try: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3938 fh = repo.vfs(_allqueues, b'r') |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3939 queues = [queue.strip() for queue in fh if queue.strip()] |
13400
14f3795a5ed7
explicitly close files
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
13373
diff
changeset
|
3940 fh.close() |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3941 if current not in queues: |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3942 queues.append(current) |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3943 except IOError: |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3944 queues = [_defaultqueue] |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3945 |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3946 return sorted(queues) |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3947 |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3948 def _setactive(name): |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3949 if q.applied: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3950 raise error.Abort( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3951 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3952 b'new queue created, but cannot make active ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3953 b'as patches are applied' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3954 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
3955 ) |
11938
b8b1e6e78486
mq/qqueue: split _setactive
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11819
diff
changeset
|
3956 _setactivenocheck(name) |
b8b1e6e78486
mq/qqueue: split _setactive
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11819
diff
changeset
|
3957 |
b8b1e6e78486
mq/qqueue: split _setactive
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11819
diff
changeset
|
3958 def _setactivenocheck(name): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3959 fh = repo.vfs(_activequeue, b'w') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3960 if name != b'patches': |
11270
457813cb3024
mq: fix naming issues for qqueue directories
Henrik Stuart <hg@hstuart.dk>
parents:
11234
diff
changeset
|
3961 fh.write(name) |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3962 fh.close() |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3963 |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3964 def _addqueue(name): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3965 fh = repo.vfs(_allqueues, b'a') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3966 fh.write(b'%s\n' % (name,)) |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3967 fh.close() |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
3968 |
11939
7d2ea5ce4aac
mq/qqueue: enable renaming of active queue
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11938
diff
changeset
|
3969 def _queuedir(name): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3970 if name == b'patches': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3971 return repo.vfs.join(b'patches') |
11939
7d2ea5ce4aac
mq/qqueue: enable renaming of active queue
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11938
diff
changeset
|
3972 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3973 return repo.vfs.join(b'patches-' + name) |
11939
7d2ea5ce4aac
mq/qqueue: enable renaming of active queue
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11938
diff
changeset
|
3974 |
11270
457813cb3024
mq: fix naming issues for qqueue directories
Henrik Stuart <hg@hstuart.dk>
parents:
11234
diff
changeset
|
3975 def _validname(name): |
457813cb3024
mq: fix naming issues for qqueue directories
Henrik Stuart <hg@hstuart.dk>
parents:
11234
diff
changeset
|
3976 for n in name: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3977 if n in b':\\/.': |
11270
457813cb3024
mq: fix naming issues for qqueue directories
Henrik Stuart <hg@hstuart.dk>
parents:
11234
diff
changeset
|
3978 return False |
457813cb3024
mq: fix naming issues for qqueue directories
Henrik Stuart <hg@hstuart.dk>
parents:
11234
diff
changeset
|
3979 return True |
457813cb3024
mq: fix naming issues for qqueue directories
Henrik Stuart <hg@hstuart.dk>
parents:
11234
diff
changeset
|
3980 |
11966
22f1994fb669
mq/qqueue: commonalise the queue deletion code
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11947
diff
changeset
|
3981 def _delete(name): |
22f1994fb669
mq/qqueue: commonalise the queue deletion code
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11947
diff
changeset
|
3982 if name not in existing: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3983 raise error.Abort(_(b'cannot delete queue that does not exist')) |
11966
22f1994fb669
mq/qqueue: commonalise the queue deletion code
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11947
diff
changeset
|
3984 |
22f1994fb669
mq/qqueue: commonalise the queue deletion code
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11947
diff
changeset
|
3985 current = _getcurrent() |
22f1994fb669
mq/qqueue: commonalise the queue deletion code
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11947
diff
changeset
|
3986 |
22f1994fb669
mq/qqueue: commonalise the queue deletion code
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11947
diff
changeset
|
3987 if name == current: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3988 raise error.Abort(_(b'cannot delete currently active queue')) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3989 |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3990 fh = repo.vfs(b'patches.queues.new', b'w') |
11966
22f1994fb669
mq/qqueue: commonalise the queue deletion code
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11947
diff
changeset
|
3991 for queue in existing: |
22f1994fb669
mq/qqueue: commonalise the queue deletion code
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11947
diff
changeset
|
3992 if queue == name: |
22f1994fb669
mq/qqueue: commonalise the queue deletion code
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11947
diff
changeset
|
3993 continue |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3994 fh.write(b'%s\n' % (queue,)) |
11966
22f1994fb669
mq/qqueue: commonalise the queue deletion code
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11947
diff
changeset
|
3995 fh.close() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3996 repo.vfs.rename(b'patches.queues.new', _allqueues) |
11966
22f1994fb669
mq/qqueue: commonalise the queue deletion code
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11947
diff
changeset
|
3997 |
34505
91250ff7d48a
py3: fix keyword arguments handling in mq
Pulkit Goyal <7895pulkit@gmail.com>
parents:
34184
diff
changeset
|
3998 opts = pycompat.byteskwargs(opts) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
3999 if not name or opts.get(b'list') or opts.get(b'active'): |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
4000 current = _getcurrent() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4001 if opts.get(b'active'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4002 ui.write(b'%s\n' % (current,)) |
14987
3709cca378ff
mq/qqueue: print current queue name
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
14943
diff
changeset
|
4003 return |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
4004 for queue in _getqueues(): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4005 ui.write(b'%s' % (queue,)) |
11767
9b771b4ce2f3
mq/qqueue: --list does not print (active) with --quiet
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11730
diff
changeset
|
4006 if queue == current and not ui.quiet: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4007 ui.write(_(b' (active)\n')) |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
4008 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4009 ui.write(b'\n') |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
4010 return |
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
4011 |
11270
457813cb3024
mq: fix naming issues for qqueue directories
Henrik Stuart <hg@hstuart.dk>
parents:
11234
diff
changeset
|
4012 if not _validname(name): |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26578
diff
changeset
|
4013 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4014 _(b'invalid queue name, may not contain the characters ":\\/."') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4015 ) |
11270
457813cb3024
mq: fix naming issues for qqueue directories
Henrik Stuart <hg@hstuart.dk>
parents:
11234
diff
changeset
|
4016 |
29752
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4017 with repo.wlock(): |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4018 existing = _getqueues() |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4019 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4020 if opts.get(b'create'): |
29752
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4021 if name in existing: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4022 raise error.Abort(_(b'queue "%s" already exists') % name) |
29752
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4023 if _noqueues(): |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4024 _addqueue(_defaultqueue) |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4025 _addqueue(name) |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4026 _setactive(name) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4027 elif opts.get(b'rename'): |
29752
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4028 current = _getcurrent() |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4029 if name == current: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4030 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4031 _(b'can\'t rename "%s" to its current name') % name |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4032 ) |
29752
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4033 if name in existing: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4034 raise error.Abort(_(b'queue "%s" already exists') % name) |
29752
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4035 |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4036 olddir = _queuedir(current) |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4037 newdir = _queuedir(name) |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4038 |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4039 if os.path.exists(newdir): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4040 raise error.Abort( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4041 _(b'non-queue directory "%s" already exists') % newdir |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4042 ) |
29752
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4043 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4044 fh = repo.vfs(b'patches.queues.new', b'w') |
29752
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4045 for queue in existing: |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4046 if queue == current: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4047 fh.write(b'%s\n' % (name,)) |
29752
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4048 if os.path.exists(olddir): |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4049 util.rename(olddir, newdir) |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4050 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4051 fh.write(b'%s\n' % (queue,)) |
29752
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4052 fh.close() |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4053 repo.vfs.rename(b'patches.queues.new', _allqueues) |
29752
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4054 _setactivenocheck(name) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4055 elif opts.get(b'delete'): |
11967
6e3875a80533
mq/qqueue: add --purge option to delete a queue and its patch dir
"Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
parents:
11966
diff
changeset
|
4056 _delete(name) |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4057 elif opts.get(b'purge'): |
29752
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4058 if name in existing: |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4059 _delete(name) |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4060 qdir = _queuedir(name) |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4061 if os.path.exists(qdir): |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4062 shutil.rmtree(qdir) |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4063 else: |
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4064 if name not in existing: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4065 raise error.Abort(_(b'use --create to create a new queue')) |
29752
8a8c1c4b8f24
mq: take wlock when 'qqueue' is doing write operations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
29127
diff
changeset
|
4066 _setactive(name) |
11229
1e701ffd9df4
mq: support multiple patch queues using qqueue
Henrik Stuart <hg@hstuart.dk>
parents:
11216
diff
changeset
|
4067 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4068 |
15928
3a51eb88046a
mq: ensure mq changesets are set to secret when no phase data are found
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15927
diff
changeset
|
4069 def mqphasedefaults(repo, roots): |
3a51eb88046a
mq: ensure mq changesets are set to secret when no phase data are found
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15927
diff
changeset
|
4070 """callback used to set mq changeset as secret when no phase data exists""" |
3a51eb88046a
mq: ensure mq changesets are set to secret when no phase data are found
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15927
diff
changeset
|
4071 if repo.mq.applied: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4072 if repo.ui.configbool(b'mq', b'secret'): |
16028
922c0e9b40be
mq: take mq.secret configuration into account when picking the default phase
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16027
diff
changeset
|
4073 mqphase = phases.secret |
922c0e9b40be
mq: take mq.secret configuration into account when picking the default phase
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16027
diff
changeset
|
4074 else: |
922c0e9b40be
mq: take mq.secret configuration into account when picking the default phase
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
16027
diff
changeset
|
4075 mqphase = phases.draft |
15972
341c58282b25
mq: pass qbase node instead of mq statusentry in phasedefaults
Augie Fackler <durin42@gmail.com>
parents:
15952
diff
changeset
|
4076 qbase = repo[repo.mq.applied[0].node] |
51406
f8bf1a8e9181
phases: keep internal state as rev-num instead of node-id
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50929
diff
changeset
|
4077 roots[mqphase].add(qbase.rev()) |
15928
3a51eb88046a
mq: ensure mq changesets are set to secret when no phase data are found
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15927
diff
changeset
|
4078 return roots |
3a51eb88046a
mq: ensure mq changesets are set to secret when no phase data are found
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15927
diff
changeset
|
4079 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4080 |
1808 | 4081 def reposetup(ui, repo): |
2818
bdc067ff6cf5
Make mq camelcase consistent with the rest of hg.
Brendan Cully <brendan@kublai.com>
parents:
2816
diff
changeset
|
4082 class mqrepo(repo.__class__): |
19395
19622224559b
mq: use an unfiltered property cache for the queue object
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
19212
diff
changeset
|
4083 @localrepo.unfilteredpropertycache |
8524
21c87b299a04
mq: only read files when needed
Simon Heimberg <simohe@besonet.ch>
parents:
8484
diff
changeset
|
4084 def mq(self): |
19064
743daa601445
mq: do not inherit settings form base repo in mqrepo (Fixes issue2358)
Simon Heimberg <simohe@besonet.ch>
parents:
18958
diff
changeset
|
4085 return queue(self.ui, self.baseui, self.path) |
8524
21c87b299a04
mq: only read files when needed
Simon Heimberg <simohe@besonet.ch>
parents:
8484
diff
changeset
|
4086 |
20628
e3d1df48fcc6
cmdserver: reload mq on each runcommand request to avoid corruption
Yuya Nishihara <yuya@tcha.org>
parents:
20442
diff
changeset
|
4087 def invalidateall(self): |
e3d1df48fcc6
cmdserver: reload mq on each runcommand request to avoid corruption
Yuya Nishihara <yuya@tcha.org>
parents:
20442
diff
changeset
|
4088 super(mqrepo, self).invalidateall() |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
4089 if localrepo.hasunfilteredcache(self, 'mq'): |
20629
277dc5f27310
cmdserver: recreate mq object on runcommand in case queue path was changed
Yuya Nishihara <yuya@tcha.org>
parents:
20628
diff
changeset
|
4090 # recreate mq in case queue path was changed |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
4091 delattr(self.unfiltered(), 'mq') |
20628
e3d1df48fcc6
cmdserver: reload mq on each runcommand request to avoid corruption
Yuya Nishihara <yuya@tcha.org>
parents:
20442
diff
changeset
|
4092 |
14596
6a0070d00bc8
mq: rename abort_if_wdir_patched to abortifwdirpatched
Adrian Buehlmann <adrian@cadifra.com>
parents:
14595
diff
changeset
|
4093 def abortifwdirpatched(self, errmsg, force=False): |
19856
28b1b7b9b4a9
shelve: allow shelving of a change with an mq patch applied
David Soria Parra <dsp@experimentalworks.net>
parents:
19826
diff
changeset
|
4094 if self.mq.applied and self.mq.checkapplied and not force: |
13520
9510ddf87c43
mq: forbid commit of merge involving mq patches
Martin Geisler <mg@aragost.com>
parents:
13508
diff
changeset
|
4095 parents = self.dirstate.parents() |
9510ddf87c43
mq: forbid commit of merge involving mq patches
Martin Geisler <mg@aragost.com>
parents:
13508
diff
changeset
|
4096 patches = [s.node for s in self.mq.applied] |
41373
b5f5dc0fa908
mq: slightly simplify check for patched working copy
Martin von Zweigbergk <martinvonz@google.com>
parents:
40995
diff
changeset
|
4097 if any(p in patches for p in parents): |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26578
diff
changeset
|
4098 raise error.Abort(errmsg) |
3223
53e843840349
Whitespace/Tab cleanup
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3186
diff
changeset
|
4099 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4100 def commit( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4101 self, |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4102 text=b"", |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4103 user=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4104 date=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4105 match=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4106 force=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4107 editor=False, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4108 extra=None, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4109 ): |
31407
b8848750a3c1
mq: don't use mutable default argument value
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31394
diff
changeset
|
4110 if extra is None: |
b8848750a3c1
mq: don't use mutable default argument value
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31394
diff
changeset
|
4111 extra = {} |
14596
6a0070d00bc8
mq: rename abort_if_wdir_patched to abortifwdirpatched
Adrian Buehlmann <adrian@cadifra.com>
parents:
14595
diff
changeset
|
4112 self.abortifwdirpatched( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4113 _(b'cannot commit over an applied mq patch'), force |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4114 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4115 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4116 return super(mqrepo, self).commit( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4117 text, user, date, match, force, editor, extra |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4118 ) |
2845
addd03c7fbfa
Disallow commit over an applied mq patch.
Brendan Cully <brendan@kublai.com>
parents:
2844
diff
changeset
|
4119 |
20924
e10000369b47
push: pass a `pushoperation` object to localrepo.checkpush
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20827
diff
changeset
|
4120 def checkpush(self, pushop): |
e10000369b47
push: pass a `pushoperation` object to localrepo.checkpush
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20827
diff
changeset
|
4121 if self.mq.applied and self.mq.checkapplied and not pushop.force: |
15952
ec8a9e06cf05
mq-safety: don't apply safety on non-outgoing changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15934
diff
changeset
|
4122 outapplied = [e.node for e in self.mq.applied] |
20924
e10000369b47
push: pass a `pushoperation` object to localrepo.checkpush
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20827
diff
changeset
|
4123 if pushop.revs: |
15952
ec8a9e06cf05
mq-safety: don't apply safety on non-outgoing changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15934
diff
changeset
|
4124 # Assume applied patches have no non-patch descendants and |
ec8a9e06cf05
mq-safety: don't apply safety on non-outgoing changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15934
diff
changeset
|
4125 # are not on remote already. Filtering any changeset not |
ec8a9e06cf05
mq-safety: don't apply safety on non-outgoing changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15934
diff
changeset
|
4126 # pushed. |
20924
e10000369b47
push: pass a `pushoperation` object to localrepo.checkpush
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20827
diff
changeset
|
4127 heads = set(pushop.revs) |
15952
ec8a9e06cf05
mq-safety: don't apply safety on non-outgoing changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15934
diff
changeset
|
4128 for node in reversed(outapplied): |
ec8a9e06cf05
mq-safety: don't apply safety on non-outgoing changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15934
diff
changeset
|
4129 if node in heads: |
ec8a9e06cf05
mq-safety: don't apply safety on non-outgoing changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15934
diff
changeset
|
4130 break |
ec8a9e06cf05
mq-safety: don't apply safety on non-outgoing changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15934
diff
changeset
|
4131 else: |
ec8a9e06cf05
mq-safety: don't apply safety on non-outgoing changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15934
diff
changeset
|
4132 outapplied.pop() |
ec8a9e06cf05
mq-safety: don't apply safety on non-outgoing changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15934
diff
changeset
|
4133 # looking for pushed and shared changeset |
ec8a9e06cf05
mq-safety: don't apply safety on non-outgoing changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15934
diff
changeset
|
4134 for node in outapplied: |
17954
4dc438ddd246
mq: don't refer to a random name-captured repo object
Bryan O'Sullivan <bryano@fb.com>
parents:
17922
diff
changeset
|
4135 if self[node].phase() < phases.secret: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4136 raise error.Abort(_(b'source has mq patches applied')) |
15952
ec8a9e06cf05
mq-safety: don't apply safety on non-outgoing changeset
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15934
diff
changeset
|
4137 # no non-secret patches pushed |
20924
e10000369b47
push: pass a `pushoperation` object to localrepo.checkpush
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
20827
diff
changeset
|
4138 super(mqrepo, self).checkpush(pushop) |
3223
53e843840349
Whitespace/Tab cleanup
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3186
diff
changeset
|
4139 |
9145
6b03f93b8ff3
localrepo: factor _findtags() out of tags() (issue548).
Greg Ward <greg-hg@gerg.ca>
parents:
9111
diff
changeset
|
4140 def _findtags(self): |
6b03f93b8ff3
localrepo: factor _findtags() out of tags() (issue548).
Greg Ward <greg-hg@gerg.ca>
parents:
9111
diff
changeset
|
4141 '''augment tags from base class with patch tags''' |
6b03f93b8ff3
localrepo: factor _findtags() out of tags() (issue548).
Greg Ward <greg-hg@gerg.ca>
parents:
9111
diff
changeset
|
4142 result = super(mqrepo, self)._findtags() |
2682
4e2dc5c16e61
Add mq patch names to tagscache instead of overriding lookup.
Brendan Cully <brendan@kublai.com>
parents:
2677
diff
changeset
|
4143 |
2724
9c41ae1908c7
mq: replace module-wide repo hash with a repo attribute
Brendan Cully <brendan@kublai.com>
parents:
2723
diff
changeset
|
4144 q = self.mq |
2723
04d9b31faeca
mq: do not hold a reference to repo in tags override
Brendan Cully <brendan@kublai.com>
parents:
2720
diff
changeset
|
4145 if not q.applied: |
9145
6b03f93b8ff3
localrepo: factor _findtags() out of tags() (issue548).
Greg Ward <greg-hg@gerg.ca>
parents:
9111
diff
changeset
|
4146 return result |
2663
96950d39171d
Mq: modify repo.lookup to resolve applied patches too.
Brendan Cully <brendan@kublai.com>
parents:
2554
diff
changeset
|
4147 |
10678
da2a0c9c895d
mq: avoid many hex/bin conversions, keep the binary node when possible
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
10663
diff
changeset
|
4148 mqtags = [(patch.node, patch.name) for patch in q.applied] |
5979
b4858eb4b58f
mqrepo: don't abort if the status file has an unknown node
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5534
diff
changeset
|
4149 |
13508
0396ca8015be
mq: fix qpush recursion in _findtags when status file is wrong (issue2664)
Matt Mackall <mpm@selenic.com>
parents:
13507
diff
changeset
|
4150 try: |
18011
4908197d7422
clfilter: mq should not warn about filtered mq patches
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
18010
diff
changeset
|
4151 # for now ignore filtering business |
4908197d7422
clfilter: mq should not warn about filtered mq patches
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
18010
diff
changeset
|
4152 self.unfiltered().changelog.rev(mqtags[-1][0]) |
14600
17c16bcf6926
mq: catch correct exception when calling changelog.rev()
Idan Kamara <idankk86@gmail.com>
parents:
14596
diff
changeset
|
4153 except error.LookupError: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4154 self.ui.warn( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4155 _(b'mq status file refers to unknown node %s\n') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4156 % short(mqtags[-1][0]) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4157 ) |
9145
6b03f93b8ff3
localrepo: factor _findtags() out of tags() (issue548).
Greg Ward <greg-hg@gerg.ca>
parents:
9111
diff
changeset
|
4158 return result |
5979
b4858eb4b58f
mqrepo: don't abort if the status file has an unknown node
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
5534
diff
changeset
|
4159 |
18662
c5f7e83d47cd
mq: comply with filtering when injecting fake tags (issue3812)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
18644
diff
changeset
|
4160 # do not add fake tags for filtered revisions |
c5f7e83d47cd
mq: comply with filtering when injecting fake tags (issue3812)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
18644
diff
changeset
|
4161 included = self.changelog.hasnode |
c5f7e83d47cd
mq: comply with filtering when injecting fake tags (issue3812)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
18644
diff
changeset
|
4162 mqtags = [mqt for mqt in mqtags if included(mqt[0])] |
c5f7e83d47cd
mq: comply with filtering when injecting fake tags (issue3812)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
18644
diff
changeset
|
4163 if not mqtags: |
c5f7e83d47cd
mq: comply with filtering when injecting fake tags (issue3812)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
18644
diff
changeset
|
4164 return result |
c5f7e83d47cd
mq: comply with filtering when injecting fake tags (issue3812)
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
18644
diff
changeset
|
4165 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4166 mqtags.append((mqtags[-1][0], b'qtip')) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4167 mqtags.append((mqtags[0][0], b'qbase')) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4168 mqtags.append((self.changelog.parents(mqtags[0][0])[0], b'qparent')) |
9145
6b03f93b8ff3
localrepo: factor _findtags() out of tags() (issue548).
Greg Ward <greg-hg@gerg.ca>
parents:
9111
diff
changeset
|
4169 tags = result[0] |
2723
04d9b31faeca
mq: do not hold a reference to repo in tags override
Brendan Cully <brendan@kublai.com>
parents:
2720
diff
changeset
|
4170 for patch in mqtags: |
9145
6b03f93b8ff3
localrepo: factor _findtags() out of tags() (issue548).
Greg Ward <greg-hg@gerg.ca>
parents:
9111
diff
changeset
|
4171 if patch[1] in tags: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4172 self.ui.warn( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
4173 _(b'tag %s overrides mq patch of the same name\n') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4174 % patch[1] |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4175 ) |
2723
04d9b31faeca
mq: do not hold a reference to repo in tags override
Brendan Cully <brendan@kublai.com>
parents:
2720
diff
changeset
|
4176 else: |
9145
6b03f93b8ff3
localrepo: factor _findtags() out of tags() (issue548).
Greg Ward <greg-hg@gerg.ca>
parents:
9111
diff
changeset
|
4177 tags[patch[1]] = patch[0] |
2682
4e2dc5c16e61
Add mq patch names to tagscache instead of overriding lookup.
Brendan Cully <brendan@kublai.com>
parents:
2677
diff
changeset
|
4178 |
9145
6b03f93b8ff3
localrepo: factor _findtags() out of tags() (issue548).
Greg Ward <greg-hg@gerg.ca>
parents:
9111
diff
changeset
|
4179 return result |
2664
9b8df8dceeed
Add qtip and qbase to mq qlookup.
Brendan Cully <brendan@kublai.com>
parents:
2663
diff
changeset
|
4180 |
2851
82f50658c72b
mq: only add mq attribute to local repo
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2850
diff
changeset
|
4181 if repo.local(): |
82f50658c72b
mq: only add mq attribute to local repo
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2850
diff
changeset
|
4182 repo.__class__ = mqrepo |
1808 | 4183 |
15928
3a51eb88046a
mq: ensure mq changesets are set to secret when no phase data are found
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15927
diff
changeset
|
4184 repo._phasedefaults.append(mqphasedefaults) |
3a51eb88046a
mq: ensure mq changesets are set to secret when no phase data are found
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
15927
diff
changeset
|
4185 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4186 |
7216
292fb2ad2846
extensions: use new wrapper functions
Matt Mackall <mpm@selenic.com>
parents:
7213
diff
changeset
|
4187 def mqimport(orig, ui, repo, *args, **kwargs): |
50928
d718eddf01d9
safehasattr: drop usage in favor of hasattr
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50900
diff
changeset
|
4188 if hasattr(repo, 'abortifwdirpatched') and not kwargs.get( |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
4189 'no_commit', False |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4190 ): |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4191 repo.abortifwdirpatched( |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
4192 _(b'cannot import over an applied patch'), kwargs.get('force') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4193 ) |
7216
292fb2ad2846
extensions: use new wrapper functions
Matt Mackall <mpm@selenic.com>
parents:
7213
diff
changeset
|
4194 return orig(ui, repo, *args, **kwargs) |
292fb2ad2846
extensions: use new wrapper functions
Matt Mackall <mpm@selenic.com>
parents:
7213
diff
changeset
|
4195 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4196 |
10402
d216fa04e48a
mq: make init -Q do what qinit -c did
Brendan Cully <brendan@kublai.com>
parents:
10401
diff
changeset
|
4197 def mqinit(orig, ui, *args, **kwargs): |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
4198 mq = kwargs.pop('mq', None) |
10402
d216fa04e48a
mq: make init -Q do what qinit -c did
Brendan Cully <brendan@kublai.com>
parents:
10401
diff
changeset
|
4199 |
d216fa04e48a
mq: make init -Q do what qinit -c did
Brendan Cully <brendan@kublai.com>
parents:
10401
diff
changeset
|
4200 if not mq: |
d216fa04e48a
mq: make init -Q do what qinit -c did
Brendan Cully <brendan@kublai.com>
parents:
10401
diff
changeset
|
4201 return orig(ui, *args, **kwargs) |
d216fa04e48a
mq: make init -Q do what qinit -c did
Brendan Cully <brendan@kublai.com>
parents:
10401
diff
changeset
|
4202 |
10691
a778a367c20b
mq: fix init with nonexistent or non-local repository
Cédric Duval <cedricduval@free.fr>
parents:
10690
diff
changeset
|
4203 if args: |
a778a367c20b
mq: fix init with nonexistent or non-local repository
Cédric Duval <cedricduval@free.fr>
parents:
10690
diff
changeset
|
4204 repopath = args[0] |
a778a367c20b
mq: fix init with nonexistent or non-local repository
Cédric Duval <cedricduval@free.fr>
parents:
10690
diff
changeset
|
4205 if not hg.islocal(repopath): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4206 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
4207 _(b'only a local queue repository may be initialized') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4208 ) |
10691
a778a367c20b
mq: fix init with nonexistent or non-local repository
Cédric Duval <cedricduval@free.fr>
parents:
10690
diff
changeset
|
4209 else: |
39818
24e493ec2229
py3: rename pycompat.getcwd() to encoding.getcwd() (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
39049
diff
changeset
|
4210 repopath = cmdutil.findrepo(encoding.getcwd()) |
10691
a778a367c20b
mq: fix init with nonexistent or non-local repository
Cédric Duval <cedricduval@free.fr>
parents:
10690
diff
changeset
|
4211 if not repopath: |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4212 raise error.Abort( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43105
diff
changeset
|
4213 _(b'there is no Mercurial repository here (.hg not found)') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4214 ) |
10402
d216fa04e48a
mq: make init -Q do what qinit -c did
Brendan Cully <brendan@kublai.com>
parents:
10401
diff
changeset
|
4215 repo = hg.repository(ui, repopath) |
10480
3076b39d7f3e
mq: unify implementation of qinit and init -Q
Brendan Cully <brendan@kublai.com>
parents:
10476
diff
changeset
|
4216 return qinit(ui, repo, True) |
10402
d216fa04e48a
mq: make init -Q do what qinit -c did
Brendan Cully <brendan@kublai.com>
parents:
10401
diff
changeset
|
4217 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4218 |
10359
ec02cf8d1628
mq: add --mq option to some commands
Brendan Cully <brendan@kublai.com>
parents:
10282
diff
changeset
|
4219 def mqcommand(orig, ui, repo, *args, **kwargs): |
ec02cf8d1628
mq: add --mq option to some commands
Brendan Cully <brendan@kublai.com>
parents:
10282
diff
changeset
|
4220 """Add --mq option to operate on patch repository instead of main""" |
ec02cf8d1628
mq: add --mq option to some commands
Brendan Cully <brendan@kublai.com>
parents:
10282
diff
changeset
|
4221 |
ec02cf8d1628
mq: add --mq option to some commands
Brendan Cully <brendan@kublai.com>
parents:
10282
diff
changeset
|
4222 # some commands do not like getting unknown options |
43506
9f70512ae2cf
cleanup: remove pointless r-prefixes on single-quoted strings
Augie Fackler <augie@google.com>
parents:
43421
diff
changeset
|
4223 mq = kwargs.pop('mq', None) |
10359
ec02cf8d1628
mq: add --mq option to some commands
Brendan Cully <brendan@kublai.com>
parents:
10282
diff
changeset
|
4224 |
ec02cf8d1628
mq: add --mq option to some commands
Brendan Cully <brendan@kublai.com>
parents:
10282
diff
changeset
|
4225 if not mq: |
ec02cf8d1628
mq: add --mq option to some commands
Brendan Cully <brendan@kublai.com>
parents:
10282
diff
changeset
|
4226 return orig(ui, repo, *args, **kwargs) |
ec02cf8d1628
mq: add --mq option to some commands
Brendan Cully <brendan@kublai.com>
parents:
10282
diff
changeset
|
4227 |
ec02cf8d1628
mq: add --mq option to some commands
Brendan Cully <brendan@kublai.com>
parents:
10282
diff
changeset
|
4228 q = repo.mq |
ec02cf8d1628
mq: add --mq option to some commands
Brendan Cully <brendan@kublai.com>
parents:
10282
diff
changeset
|
4229 r = q.qrepo() |
ec02cf8d1628
mq: add --mq option to some commands
Brendan Cully <brendan@kublai.com>
parents:
10282
diff
changeset
|
4230 if not r: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4231 raise error.Abort(_(b'no queue repository')) |
10407
2e8926e9cc32
mq: incorporate mq repo config when using --mq
Brendan Cully <brendan@kublai.com>
parents:
10402
diff
changeset
|
4232 return orig(r.ui, r, *args, **kwargs) |
10359
ec02cf8d1628
mq: add --mq option to some commands
Brendan Cully <brendan@kublai.com>
parents:
10282
diff
changeset
|
4233 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4234 |
19212
d0ba7022c13b
mq: switch to new summary hook mechanism
Bryan O'Sullivan <bryano@fb.com>
parents:
19064
diff
changeset
|
4235 def summaryhook(ui, repo): |
11107
9c72c5c094aa
mq: add a line to hg summary
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
4236 q = repo.mq |
9c72c5c094aa
mq: add a line to hg summary
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
4237 m = [] |
9c72c5c094aa
mq: add a line to hg summary
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
4238 a, u = len(q.applied), len(q.unapplied(repo)) |
9c72c5c094aa
mq: add a line to hg summary
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
4239 if a: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4240 m.append(ui.label(_(b"%d applied"), b'qseries.applied') % a) |
11107
9c72c5c094aa
mq: add a line to hg summary
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
4241 if u: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4242 m.append(ui.label(_(b"%d unapplied"), b'qseries.unapplied') % u) |
11107
9c72c5c094aa
mq: add a line to hg summary
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
4243 if m: |
17893
4d1da97aa7e7
i18n: make column positioning message of MQ summary output translatable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17892
diff
changeset
|
4244 # i18n: column positioning for "hg summary" |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4245 ui.write(_(b"mq: %s\n") % b', '.join(m)) |
11107
9c72c5c094aa
mq: add a line to hg summary
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
4246 else: |
17892
ba0a1701c81a
i18n: add "i18n" comment to column positioning messages of "hg summary"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
17888
diff
changeset
|
4247 # i18n: column positioning for "hg summary" |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4248 ui.note(_(b"mq: (empty queue)\n")) |
11107
9c72c5c094aa
mq: add a line to hg summary
Matt Mackall <mpm@selenic.com>
parents:
11078
diff
changeset
|
4249 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4250 |
28394
dcb4209bd30d
revset: replace extpredicate by revsetpredicate of registrar
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
28313
diff
changeset
|
4251 revsetpredicate = registrar.revsetpredicate() |
27586
42910f9fffeb
revset: use delayregistrar to register predicate in extension easily
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
27533
diff
changeset
|
4252 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4253 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4254 @revsetpredicate(b'mq()') |
14210
68ade2a6b30a
mq: add a 'mq()' revset predicate that returns applied mq csets
Idan Kamara <idankk86@gmail.com>
parents:
14191
diff
changeset
|
4255 def revsetmq(repo, subset, x): |
45942
89a2afe31e82
formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents:
45865
diff
changeset
|
4256 """Changesets managed by MQ.""" |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4257 revsetlang.getargs(x, 0, 0, _(b"mq takes no arguments")) |
42057
566daffc607d
cleanup: use set literals where possible
Martin von Zweigbergk <martinvonz@google.com>
parents:
42002
diff
changeset
|
4258 applied = {repo[r.node].rev() for r in repo.mq.applied} |
31023
aea06029919e
revset: import set classes directly from smartset module
Yuya Nishihara <yuya@tcha.org>
parents:
30879
diff
changeset
|
4259 return smartset.baseset([r for r in subset if r in applied]) |
14210
68ade2a6b30a
mq: add a 'mq()' revset predicate that returns applied mq csets
Idan Kamara <idankk86@gmail.com>
parents:
14191
diff
changeset
|
4260 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4261 |
14210
68ade2a6b30a
mq: add a 'mq()' revset predicate that returns applied mq csets
Idan Kamara <idankk86@gmail.com>
parents:
14191
diff
changeset
|
4262 # tell hggettext to extract docstrings from these functions: |
68ade2a6b30a
mq: add a 'mq()' revset predicate that returns applied mq csets
Idan Kamara <idankk86@gmail.com>
parents:
14191
diff
changeset
|
4263 i18nfunctions = [revsetmq] |
68ade2a6b30a
mq: add a 'mq()' revset predicate that returns applied mq csets
Idan Kamara <idankk86@gmail.com>
parents:
14191
diff
changeset
|
4264 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4265 |
17101
6bc275593d07
mq: defer command wrapping to extsetup (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
17059
diff
changeset
|
4266 def extsetup(ui): |
6bc275593d07
mq: defer command wrapping to extsetup (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
17059
diff
changeset
|
4267 # Ensure mq wrappers are called first, regardless of extension load order by |
6bc275593d07
mq: defer command wrapping to extsetup (API)
Matt Harbison <matt_harbison@yahoo.com>
parents:
17059
diff
changeset
|
4268 # NOT wrapping in uisetup() and instead deferring to init stage two here. |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4269 mqopt = [(b'', b'mq', None, _(b"operate on patch repository"))] |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4270 |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4271 extensions.wrapcommand(commands.table, b'import', mqimport) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4272 cmdutil.summaryhooks.add(b'mq', summaryhook) |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4273 |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4274 entry = extensions.wrapcommand(commands.table, b'init', mqinit) |
10402
d216fa04e48a
mq: make init -Q do what qinit -c did
Brendan Cully <brendan@kublai.com>
parents:
10401
diff
changeset
|
4275 entry[1].extend(mqopt) |
d216fa04e48a
mq: make init -Q do what qinit -c did
Brendan Cully <brendan@kublai.com>
parents:
10401
diff
changeset
|
4276 |
12036
31f02288bbc4
mq: extend support for the --mq argument to extension commands
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11970
diff
changeset
|
4277 def dotable(cmdtable): |
48913
f254fc73d956
global: bulk replace simple pycompat.iteritems(x) with x.items()
Gregory Szorc <gregory.szorc@gmail.com>
parents:
48875
diff
changeset
|
4278 for cmd, entry in cmdtable.items(): |
12036
31f02288bbc4
mq: extend support for the --mq argument to extension commands
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11970
diff
changeset
|
4279 cmd = cmdutil.parsealiases(cmd)[0] |
28313
aa73d6a5d9ea
dispatch: store norepo/optionalrepo/inferrepo attributes in function (API)
Yuya Nishihara <yuya@tcha.org>
parents:
27919
diff
changeset
|
4280 func = entry[0] |
30485
acd30a959980
dispatch: stop supporting non-use of @command
Augie Fackler <augie@google.com>
parents:
30369
diff
changeset
|
4281 if func.norepo: |
12036
31f02288bbc4
mq: extend support for the --mq argument to extension commands
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11970
diff
changeset
|
4282 continue |
31f02288bbc4
mq: extend support for the --mq argument to extension commands
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11970
diff
changeset
|
4283 entry = extensions.wrapcommand(cmdtable, cmd, mqcommand) |
31f02288bbc4
mq: extend support for the --mq argument to extension commands
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11970
diff
changeset
|
4284 entry[1].extend(mqopt) |
31f02288bbc4
mq: extend support for the --mq argument to extension commands
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11970
diff
changeset
|
4285 |
31f02288bbc4
mq: extend support for the --mq argument to extension commands
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11970
diff
changeset
|
4286 dotable(commands.table) |
31f02288bbc4
mq: extend support for the --mq argument to extension commands
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11970
diff
changeset
|
4287 |
44019
5bbd770d1324
mq: avoid using `__file__` to compare modules
Matt Harbison <matt_harbison@yahoo.com>
parents:
43987
diff
changeset
|
4288 thismodule = sys.modules["hgext.mq"] |
12036
31f02288bbc4
mq: extend support for the --mq argument to extension commands
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11970
diff
changeset
|
4289 for extname, extmodule in extensions.extensions(): |
44019
5bbd770d1324
mq: avoid using `__file__` to compare modules
Matt Harbison <matt_harbison@yahoo.com>
parents:
43987
diff
changeset
|
4290 if extmodule != thismodule: |
12036
31f02288bbc4
mq: extend support for the --mq argument to extension commands
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
11970
diff
changeset
|
4291 dotable(getattr(extmodule, 'cmdtable', {})) |
7142
88f1b8081f1c
Prevent import over an applied patch (closes issue795)
Brendan Cully <brendan@kublai.com>
parents:
7113
diff
changeset
|
4292 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4293 |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4294 colortable = { |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4295 b'qguard.negative': b'red', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4296 b'qguard.positive': b'yellow', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4297 b'qguard.unguarded': b'green', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4298 b'qseries.applied': b'blue bold underline', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4299 b'qseries.guarded': b'black bold', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4300 b'qseries.missing': b'red bold', |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
4301 b'qseries.unapplied': b'black bold', |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
42597
diff
changeset
|
4302 } |