Mercurial > evolve
annotate hgext3rd/topic/__init__.py @ 6541:09fb1cfb5adc
topic: update hg debug-topic-namespace to treat "none" as the empty value
Follow-up for 963471ebe26a.
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Thu, 27 Jul 2023 16:37:09 -0300 |
parents | 45689da4ed41 |
children | ca1c219bd59f |
rev | line source |
---|---|
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1 # __init__.py - topic extension |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
2 # |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
3 # This software may be used and distributed according to the terms of the |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
4 # GNU General Public License version 2 or any later version. |
1846
0b5b757ca812
docs: fix format of extension docstring
Matt Mackall <mpm@selenic.com>
parents:
1845
diff
changeset
|
5 """support for topic branches |
0b5b757ca812
docs: fix format of extension docstring
Matt Mackall <mpm@selenic.com>
parents:
1845
diff
changeset
|
6 |
5798
87006dcf2bb7
doc: change topic phrase 'disappear' to 'fade out'
Chuck Tuffli <chuck@tuffli.net>
parents:
5742
diff
changeset
|
7 Topic branches are lightweight branches which fade out when changes are |
2011
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
8 finalized (move to the public phase). |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
9 |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
10 Compared to bookmark, topic is reference carried by each changesets of the |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
11 series instead of just the single head revision. Topic are quite similar to |
3225
28fb347a5bf8
typos: fix typos in several locations
Kyle Lippincott <spectral@google.com>
parents:
3195
diff
changeset
|
12 the way named branch work, except they eventually fade away when the changeset |
2625
8f2901f4749e
topics: some minute fixes to the documentation which shows up in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2624
diff
changeset
|
13 becomes part of the immutable history. Changeset can belong to both a topic and |
2011
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
14 a named branch, but as long as it is mutable, its topic identity will prevail. |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
15 As a result, default destination for 'update', 'merge', etc... will take topic |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
16 into account. When a topic is active these operations will only consider other |
3225
28fb347a5bf8
typos: fix typos in several locations
Kyle Lippincott <spectral@google.com>
parents:
3195
diff
changeset
|
17 changesets on that topic (and, in some occurrence, bare changeset on same |
2011
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
18 branch). When no topic is active, changeset with topic will be ignored and |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
19 only bare one on the same branch will be taken in account. |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
20 |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
21 There is currently two commands to be used with that extension: 'topics' and |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
22 'stack'. |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
23 |
2625
8f2901f4749e
topics: some minute fixes to the documentation which shows up in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2624
diff
changeset
|
24 The 'hg topics' command is used to set the current topic, change and list |
8f2901f4749e
topics: some minute fixes to the documentation which shows up in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2624
diff
changeset
|
25 existing one. 'hg topics --verbose' will list various information related to |
8f2901f4749e
topics: some minute fixes to the documentation which shows up in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2624
diff
changeset
|
26 each topic. |
2011
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
27 |
2625
8f2901f4749e
topics: some minute fixes to the documentation which shows up in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2624
diff
changeset
|
28 The 'stack' will show you information about the stack of commit belonging to |
2011
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
29 your current topic. |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
30 |
2012
dc34d5317001
doc: add more details about the head checking
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2011
diff
changeset
|
31 Topic is offering you aliases reference to changeset in your current topic |
4069
a93b74f745a6
topic: update other occurrence of 't0' is 's0' in the code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4066
diff
changeset
|
32 stack as 's#'. For example, 's1' refers to the root of your stack, 's2' to the |
4065
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
33 second commits, etc. The 'hg stack' command show these number. 's0' can be used |
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
34 to refer to the parent of the topic root. Updating using `hg up s0` will keep |
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
35 the topic active. |
2011
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
36 |
2012
dc34d5317001
doc: add more details about the head checking
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2011
diff
changeset
|
37 Push behavior will change a bit with topic. When pushing to a publishing |
dc34d5317001
doc: add more details about the head checking
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2011
diff
changeset
|
38 repository the changesets will turn public and the topic data on them will fade |
dc34d5317001
doc: add more details about the head checking
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2011
diff
changeset
|
39 away. The logic regarding pushing new heads will behave has before, ignore any |
dc34d5317001
doc: add more details about the head checking
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2011
diff
changeset
|
40 topic related data. When pushing to a non-publishing repository (supporting |
dc34d5317001
doc: add more details about the head checking
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2011
diff
changeset
|
41 topic), the head checking will be done taking topic data into account. |
dc34d5317001
doc: add more details about the head checking
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2011
diff
changeset
|
42 Push will complain about multiple heads on a branch if you push multiple heads |
dc34d5317001
doc: add more details about the head checking
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2011
diff
changeset
|
43 with no topic information on them (or multiple public heads). But pushing a new |
dc34d5317001
doc: add more details about the head checking
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2011
diff
changeset
|
44 topic will not requires any specific flag. However, pushing multiple heads on a |
dc34d5317001
doc: add more details about the head checking
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2011
diff
changeset
|
45 topic will be met with the usual warning. |
dc34d5317001
doc: add more details about the head checking
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2011
diff
changeset
|
46 |
dc34d5317001
doc: add more details about the head checking
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2011
diff
changeset
|
47 The 'evolve' extension takes 'topic' into account. 'hg evolve --all' |
2011
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
48 will evolve all changesets in the active topic. In addition, by default. 'hg |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
49 next' and 'hg prev' will stick to the current topic. |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
50 |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
51 Be aware that this extension is still an experiment, commands and other features |
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
52 are likely to be change/adjusted/dropped over time as we refine the concept. |
3022
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
53 |
3026
e9935c2c4672
topic: rename the 'topic-mode' help subtopic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3025
diff
changeset
|
54 topic-mode |
e9935c2c4672
topic: rename the 'topic-mode' help subtopic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3025
diff
changeset
|
55 ========== |
3022
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
56 |
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
57 The topic extension can be configured to ensure the user do not forget to add |
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
58 a topic when committing a new topic:: |
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
59 |
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
60 [experimental] |
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
61 # behavior when commit is made without an active topic |
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
62 topic-mode = ignore # do nothing special (default) |
3023
cc740c545776
topicmode: add new warning topicmode
Boris Feld <boris.feld@octobus.net>
parents:
3022
diff
changeset
|
63 topic-mode = warning # print a warning |
3024
89855920fb0f
topicmode: 'enforce' topic mode, no longer warn about untopiced merge
Boris Feld <boris.feld@octobus.net>
parents:
3023
diff
changeset
|
64 topic-mode = enforce # abort the commit (except for merge) |
3025
e814c553ef32
topic: add a 'enforce-all' mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3024
diff
changeset
|
65 topic-mode = enforce-all # abort the commit (even for merge) |
3030
581a6b9d2c8c
test: add support for random-all topic mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3028
diff
changeset
|
66 topic-mode = random # use a randomized generated topic (except for merge) |
581a6b9d2c8c
test: add support for random-all topic mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3028
diff
changeset
|
67 topic-mode = random-all # use a randomized generated topic (even for merge) |
3157
f286eefbd20d
topic: add an option to enforce a single head per name in a repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3150
diff
changeset
|
68 |
f286eefbd20d
topic: add an option to enforce a single head per name in a repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3150
diff
changeset
|
69 Single head enforcing |
f286eefbd20d
topic: add an option to enforce a single head per name in a repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3150
diff
changeset
|
70 ===================== |
f286eefbd20d
topic: add an option to enforce a single head per name in a repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3150
diff
changeset
|
71 |
f286eefbd20d
topic: add an option to enforce a single head per name in a repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3150
diff
changeset
|
72 The extensions come with an option to enforce that there is only one heads for |
f286eefbd20d
topic: add an option to enforce a single head per name in a repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3150
diff
changeset
|
73 each name in the repository at any time. |
f286eefbd20d
topic: add an option to enforce a single head per name in a repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3150
diff
changeset
|
74 |
3764
f0f9139016d8
topic: use preformatted block for config snippets documentation
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
3725
diff
changeset
|
75 :: |
f0f9139016d8
topic: use preformatted block for config snippets documentation
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
3725
diff
changeset
|
76 |
3157
f286eefbd20d
topic: add an option to enforce a single head per name in a repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3150
diff
changeset
|
77 [experimental] |
f286eefbd20d
topic: add an option to enforce a single head per name in a repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3150
diff
changeset
|
78 enforce-single-head = yes |
3158
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
79 |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
80 Publishing behavior |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
81 =================== |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
82 |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
83 Topic vanish when changeset move to the public phases. Moving to the public |
3225
28fb347a5bf8
typos: fix typos in several locations
Kyle Lippincott <spectral@google.com>
parents:
3195
diff
changeset
|
84 phase usually happens on push, but it is possible to update that behavior. The |
3158
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
85 server needs to have specific config for this. |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
86 |
3765
4aabc5c8b2af
topic: dedent items about publishing behavior in docstring
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
3764
diff
changeset
|
87 * everything pushed become public (the default):: |
3764
f0f9139016d8
topic: use preformatted block for config snippets documentation
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
3725
diff
changeset
|
88 |
5977
fa7f2e1cb504
topic: fix the help text to show how to disable publishing
Matt Harbison <matt_harbison@yahoo.com>
parents:
5952
diff
changeset
|
89 [phases] |
3765
4aabc5c8b2af
topic: dedent items about publishing behavior in docstring
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
3764
diff
changeset
|
90 publish = yes |
3764
f0f9139016d8
topic: use preformatted block for config snippets documentation
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
3725
diff
changeset
|
91 |
3765
4aabc5c8b2af
topic: dedent items about publishing behavior in docstring
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
3764
diff
changeset
|
92 * nothing push turned public:: |
3158
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
93 |
5977
fa7f2e1cb504
topic: fix the help text to show how to disable publishing
Matt Harbison <matt_harbison@yahoo.com>
parents:
5952
diff
changeset
|
94 [phases] |
3765
4aabc5c8b2af
topic: dedent items about publishing behavior in docstring
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
3764
diff
changeset
|
95 publish = no |
3764
f0f9139016d8
topic: use preformatted block for config snippets documentation
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
3725
diff
changeset
|
96 |
3765
4aabc5c8b2af
topic: dedent items about publishing behavior in docstring
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
3764
diff
changeset
|
97 * topic branches are not published, changeset without topic are:: |
3158
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
98 |
5977
fa7f2e1cb504
topic: fix the help text to show how to disable publishing
Matt Harbison <matt_harbison@yahoo.com>
parents:
5952
diff
changeset
|
99 [phases] |
3765
4aabc5c8b2af
topic: dedent items about publishing behavior in docstring
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
3764
diff
changeset
|
100 publish = no |
4aabc5c8b2af
topic: dedent items about publishing behavior in docstring
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
3764
diff
changeset
|
101 [experimental] |
4aabc5c8b2af
topic: dedent items about publishing behavior in docstring
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
3764
diff
changeset
|
102 topic.publish-bare-branch = yes |
3159
90515d0bfb08
push: add a --publish flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3158
diff
changeset
|
103 |
90515d0bfb08
push: add a --publish flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3158
diff
changeset
|
104 In addition, the topic extension adds a ``--publish`` flag on :hg:`push`. When |
90515d0bfb08
push: add a --publish flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3158
diff
changeset
|
105 used, the pushed revisions are published if the push succeeds. It also applies |
90515d0bfb08
push: add a --publish flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3158
diff
changeset
|
106 to common revisions selected by the push. |
4647
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
107 |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
108 One can prevent any publishing to happens in a repository using:: |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
109 |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
110 [experimental] |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
111 topic.allow-publish = no |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
112 |
5139
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
113 Server side visibility |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
114 ====================== |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
115 |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
116 Serving changesets with topics to clients without topic extension can get |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
117 confusing. Such clients will have multiple anonymous heads without a clear way |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
118 to distinguish them. They will also "lose" the canonical heads of the branch. |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
119 |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
120 To avoid this confusion, server can be configured to only serve changesets with |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
121 topics to clients with the topic extension (version 9.3+). This might become |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
122 the default in future:: |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
123 |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
124 [experimental] |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
125 topic.server-gate-topic-changesets = yes |
5601
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
126 |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
127 Explicitly merging in the target branch |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
128 ======================================= |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
129 |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
130 By default, Mercurial will not let your merge a topic into its target branch if |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
131 that topic is already based on the head of that branch. In other word, |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
132 Mercurial will not let your create a merge that will eventually have two |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
133 parents in the same branches, one parent being the ancestors of the other |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
134 parent. This behavior can be lifted using the following config:: |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
135 |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
136 [experimental] |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
137 topic.linear-merge = allow-from-bare-branch |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
138 |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
139 When this option is set to `allow-from-bare-branch`, it is possible to merge a |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
140 topic branch from a bare branch (commit an active topic (eg: public one)) |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
141 regardless of the topology. The result would typically looks like that:: |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
142 |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
143 @ summary: resulting merge commit |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
144 |\\ branch: my-branch |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
145 | | |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
146 | o summary: some more change in a topic, the merge "target" |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
147 | | branch: my-branch |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
148 | | topic: my-topic |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
149 | | |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
150 | o summary: some change in a topic |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
151 |/ branch: my-branch |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
152 | topic: my-topic |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
153 | |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
154 o summary: previous head of the branch, the merge "source" |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
155 | branch: my-branch |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
156 """ |
2011
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
157 |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
158 from __future__ import absolute_import |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
159 |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
160 import functools |
1904
f52c02bf47b7
stack: allow to refer to changeset using "t2" form
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1903
diff
changeset
|
161 import re |
2731
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
162 import time |
2986
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
163 import weakref |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
164 |
1848
9a81657deec2
summary: add topic summary hook
Matt Mackall <mpm@selenic.com>
parents:
1847
diff
changeset
|
165 from mercurial.i18n import _ |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
166 from mercurial import ( |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
167 bookmarks, |
2928
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
168 changelog, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
169 cmdutil, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
170 commands, |
6334
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
171 configitems, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
172 context, |
6206
2ec9c87e8574
topic: allow unicode symbols in names as long as they are alphanumeric
Anton Shestakov <av6@dwimlabs.net>
parents:
6205
diff
changeset
|
173 encoding, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
174 error, |
5221
af9f40236037
topics: fix auto-publish=abort with servers publishing bare branches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5154
diff
changeset
|
175 exchange, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
176 extensions, |
2648
d8b47d961c77
topic-change: update the working copy along when changing topic of '.'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2647
diff
changeset
|
177 hg, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
178 localrepo, |
2890
1e3d97486861
topics: import lock as lockmods
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2889
diff
changeset
|
179 lock as lockmod, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
180 merge, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
181 namespaces, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
182 node, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
183 obsolete, |
4942
acc7e27fa5c6
topic: drop compat.getmarkers() and use obsutil.getmarkers() directly
Anton Shestakov <av6@dwimlabs.net>
parents:
4921
diff
changeset
|
184 obsutil, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
185 patch, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
186 phases, |
4752
8a73a8df63b6
py3: convert opts keys to bytes before passing to core APIs
Martin von Zweigbergk <martinvonz@google.com>
parents:
4748
diff
changeset
|
187 pycompat, |
2464
2b53a2a21bbb
deprecation: fix cmdutil.command deprecation warning
Boris Feld <boris.feld@octobus.net>
parents:
2428
diff
changeset
|
188 registrar, |
6537
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
189 rewriteutil, |
2889
31cbace4c0f1
topics: make sure we have some restrictions on topic names
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2869
diff
changeset
|
190 scmutil, |
6496
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
191 smartset, |
2731
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
192 templatefilters, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
193 util, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
194 ) |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
195 |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
196 from . import ( |
4531
1d1f8f56daac
topic: introduce a `hastopicext(repo)` function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4524
diff
changeset
|
197 common, |
6318
3e488afe62f5
topic: use compat.InputError for conflicting CLI flags
Anton Shestakov <av6@dwimlabs.net>
parents:
6311
diff
changeset
|
198 compat, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
199 constants, |
3532
68e99d2c6267
prev: fix the breakage of `hg previous` from obsolete cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3447
diff
changeset
|
200 destination, |
68e99d2c6267
prev: fix the breakage of `hg previous` from obsolete cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3447
diff
changeset
|
201 discovery, |
3157
f286eefbd20d
topic: add an option to enforce a single head per name in a repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3150
diff
changeset
|
202 flow, |
3532
68e99d2c6267
prev: fix the breakage of `hg previous` from obsolete cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3447
diff
changeset
|
203 randomname, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
204 revset as topicrevset, |
5139
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
205 server, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
206 stack, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
207 topicmap, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
208 ) |
1843
0ba067a97d06
revset: add a topic() revset for querying topics
Augie Fackler <augie@google.com>
parents:
1842
diff
changeset
|
209 |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
210 cmdtable = {} |
3971
9f8b99b3d9b5
topic: drop compat layer for `command`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3945
diff
changeset
|
211 command = registrar.command(cmdtable) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
212 colortable = {b'topic.active': b'green', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
213 b'topic.list.unstablecount': b'red', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
214 b'topic.list.headcount.multiple': b'yellow', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
215 b'topic.list.behindcount': b'cyan', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
216 b'topic.list.behinderror': b'red', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
217 b'stack.index': b'yellow', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
218 b'stack.index.base': b'none dim', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
219 b'stack.desc.base': b'none dim', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
220 b'stack.shortnode.base': b'none dim', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
221 b'stack.state.base': b'dim', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
222 b'stack.state.clean': b'green', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
223 b'stack.index.current': b'cyan', # random pick |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
224 b'stack.state.current': b'cyan bold', # random pick |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
225 b'stack.desc.current': b'cyan', # random pick |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
226 b'stack.shortnode.current': b'cyan', # random pick |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
227 b'stack.state.orphan': b'red', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
228 b'stack.state.content-divergent': b'red', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
229 b'stack.state.phase-divergent': b'red', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
230 b'stack.summary.behindcount': b'cyan', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
231 b'stack.summary.behinderror': b'red', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
232 b'stack.summary.headcount.multiple': b'yellow', |
2340
e6d3b83b306b
topic: configure some default color for topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2339
diff
changeset
|
233 # default color to help log output and thg |
e6d3b83b306b
topic: configure some default color for topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2339
diff
changeset
|
234 # (first pick I could think off, update as needed |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
235 b'log.topic': b'green_background', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
236 } |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
237 |
6441
f689940666ba
branching: merge with stable
Anton Shestakov <av6@dwimlabs.net>
parents:
6440
diff
changeset
|
238 __version__ = b'1.1.0.dev0' |
3057
cb8ae3cb0bbc
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
diff
changeset
|
239 |
6530 | 240 testedwith = b'4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5' |
6443
223a0b7159c0
topic: drop compatibility with Mercurial 4.8
Anton Shestakov <av6@dwimlabs.net>
parents:
6441
diff
changeset
|
241 minimumhgversion = b'4.9' |
4713
fbe7f35a6926
py3: make metadata values be byte strings as Mercurial expects
Martin von Zweigbergk <martinvonz@google.com>
parents:
4704
diff
changeset
|
242 buglink = b'https://bz.mercurial-scm.org/' |
1884
8a53f99d9061
testedwith: declare compatibility with Mercurial 3.7
Augie Fackler <raf@durin42.com>
parents:
1877
diff
changeset
|
243 |
6334
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
244 configtable = {} |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
245 configitem = registrar.configitem(configtable) |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
246 |
6334
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
247 configitem(b'experimental', b'enforce-topic', |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
248 default=False, |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
249 ) |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
250 configitem(b'experimental', b'enforce-single-head', |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
251 default=False, |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
252 ) |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
253 configitem(b'experimental', b'topic-mode', |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
254 default=None, |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
255 ) |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
256 configitem(b'experimental', b'topic.publish-bare-branch', |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
257 default=False, |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
258 ) |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
259 configitem(b'experimental', b'topic.allow-publish', |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
260 default=configitems.dynamicdefault, |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
261 ) |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
262 configitem(b'_internal', b'keep-topic', |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
263 default=False, |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
264 ) |
6336
453861da6922
topic: use fully qualified branch name during exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6334
diff
changeset
|
265 # used for signaling that ctx.branch() shouldn't return fqbn even if topic is |
453861da6922
topic: use fully qualified branch name during exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6334
diff
changeset
|
266 # enabled for local repo |
453861da6922
topic: use fully qualified branch name during exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6334
diff
changeset
|
267 configitem(b'_internal', b'tns-disable-fqbn', |
453861da6922
topic: use fully qualified branch name during exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6334
diff
changeset
|
268 default=False, |
453861da6922
topic: use fully qualified branch name during exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6334
diff
changeset
|
269 ) |
453861da6922
topic: use fully qualified branch name during exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6334
diff
changeset
|
270 # used for signaling that push will publish changesets |
453861da6922
topic: use fully qualified branch name during exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6334
diff
changeset
|
271 configitem(b'_internal', b'tns-publish', |
453861da6922
topic: use fully qualified branch name during exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6334
diff
changeset
|
272 default=False, |
453861da6922
topic: use fully qualified branch name during exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6334
diff
changeset
|
273 ) |
6496
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
274 configitem(b'devel', b'tns-report-transactions', |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
275 default=lambda: [], |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
276 ) |
6537
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
277 # used for allowing users to rewrite history only in their "own" topic |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
278 # namespaces |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
279 configitem(b'experimental', b'tns-allow-rewrite', |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
280 default=configitems.dynamicdefault, |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
281 ) |
6334
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
282 configitem(b'experimental', b'topic-mode.server', |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
283 default=configitems.dynamicdefault, |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
284 ) |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
285 configitem(b'experimental', b'topic.server-gate-topic-changesets', |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
286 default=False, |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
287 ) |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
288 configitem(b'experimental', b'topic.linear-merge', |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
289 default="reject", |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
290 ) |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
291 |
6334
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
292 def extsetup(ui): |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
293 # register config that strictly belong to other code (thg, core, etc) |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
294 # |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
295 # To ensure all config items we used are registered, we register them if |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
296 # nobody else did so far. |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
297 extraitem = functools.partial(configitems._register, ui._knownconfig) |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
298 if (b'experimental' not in ui._knownconfig |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
299 or not ui._knownconfig[b'experimental'].get(b'thg.displaynames')): |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
300 extraitem(b'experimental', b'thg.displaynames', |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
301 default=None, |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
302 ) |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
303 if (b'devel' not in ui._knownconfig |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
304 or not ui._knownconfig[b'devel'].get(b'random')): |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
305 extraitem(b'devel', b'randomseed', |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
306 default=None, |
ef8c1637321a
topic: mercurial.configitems and mercurial.registrar.configitem is in hg 4.3
Anton Shestakov <av6@dwimlabs.net>
parents:
6333
diff
changeset
|
307 ) |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
308 |
6240
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
309 def _contexttns(self, force=False): |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
310 if not force and not self.mutable(): |
6487
963471ebe26a
topic: make topic namespace use string "none" as the default/empty value
Anton Shestakov <av6@dwimlabs.net>
parents:
6480
diff
changeset
|
311 return b'none' |
6240
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
312 cache = getattr(self._repo, '_tnscache', None) |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
313 # topic loaded, but not enabled (eg: multiple repo in the same process) |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
314 if cache is None: |
6487
963471ebe26a
topic: make topic namespace use string "none" as the default/empty value
Anton Shestakov <av6@dwimlabs.net>
parents:
6480
diff
changeset
|
315 return b'none' |
6240
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
316 if self.rev() is None: |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
317 # don't cache volatile ctx instances that aren't stored on-disk yet |
6487
963471ebe26a
topic: make topic namespace use string "none" as the default/empty value
Anton Shestakov <av6@dwimlabs.net>
parents:
6480
diff
changeset
|
318 return self.extra().get(b'topic-namespace', b'none') |
6240
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
319 tns = cache.get(self.rev()) |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
320 if tns is None: |
6487
963471ebe26a
topic: make topic namespace use string "none" as the default/empty value
Anton Shestakov <av6@dwimlabs.net>
parents:
6480
diff
changeset
|
321 tns = self.extra().get(b'topic-namespace', b'none') |
6240
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
322 self._repo._tnscache[self.rev()] = tns |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
323 return tns |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
324 |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
325 context.basectx.topic_namespace = _contexttns |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
326 |
2656
4a148ca3e80d
topic: update the changectx method to respect phases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2655
diff
changeset
|
327 def _contexttopic(self, force=False): |
4a148ca3e80d
topic: update the changectx method to respect phases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2655
diff
changeset
|
328 if not (force or self.mutable()): |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
329 return b'' |
5701
5cbf9c2189fd
topic: fix the newly added cache for repository without topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5687
diff
changeset
|
330 cache = getattr(self._repo, '_topiccache', None) |
5cbf9c2189fd
topic: fix the newly added cache for repository without topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5687
diff
changeset
|
331 # topic loaded, but not enabled (eg: multiple repo in the same process) |
5cbf9c2189fd
topic: fix the newly added cache for repository without topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5687
diff
changeset
|
332 if cache is None: |
5cbf9c2189fd
topic: fix the newly added cache for repository without topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5687
diff
changeset
|
333 return b'' |
6023
6c67219ce779
topic: don't cache topic of e.g. memctx in _topiccache (issue6500)
Anton Shestakov <av6@dwimlabs.net>
parents:
6017
diff
changeset
|
334 if self.rev() is None: |
6c67219ce779
topic: don't cache topic of e.g. memctx in _topiccache (issue6500)
Anton Shestakov <av6@dwimlabs.net>
parents:
6017
diff
changeset
|
335 # don't cache volatile ctx instances that aren't stored on-disk yet |
6c67219ce779
topic: don't cache topic of e.g. memctx in _topiccache (issue6500)
Anton Shestakov <av6@dwimlabs.net>
parents:
6017
diff
changeset
|
336 return self.extra().get(constants.extrakey, b'') |
5701
5cbf9c2189fd
topic: fix the newly added cache for repository without topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5687
diff
changeset
|
337 topic = cache.get(self.rev()) |
5680
18a70ae9fb0b
topic: add a basic in-memory cache for topic information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5646
diff
changeset
|
338 if topic is None: |
18a70ae9fb0b
topic: add a basic in-memory cache for topic information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5646
diff
changeset
|
339 topic = self.extra().get(constants.extrakey, b'') |
18a70ae9fb0b
topic: add a basic in-memory cache for topic information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5646
diff
changeset
|
340 self._repo._topiccache[self.rev()] = topic |
18a70ae9fb0b
topic: add a basic in-memory cache for topic information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5646
diff
changeset
|
341 return topic |
18a70ae9fb0b
topic: add a basic in-memory cache for topic information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5646
diff
changeset
|
342 |
1861
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
343 context.basectx.topic = _contexttopic |
3235
8a772f0c54d9
topics: add a config to reject draft changeset without topic on a server
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3232
diff
changeset
|
344 |
2744
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
345 def _contexttopicidx(self): |
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
346 topic = self.topic() |
4190
883e75e0a810
topicidx: stop assigning index number to obsolete changesets
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4178
diff
changeset
|
347 if not topic or self.obsolete(): |
4069
a93b74f745a6
topic: update other occurrence of 't0' is 's0' in the code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4066
diff
changeset
|
348 # XXX we might want to include s0 here, |
a93b74f745a6
topic: update other occurrence of 't0' is 's0' in the code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4066
diff
changeset
|
349 # however s0 is related to 'currenttopic' which has no place here. |
2744
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
350 return None |
2915
b3abdb3d819e
stack: replace 'getstack' with direct call to 'stack'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2912
diff
changeset
|
351 revlist = stack.stack(self._repo, topic=topic) |
2744
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
352 try: |
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
353 return revlist.index(self.rev()) |
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
354 except IndexError: |
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
355 # Lets move to the last ctx of the current topic |
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
356 return None |
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
357 context.basectx.topicidx = _contexttopicidx |
1861
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
358 |
6242
a433fe0cea21
topic: add ctx.fqbn() method
Anton Shestakov <av6@dwimlabs.net>
parents:
6241
diff
changeset
|
359 def _contextfqbn(self): |
a433fe0cea21
topic: add ctx.fqbn() method
Anton Shestakov <av6@dwimlabs.net>
parents:
6241
diff
changeset
|
360 """return branch//namespace/topic of the changeset, also known as fully |
a433fe0cea21
topic: add ctx.fqbn() method
Anton Shestakov <av6@dwimlabs.net>
parents:
6241
diff
changeset
|
361 qualified branch name |
a433fe0cea21
topic: add ctx.fqbn() method
Anton Shestakov <av6@dwimlabs.net>
parents:
6241
diff
changeset
|
362 """ |
6268
63d6cc96557c
topic: get branch from extra data in ctx.fqbn()
Anton Shestakov <av6@dwimlabs.net>
parents:
6266
diff
changeset
|
363 branch = encoding.tolocal(self.extra()[b'branch']) |
63d6cc96557c
topic: get branch from extra data in ctx.fqbn()
Anton Shestakov <av6@dwimlabs.net>
parents:
6266
diff
changeset
|
364 return common.formatfqbn(branch, self.topic_namespace(), self.topic()) |
6242
a433fe0cea21
topic: add ctx.fqbn() method
Anton Shestakov <av6@dwimlabs.net>
parents:
6241
diff
changeset
|
365 |
a433fe0cea21
topic: add ctx.fqbn() method
Anton Shestakov <av6@dwimlabs.net>
parents:
6241
diff
changeset
|
366 context.basectx.fqbn = _contextfqbn |
a433fe0cea21
topic: add ctx.fqbn() method
Anton Shestakov <av6@dwimlabs.net>
parents:
6241
diff
changeset
|
367 |
4801
16c1398b0063
python3: prefix all regex to work with python 2 and 3
Raphaël Gomès <rgomes@octobus.net>
parents:
4791
diff
changeset
|
368 stackrev = re.compile(br'^s\d+$') |
16c1398b0063
python3: prefix all regex to work with python 2 and 3
Raphaël Gomès <rgomes@octobus.net>
parents:
4791
diff
changeset
|
369 topicrev = re.compile(br'^t\d+$') |
1904
f52c02bf47b7
stack: allow to refer to changeset using "t2" form
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1903
diff
changeset
|
370 |
4531
1d1f8f56daac
topic: introduce a `hastopicext(repo)` function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4524
diff
changeset
|
371 hastopicext = common.hastopicext |
1d1f8f56daac
topic: introduce a `hastopicext(repo)` function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4524
diff
changeset
|
372 |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
373 def _namemap(repo, name): |
2669
b933a8068c17
topic: add some initial support for using stack on named branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2668
diff
changeset
|
374 revs = None |
4065
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
375 if stackrev.match(name): |
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
376 idx = int(name[1:]) |
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
377 tname = topic = repo.currenttopic |
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
378 if topic: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
379 ttype = b'topic' |
4065
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
380 revs = list(stack.stack(repo, topic=topic)) |
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
381 else: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
382 ttype = b'branch' |
4065
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
383 tname = branch = repo[None].branch() |
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
384 revs = list(stack.stack(repo, branch=branch)) |
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
385 elif topicrev.match(name): |
1904
f52c02bf47b7
stack: allow to refer to changeset using "t2" form
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1903
diff
changeset
|
386 idx = int(name[1:]) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
387 ttype = b'topic' |
2669
b933a8068c17
topic: add some initial support for using stack on named branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2668
diff
changeset
|
388 tname = topic = repo.currenttopic |
b933a8068c17
topic: add some initial support for using stack on named branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2668
diff
changeset
|
389 if not tname: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
390 raise error.Abort(_(b'cannot resolve "%s": no active topic') % name) |
2915
b3abdb3d819e
stack: replace 'getstack' with direct call to 'stack'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2912
diff
changeset
|
391 revs = list(stack.stack(repo, topic=topic)) |
2669
b933a8068c17
topic: add some initial support for using stack on named branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2668
diff
changeset
|
392 |
b933a8068c17
topic: add some initial support for using stack on named branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2668
diff
changeset
|
393 if revs is not None: |
1904
f52c02bf47b7
stack: allow to refer to changeset using "t2" form
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1903
diff
changeset
|
394 try: |
2712
f19b314d8475
topics: add t0 and b0 to the stack
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2711
diff
changeset
|
395 r = revs[idx] |
1904
f52c02bf47b7
stack: allow to refer to changeset using "t2" form
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1903
diff
changeset
|
396 except IndexError: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
397 if ttype == b'topic': |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
398 msg = _(b'cannot resolve "%s": %s "%s" has only %d changesets') |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
399 elif ttype == b'branch': |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
400 msg = _(b'cannot resolve "%s": %s "%s" has only %d non-public changesets') |
2712
f19b314d8475
topics: add t0 and b0 to the stack
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2711
diff
changeset
|
401 raise error.Abort(msg % (name, ttype, tname, len(revs) - 1)) |
4628
c4097632a1a3
topic: drop support for accessing csets in branch stack using bxx (issue6119)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
4581
diff
changeset
|
402 # t0 or s0 can be None |
2712
f19b314d8475
topics: add t0 and b0 to the stack
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2711
diff
changeset
|
403 if r == -1 and idx == 0: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
404 msg = _(b'the %s "%s" has no %s') |
2712
f19b314d8475
topics: add t0 and b0 to the stack
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2711
diff
changeset
|
405 raise error.Abort(msg % (ttype, tname, name)) |
1904
f52c02bf47b7
stack: allow to refer to changeset using "t2" form
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1903
diff
changeset
|
406 return [repo[r].node()] |
2008 | 407 if name not in repo.topics: |
2000
c413e7c96265
init: guard _namemap with repo.topics (issue5351)
timeless@gmail.com
parents:
1999
diff
changeset
|
408 return [] |
2657
58719183d383
topic: improve the revset used to return name->nodes mapping
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2656
diff
changeset
|
409 node = repo.changelog.node |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
410 return [node(rev) for rev in repo.revs(b'topic(%s)', name)] |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
411 |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
412 def _nodemap(repo, node): |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
413 ctx = repo[node] |
1861
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
414 t = ctx.topic() |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
415 if t and ctx.phase() > phases.public: |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
416 return [t] |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
417 return [] |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
418 |
5685
7ee15bf011d6
topic: wrap branch call during summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5680
diff
changeset
|
419 def wrap_summary(orig, ui, repo, *args, **kwargs): |
7ee15bf011d6
topic: wrap branch call during summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5680
diff
changeset
|
420 with discovery.override_context_branch(repo) as repo: |
7ee15bf011d6
topic: wrap branch call during summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5680
diff
changeset
|
421 return orig(ui, repo, *args, **kwargs) |
7ee15bf011d6
topic: wrap branch call during summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5680
diff
changeset
|
422 |
6376
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
423 def wrapwctxbranch(orig, self): |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
424 branch = orig(self) |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
425 return common.formatfqbn(branch=branch) |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
426 |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
427 def wrapwctxdirty(orig, self, missing=False, merge=True, branch=True): |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
428 """check whether a working directory is modified""" |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
429 # check subrepos first |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
430 for s in sorted(self.substate): |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
431 if self.sub(s).dirty(missing=missing): |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
432 return True |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
433 # check current working dir |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
434 return ( |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
435 (merge and self.p2()) |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
436 or (branch and self.branch() != common.formatfqbn(branch=self.p1().branch())) |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
437 or self.modified() |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
438 or self.added() |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
439 or self.removed() |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
440 or (missing and self.deleted()) |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
441 ) |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
442 |
6496
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
443 def find_affected_tns(repo, tr): |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
444 origrepolen = tr.changes[b'origrepolen'] |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
445 unfi = repo.unfiltered() |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
446 |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
447 affected = set() |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
448 # These are the new changesets that weren't in the repo before this |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
449 # transaction |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
450 for rev in smartset.spanset(repo, start=origrepolen): |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
451 ctx = unfi[rev] |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
452 tns = ctx.topic_namespace() |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
453 affected.add(tns) |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
454 |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
455 # These are the changesets obsoleted by this transaction |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
456 for rev in obsutil.getobsoleted(repo, tr): |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
457 ctx = unfi[rev] |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
458 tns = ctx.topic_namespace() |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
459 affected.add(tns) |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
460 |
6498
7ecb0f9cc7f3
topic: report namespace changes in more cases of phase movements
Anton Shestakov <av6@dwimlabs.net>
parents:
6497
diff
changeset
|
461 # Phase movements, we only care about: |
7ecb0f9cc7f3
topic: report namespace changes in more cases of phase movements
Anton Shestakov <av6@dwimlabs.net>
parents:
6497
diff
changeset
|
462 # - publishing changesets (since they lose topic namespace) |
7ecb0f9cc7f3
topic: report namespace changes in more cases of phase movements
Anton Shestakov <av6@dwimlabs.net>
parents:
6497
diff
changeset
|
463 # - forcefully making changesets draft again |
7ecb0f9cc7f3
topic: report namespace changes in more cases of phase movements
Anton Shestakov <av6@dwimlabs.net>
parents:
6497
diff
changeset
|
464 # - turning secret changesets draft and making them visible to peers |
7ecb0f9cc7f3
topic: report namespace changes in more cases of phase movements
Anton Shestakov <av6@dwimlabs.net>
parents:
6497
diff
changeset
|
465 tnsphases = (phases.secret, phases.draft) |
6496
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
466 for revs, (old, new) in tr.changes[b'phases']: |
6498
7ecb0f9cc7f3
topic: report namespace changes in more cases of phase movements
Anton Shestakov <av6@dwimlabs.net>
parents:
6497
diff
changeset
|
467 if old not in tnsphases and new not in tnsphases: |
7ecb0f9cc7f3
topic: report namespace changes in more cases of phase movements
Anton Shestakov <av6@dwimlabs.net>
parents:
6497
diff
changeset
|
468 # Skip phase movement if there is no phase (old or new) that has |
7ecb0f9cc7f3
topic: report namespace changes in more cases of phase movements
Anton Shestakov <av6@dwimlabs.net>
parents:
6497
diff
changeset
|
469 # visible topic namespace (i.e. draft and secret) |
6496
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
470 continue |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
471 revs = [rev for rev in revs if rev < origrepolen] |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
472 for rev in revs: |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
473 ctx = unfi[rev] |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
474 tns = ctx.topic_namespace(force=True) |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
475 affected.add(tns) |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
476 |
6497
4e0f760d332e
topic: also find and report topic namespace changes caused by bookmarks
Anton Shestakov <av6@dwimlabs.net>
parents:
6496
diff
changeset
|
477 # We want to detect any bookmark movement, even within one topic namespace |
4e0f760d332e
topic: also find and report topic namespace changes caused by bookmarks
Anton Shestakov <av6@dwimlabs.net>
parents:
6496
diff
changeset
|
478 for name, nodes in tr.changes[b'bookmarks'].items(): |
4e0f760d332e
topic: also find and report topic namespace changes caused by bookmarks
Anton Shestakov <av6@dwimlabs.net>
parents:
6496
diff
changeset
|
479 for n in nodes: |
4e0f760d332e
topic: also find and report topic namespace changes caused by bookmarks
Anton Shestakov <av6@dwimlabs.net>
parents:
6496
diff
changeset
|
480 if n is not None and n in unfi: |
4e0f760d332e
topic: also find and report topic namespace changes caused by bookmarks
Anton Shestakov <av6@dwimlabs.net>
parents:
6496
diff
changeset
|
481 ctx = unfi[n] |
4e0f760d332e
topic: also find and report topic namespace changes caused by bookmarks
Anton Shestakov <av6@dwimlabs.net>
parents:
6496
diff
changeset
|
482 tns = ctx.topic_namespace() |
4e0f760d332e
topic: also find and report topic namespace changes caused by bookmarks
Anton Shestakov <av6@dwimlabs.net>
parents:
6496
diff
changeset
|
483 affected.add(tns) |
4e0f760d332e
topic: also find and report topic namespace changes caused by bookmarks
Anton Shestakov <av6@dwimlabs.net>
parents:
6496
diff
changeset
|
484 |
6496
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
485 # We don't care about changesets without topic namespace |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
486 affected.discard(b'none') |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
487 |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
488 tr.changes[b'tns'] = affected |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
489 report_affected_tns(repo, tr) |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
490 |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
491 def report_affected_tns(repo, tr): |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
492 report = set(repo.ui.configlist(b'devel', b'tns-report-transactions')) |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
493 if b'*' not in report: |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
494 # * matches any transaction |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
495 if not any(trname in report for trname in tr._names): |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
496 return |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
497 |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
498 if tr.changes[b'tns']: |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
499 repo.ui.status(b'topic namespaces affected: %s\n' % b' '.join(sorted(tr.changes[b'tns']))) |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
500 |
1871
58ef5699fb35
merge: use topic to pick default destination
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1867
diff
changeset
|
501 def uisetup(ui): |
1941
7eb737b7a902
destination: rename 'setupdest' to 'modsetup'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1939
diff
changeset
|
502 destination.modsetup(ui) |
1944
daad8249d5cf
discovery: move all setup into a 'modsetup' function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1943
diff
changeset
|
503 discovery.modsetup(ui) |
1952
665d6322994e
uisetup: add call to 'topicmap.modsetup'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1951
diff
changeset
|
504 topicmap.modsetup(ui) |
1948
54810b543bf4
patch: move setup of import/export logic into a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1947
diff
changeset
|
505 setupimportexport(ui) |
1871
58ef5699fb35
merge: use topic to pick default destination
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1867
diff
changeset
|
506 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
507 extensions.afterloaded(b'rebase', _fixrebase) |
1951
0309cac5d91d
uisetup: move all remaining wrapping into uisetup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1950
diff
changeset
|
508 |
3159
90515d0bfb08
push: add a --publish flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3158
diff
changeset
|
509 flow.installpushflag(ui) |
90515d0bfb08
push: add a --publish flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3158
diff
changeset
|
510 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
511 entry = extensions.wrapcommand(commands.table, b'commit', commitwrap) |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
512 entry[1].append((b't', b'topic', b'', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
513 _(b"use specified topic"), _(b'TOPIC'))) |
1951
0309cac5d91d
uisetup: move all remaining wrapping into uisetup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1950
diff
changeset
|
514 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
515 entry = extensions.wrapcommand(commands.table, b'push', pushoutgoingwrap) |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
516 entry[1].append((b't', b'topic', b'', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
517 _(b"topic to push"), _(b'TOPIC'))) |
2983
c0de0010ec30
topic: add a --topic option to "outgoing" command
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
2982
diff
changeset
|
518 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
519 entry = extensions.wrapcommand(commands.table, b'outgoing', |
2983
c0de0010ec30
topic: add a --topic option to "outgoing" command
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
2982
diff
changeset
|
520 pushoutgoingwrap) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
521 entry[1].append((b't', b'topic', b'', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
522 _(b"topic to push"), _(b'TOPIC'))) |
2982
fef934b7ed86
topic: add a --topic option to "push" command
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
2939
diff
changeset
|
523 |
1951
0309cac5d91d
uisetup: move all remaining wrapping into uisetup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1950
diff
changeset
|
524 extensions.wrapfunction(cmdutil, 'buildcommittext', committextwrap) |
5608
d9ee2706487f
compat: add support for upstream rename of merge.update() to _update()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5531
diff
changeset
|
525 if util.safehasattr(merge, '_update'): |
d9ee2706487f
compat: add support for upstream rename of merge.update() to _update()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5531
diff
changeset
|
526 extensions.wrapfunction(merge, '_update', mergeupdatewrap) |
d9ee2706487f
compat: add support for upstream rename of merge.update() to _update()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5531
diff
changeset
|
527 else: |
d9ee2706487f
compat: add support for upstream rename of merge.update() to _update()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5531
diff
changeset
|
528 # hg <= 5.5 (2c86b9587740) |
d9ee2706487f
compat: add support for upstream rename of merge.update() to _update()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5531
diff
changeset
|
529 extensions.wrapfunction(merge, 'update', mergeupdatewrap) |
4069
a93b74f745a6
topic: update other occurrence of 't0' is 's0' in the code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4066
diff
changeset
|
530 # We need to check whether t0 or b0 or s0 is passed to override the default update |
2711
8c938e9af113
topics: wrap the update function to check if either t0 or b0 is passed as rev
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2709
diff
changeset
|
531 # behaviour of changing topic and I can't find a better way |
8c938e9af113
topics: wrap the update function to check if either t0 or b0 is passed as rev
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2709
diff
changeset
|
532 # to do that as scmutil.revsingle returns the rev number and hence we can't |
8c938e9af113
topics: wrap the update function to check if either t0 or b0 is passed as rev
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2709
diff
changeset
|
533 # plug into logic for this into mergemod.update(). |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
534 extensions.wrapcommand(commands.table, b'update', checkt0) |
2667
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
535 |
5685
7ee15bf011d6
topic: wrap branch call during summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5680
diff
changeset
|
536 extensions.wrapcommand(commands.table, b'summary', wrap_summary) |
7ee15bf011d6
topic: wrap branch call during summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5680
diff
changeset
|
537 |
2667
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
538 try: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
539 evolve = extensions.find(b'evolve') |
2762
610581a2fb74
commands: move split to the 'evocommands' module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2750
diff
changeset
|
540 extensions.wrapfunction(evolve.rewriteutil, "presplitupdate", |
6417
c37754bb02d4
topic: rename presplitupdatetopic() to wrappresplitupdate()
Anton Shestakov <av6@dwimlabs.net>
parents:
6410
diff
changeset
|
541 wrappresplitupdate) |
2667
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
542 except (KeyError, AttributeError): |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
543 pass |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
544 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
545 cmdutil.summaryhooks.add(b'topic', summaryhook) |
1951
0309cac5d91d
uisetup: move all remaining wrapping into uisetup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1950
diff
changeset
|
546 |
3281
703e8398ac57
topic: move function wrapping from reposetup to uisetup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3235
diff
changeset
|
547 # Wrap workingctx extra to return the topic name |
703e8398ac57
topic: move function wrapping from reposetup to uisetup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3235
diff
changeset
|
548 extensions.wrapfunction(context.workingctx, '__init__', wrapinit) |
6376
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
549 # Wrap workingctx.branch() to return branch name in the "//" format |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
550 extensions.wrapfunction(context.workingctx, 'branch', wrapwctxbranch) |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
551 # Wrap workingctx.dirty() to check branch//namespace/topic |
5c8196a550b6
topic: make hg stack work for branches with double slashes in them
Anton Shestakov <av6@dwimlabs.net>
parents:
6371
diff
changeset
|
552 extensions.wrapfunction(context.workingctx, 'dirty', wrapwctxdirty) |
3281
703e8398ac57
topic: move function wrapping from reposetup to uisetup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3235
diff
changeset
|
553 # Wrap changelog.add to drop empty topic |
703e8398ac57
topic: move function wrapping from reposetup to uisetup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3235
diff
changeset
|
554 extensions.wrapfunction(changelog.changelog, 'add', wrapadd) |
5221
af9f40236037
topics: fix auto-publish=abort with servers publishing bare branches
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5154
diff
changeset
|
555 # Make exchange._checkpublish handle experimental.topic.publish-bare-branch |
5231
1a81bbc94d45
topic: check that exchange._checkpublish() exists before wrapping it
Anton Shestakov <av6@dwimlabs.net>
parents:
5221
diff
changeset
|
556 if util.safehasattr(exchange, '_checkpublish'): |
1a81bbc94d45
topic: check that exchange._checkpublish() exists before wrapping it
Anton Shestakov <av6@dwimlabs.net>
parents:
5221
diff
changeset
|
557 extensions.wrapfunction(exchange, '_checkpublish', |
1a81bbc94d45
topic: check that exchange._checkpublish() exists before wrapping it
Anton Shestakov <av6@dwimlabs.net>
parents:
5221
diff
changeset
|
558 flow.replacecheckpublish) |
5232
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
559 else: |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
560 # hg <= 4.8 (33d30fb1e4ae) |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
561 try: |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
562 evolve = extensions.find(b'evolve') |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
563 extensions.wrapfunction(evolve.safeguard, '_checkpublish', |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
564 flow.replacecheckpublish) |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
565 except (KeyError, AttributeError): |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
566 pass |
1951
0309cac5d91d
uisetup: move all remaining wrapping into uisetup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1950
diff
changeset
|
567 |
6117
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
568 try: |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
569 histedit = extensions.find(b'histedit') |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
570 except KeyError: |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
571 pass |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
572 else: |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
573 # Make histedit preserve topics of edited commits |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
574 extensions.wrapfunction(histedit.histeditaction, 'applychange', |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
575 applychangewrap) |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
576 |
6537
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
577 # Wrapping precheck() both in core and in evolve to make sure all rewrite |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
578 # operations that could use precheck() are covered |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
579 extensions.wrapfunction(rewriteutil, 'precheck', wrapprecheck) |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
580 try: |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
581 evolve = extensions.find(b'evolve') |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
582 extensions.wrapfunction(evolve.rewriteutil, 'precheck', wrapprecheck) |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
583 except (KeyError, AttributeError): |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
584 pass |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
585 |
5139
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
586 server.setupserver(ui) |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
587 |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
588 def reposetup(ui, repo): |
1886
0504e76bfbd9
push: allow pushing new topic to non-publishing server by default
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1885
diff
changeset
|
589 if not isinstance(repo, localrepo.localrepository): |
0504e76bfbd9
push: allow pushing new topic to non-publishing server by default
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1885
diff
changeset
|
590 return # this can be a peer in the ssh case (puzzling) |
2007 | 591 |
2653
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
592 repo = repo.unfiltered() |
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
593 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
594 if repo.ui.config(b'experimental', b'thg.displaynames') is None: |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
595 repo.ui.setconfig(b'experimental', b'thg.displaynames', b'topics', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
596 source=b'topic-extension') |
2339
f641cccbd119
topic: automatically configure thg to display topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2288
diff
changeset
|
597 |
5688
b1e057fb7837
topic: disable inmemory rebase to avoid losing the topic
Matt Harbison <matt_harbison@yahoo.com>
parents:
5644
diff
changeset
|
598 # BUG: inmemory rebase drops the topic, and fails to switch to the new |
b1e057fb7837
topic: disable inmemory rebase to avoid losing the topic
Matt Harbison <matt_harbison@yahoo.com>
parents:
5644
diff
changeset
|
599 # topic. Disable inmemory rebase for now. |
b1e057fb7837
topic: disable inmemory rebase to avoid losing the topic
Matt Harbison <matt_harbison@yahoo.com>
parents:
5644
diff
changeset
|
600 if repo.ui.configbool(b'rebase', b'experimental.inmemory'): |
b1e057fb7837
topic: disable inmemory rebase to avoid losing the topic
Matt Harbison <matt_harbison@yahoo.com>
parents:
5644
diff
changeset
|
601 repo.ui.setconfig(b'rebase', b'experimental.inmemory', b'False', |
b1e057fb7837
topic: disable inmemory rebase to avoid losing the topic
Matt Harbison <matt_harbison@yahoo.com>
parents:
5644
diff
changeset
|
602 source=b'topic-extension') |
b1e057fb7837
topic: disable inmemory rebase to avoid losing the topic
Matt Harbison <matt_harbison@yahoo.com>
parents:
5644
diff
changeset
|
603 |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
604 class topicrepo(repo.__class__): |
1903
58cdf061d49a
topic: don't take topic into account when pushing to non-topic repo
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1901
diff
changeset
|
605 |
4531
1d1f8f56daac
topic: introduce a `hastopicext(repo)` function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4524
diff
changeset
|
606 # attribute for other code to distinct between repo with topic and repo without |
1d1f8f56daac
topic: introduce a `hastopicext(repo)` function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4524
diff
changeset
|
607 hastopicext = True |
1d1f8f56daac
topic: introduce a `hastopicext(repo)` function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4524
diff
changeset
|
608 |
1903
58cdf061d49a
topic: don't take topic into account when pushing to non-topic repo
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1901
diff
changeset
|
609 def _restrictcapabilities(self, caps): |
58cdf061d49a
topic: don't take topic into account when pushing to non-topic repo
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1901
diff
changeset
|
610 caps = super(topicrepo, self)._restrictcapabilities(caps) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
611 caps.add(b'topics') |
6296
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
612 caps.add(b'topics-namespaces') |
5251
2de59d916266
auto-publish: issue the capabilities in all cases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5242
diff
changeset
|
613 if self.ui.configbool(b'phases', b'publish'): |
2de59d916266
auto-publish: issue the capabilities in all cases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5242
diff
changeset
|
614 mode = b'all' |
2de59d916266
auto-publish: issue the capabilities in all cases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5242
diff
changeset
|
615 elif self.ui.configbool(b'experimental', |
2de59d916266
auto-publish: issue the capabilities in all cases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5242
diff
changeset
|
616 b'topic.publish-bare-branch'): |
2de59d916266
auto-publish: issue the capabilities in all cases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5242
diff
changeset
|
617 mode = b'auto' |
2de59d916266
auto-publish: issue the capabilities in all cases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5242
diff
changeset
|
618 else: |
2de59d916266
auto-publish: issue the capabilities in all cases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5242
diff
changeset
|
619 mode = b'none' |
2de59d916266
auto-publish: issue the capabilities in all cases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5242
diff
changeset
|
620 caps.add(b'ext-topics-publish=%s' % mode) |
1903
58cdf061d49a
topic: don't take topic into account when pushing to non-topic repo
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1901
diff
changeset
|
621 return caps |
58cdf061d49a
topic: don't take topic into account when pushing to non-topic repo
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1901
diff
changeset
|
622 |
1858
4ab1b854ce4e
topics: allow commits that only change topic (issue4725)
Matt Mackall <mpm@selenic.com>
parents:
1857
diff
changeset
|
623 def commit(self, *args, **kwargs): |
5007
de0151ba3e46
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4942
diff
changeset
|
624 configoverride = util.nullcontextmanager() |
de0151ba3e46
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4942
diff
changeset
|
625 if self.currenttopic != self[b'.'].topic(): |
de0151ba3e46
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4942
diff
changeset
|
626 # bypass the core "nothing changed" logic |
de0151ba3e46
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4942
diff
changeset
|
627 configoverride = self.ui.configoverride({ |
de0151ba3e46
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4942
diff
changeset
|
628 (b'ui', b'allowemptycommit'): True |
de0151ba3e46
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4942
diff
changeset
|
629 }) |
de0151ba3e46
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4942
diff
changeset
|
630 with configoverride: |
2288
b6ea9049693d
topic: directly use "super" call
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2012
diff
changeset
|
631 return super(topicrepo, self).commit(*args, **kwargs) |
1858
4ab1b854ce4e
topics: allow commits that only change topic (issue4725)
Matt Mackall <mpm@selenic.com>
parents:
1857
diff
changeset
|
632 |
4842
ee0866a279da
topic: fix some API to make it more robust
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
4790
diff
changeset
|
633 def commitctx(self, ctx, *args, **kwargs): |
1855
f241a00e93a7
topics: only apply topic to commits of the working copy
Matt Mackall <mpm@selenic.com>
parents:
1854
diff
changeset
|
634 if isinstance(ctx, context.workingcommitctx): |
f241a00e93a7
topics: only apply topic to commits of the working copy
Matt Mackall <mpm@selenic.com>
parents:
1854
diff
changeset
|
635 current = self.currenttopic |
f241a00e93a7
topics: only apply topic to commits of the working copy
Matt Mackall <mpm@selenic.com>
parents:
1854
diff
changeset
|
636 if current: |
f241a00e93a7
topics: only apply topic to commits of the working copy
Matt Mackall <mpm@selenic.com>
parents:
1854
diff
changeset
|
637 ctx.extra()[constants.extrakey] = current |
4842
ee0866a279da
topic: fix some API to make it more robust
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
4790
diff
changeset
|
638 return super(topicrepo, self).commitctx(ctx, *args, **kwargs) |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
639 |
5680
18a70ae9fb0b
topic: add a basic in-memory cache for topic information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5646
diff
changeset
|
640 @util.propertycache |
6238
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
641 def _tnscache(self): |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
642 return {} |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
643 |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
644 @property |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
645 def topic_namespaces(self): |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
646 if self._topic_namespaces is not None: |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
647 return self._topic_namespaces |
6489
71a8d4db4f55
topic: don't show "none" in the list of topic namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6487
diff
changeset
|
648 namespaces = set([b'none', self.currenttns]) |
6238
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
649 for c in self.set(b'not public()'): |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
650 namespaces.add(c.topic_namespace()) |
6489
71a8d4db4f55
topic: don't show "none" in the list of topic namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6487
diff
changeset
|
651 namespaces.remove(b'none') |
6238
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
652 self._topic_namespaces = namespaces |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
653 return namespaces |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
654 |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
655 @property |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
656 def currenttns(self): |
6487
963471ebe26a
topic: make topic namespace use string "none" as the default/empty value
Anton Shestakov <av6@dwimlabs.net>
parents:
6480
diff
changeset
|
657 return self.vfs.tryread(b'topic-namespace') or b'none' |
6238
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
658 |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
659 @util.propertycache |
5680
18a70ae9fb0b
topic: add a basic in-memory cache for topic information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5646
diff
changeset
|
660 def _topiccache(self): |
18a70ae9fb0b
topic: add a basic in-memory cache for topic information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5646
diff
changeset
|
661 return {} |
18a70ae9fb0b
topic: add a basic in-memory cache for topic information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5646
diff
changeset
|
662 |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
663 @property |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
664 def topics(self): |
1999 | 665 if self._topics is not None: |
666 return self._topics | |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
667 topics = set([b'', self.currenttopic]) |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
668 for c in self.set(b'not public()'): |
1861
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
669 topics.add(c.topic()) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
670 topics.remove(b'') |
1999 | 671 self._topics = topics |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
672 return topics |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
673 |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
674 @property |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
675 def currenttopic(self): |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
676 return self.vfs.tryread(b'topic') |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
677 |
2653
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
678 # overwritten at the instance level by topicmap.py |
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
679 _autobranchmaptopic = True |
1885
d49f75eab6a3
topic: take topic in account for all branch head computation
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1884
diff
changeset
|
680 |
6271
caf302fb8f4d
topic: use branch//namespace/topic format everywhere except exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6268
diff
changeset
|
681 def branchmap(self, topic=None, convertbm=False): |
2653
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
682 if topic is None: |
3880
28dadd024299
topic: use self instead of repo in topicrepo methods
Anton Shestakov <av6@dwimlabs.net>
parents:
3834
diff
changeset
|
683 topic = getattr(self, '_autobranchmaptopic', False) |
2653
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
684 topicfilter = topicmap.topicfilter(self.filtername) |
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
685 if not topic or topicfilter == self.filtername: |
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
686 return super(topicrepo, self).branchmap() |
6271
caf302fb8f4d
topic: use branch//namespace/topic format everywhere except exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6268
diff
changeset
|
687 bm = self.filtered(topicfilter).branchmap() |
caf302fb8f4d
topic: use branch//namespace/topic format everywhere except exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6268
diff
changeset
|
688 if convertbm: |
6333
f4ffe1e67a9b
topic: move compatibility for branchcache._entries to topic/compat.py
Anton Shestakov <av6@dwimlabs.net>
parents:
6320
diff
changeset
|
689 entries = compat.bcentries(bm) |
6271
caf302fb8f4d
topic: use branch//namespace/topic format everywhere except exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6268
diff
changeset
|
690 for key in list(entries): |
caf302fb8f4d
topic: use branch//namespace/topic format everywhere except exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6268
diff
changeset
|
691 branch, tns, topic = common.parsefqbn(key) |
caf302fb8f4d
topic: use branch//namespace/topic format everywhere except exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6268
diff
changeset
|
692 if topic: |
caf302fb8f4d
topic: use branch//namespace/topic format everywhere except exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6268
diff
changeset
|
693 value = entries.pop(key) |
caf302fb8f4d
topic: use branch//namespace/topic format everywhere except exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6268
diff
changeset
|
694 # we lose namespace when converting to ":" format |
caf302fb8f4d
topic: use branch//namespace/topic format everywhere except exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6268
diff
changeset
|
695 key = b'%s:%s' % (branch, topic) |
caf302fb8f4d
topic: use branch//namespace/topic format everywhere except exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6268
diff
changeset
|
696 entries[key] = value |
caf302fb8f4d
topic: use branch//namespace/topic format everywhere except exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6268
diff
changeset
|
697 return bm |
1889
d9b929bcc3ad
topicmap: ensure that 'served' view is updated with topicmap
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1888
diff
changeset
|
698 |
6296
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
699 def branchmaptns(self, topic=None): |
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
700 """branchmap using fqbn as keys""" |
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
701 if topic is None: |
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
702 topic = getattr(self, '_autobranchmaptopic', False) |
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
703 topicfilter = topicmap.topicfilter(self.filtername) |
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
704 if not topic or topicfilter == self.filtername: |
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
705 return super(topicrepo, self).branchmap() |
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
706 return self.filtered(topicfilter).branchmap() |
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
707 |
4704
5f90eb8fd63c
evolve: fix confusion in branch heads checking logic when topic in play
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4669
diff
changeset
|
708 def branchheads(self, branch=None, start=None, closed=False): |
5f90eb8fd63c
evolve: fix confusion in branch heads checking logic when topic in play
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4669
diff
changeset
|
709 if branch is None: |
5f90eb8fd63c
evolve: fix confusion in branch heads checking logic when topic in play
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4669
diff
changeset
|
710 branch = self[None].branch() |
6271
caf302fb8f4d
topic: use branch//namespace/topic format everywhere except exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6268
diff
changeset
|
711 branch = common.formatfqbn(branch, self.currenttns, self.currenttopic) |
4704
5f90eb8fd63c
evolve: fix confusion in branch heads checking logic when topic in play
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4669
diff
changeset
|
712 return super(topicrepo, self).branchheads(branch=branch, |
5f90eb8fd63c
evolve: fix confusion in branch heads checking logic when topic in play
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4669
diff
changeset
|
713 start=start, |
5f90eb8fd63c
evolve: fix confusion in branch heads checking logic when topic in play
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4669
diff
changeset
|
714 closed=closed) |
5f90eb8fd63c
evolve: fix confusion in branch heads checking logic when topic in play
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4669
diff
changeset
|
715 |
6360
e959390490c2
branching: merge with stable
Anton Shestakov <av6@dwimlabs.net>
parents:
6336
diff
changeset
|
716 def invalidatecaches(self): |
e959390490c2
branching: merge with stable
Anton Shestakov <av6@dwimlabs.net>
parents:
6336
diff
changeset
|
717 self._topiccache.clear() |
e959390490c2
branching: merge with stable
Anton Shestakov <av6@dwimlabs.net>
parents:
6336
diff
changeset
|
718 super(topicrepo, self).invalidatecaches() |
e959390490c2
branching: merge with stable
Anton Shestakov <av6@dwimlabs.net>
parents:
6336
diff
changeset
|
719 |
1999 | 720 def invalidatevolatilesets(self): |
721 # XXX we might be able to move this to something invalidated less often | |
722 super(topicrepo, self).invalidatevolatilesets() | |
6238
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
723 self._topic_namespaces = None |
1999 | 724 self._topics = None |
1885
d49f75eab6a3
topic: take topic in account for all branch head computation
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1884
diff
changeset
|
725 |
6360
e959390490c2
branching: merge with stable
Anton Shestakov <av6@dwimlabs.net>
parents:
6336
diff
changeset
|
726 def peer(self, *args, **kwargs): |
e959390490c2
branching: merge with stable
Anton Shestakov <av6@dwimlabs.net>
parents:
6336
diff
changeset
|
727 peer = super(topicrepo, self).peer(*args, **kwargs) |
1886
0504e76bfbd9
push: allow pushing new topic to non-publishing server by default
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1885
diff
changeset
|
728 if getattr(peer, '_repo', None) is not None: # localpeer |
0504e76bfbd9
push: allow pushing new topic to non-publishing server by default
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1885
diff
changeset
|
729 class topicpeer(peer.__class__): |
0504e76bfbd9
push: allow pushing new topic to non-publishing server by default
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1885
diff
changeset
|
730 def branchmap(self): |
0504e76bfbd9
push: allow pushing new topic to non-publishing server by default
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1885
diff
changeset
|
731 usetopic = not self._repo.publishing() |
6271
caf302fb8f4d
topic: use branch//namespace/topic format everywhere except exchange
Anton Shestakov <av6@dwimlabs.net>
parents:
6268
diff
changeset
|
732 return self._repo.branchmap(topic=usetopic, convertbm=usetopic) |
6296
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
733 |
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
734 def branchmaptns(self): |
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
735 usetopic = not self._repo.publishing() |
a2855aff1268
topic: call a different wire protocol command to get tns-aware branchmap
Anton Shestakov <av6@dwimlabs.net>
parents:
6294
diff
changeset
|
736 return self._repo.branchmaptns(topic=usetopic) |
1886
0504e76bfbd9
push: allow pushing new topic to non-publishing server by default
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1885
diff
changeset
|
737 peer.__class__ = topicpeer |
0504e76bfbd9
push: allow pushing new topic to non-publishing server by default
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1885
diff
changeset
|
738 return peer |
0504e76bfbd9
push: allow pushing new topic to non-publishing server by default
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1885
diff
changeset
|
739 |
2989
53246d237373
topic: skip topic movement message during strip
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2986
diff
changeset
|
740 def transaction(self, desc, *a, **k): |
2987
d59d6413bb68
topics/transaction: return immediately if we are in the middle of a transaction
Aurélien Campéas
parents:
2986
diff
changeset
|
741 ctr = self.currenttransaction() |
2989
53246d237373
topic: skip topic movement message during strip
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2986
diff
changeset
|
742 tr = super(topicrepo, self).transaction(desc, *a, **k) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
743 if desc in (b'strip', b'repair') or ctr is not None: |
2987
d59d6413bb68
topics/transaction: return immediately if we are in the middle of a transaction
Aurélien Campéas
parents:
2986
diff
changeset
|
744 return tr |
2986
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
745 |
3158
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
746 reporef = weakref.ref(self) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
747 if self.ui.configbool(b'experimental', b'enforce-single-head'): |
6304
c00332abb66b
topic: remove 4.7 compat for transaction validators
Anton Shestakov <av6@dwimlabs.net>
parents:
6296
diff
changeset
|
748 if util.safehasattr(tr, '_validator'): |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
749 # hg <= 5.3 (36f08ae87ef6) |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
750 origvalidator = tr._validator |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
751 |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
752 def _validate(tr2): |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
753 repo = reporef() |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
754 flow.enforcesinglehead(repo, tr2) |
3157
f286eefbd20d
topic: add an option to enforce a single head per name in a repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3150
diff
changeset
|
755 |
f286eefbd20d
topic: add an option to enforce a single head per name in a repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3150
diff
changeset
|
756 def validator(tr2): |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
757 _validate(tr2) |
6306
075f365a53cf
topic: remove validator safeguard that wasn't safeguarding anything
Anton Shestakov <av6@dwimlabs.net>
parents:
6305
diff
changeset
|
758 return origvalidator(tr2) |
4123
119fced5a891
topic: add a compatibility to access transaction's validator
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4117
diff
changeset
|
759 |
6304
c00332abb66b
topic: remove 4.7 compat for transaction validators
Anton Shestakov <av6@dwimlabs.net>
parents:
6296
diff
changeset
|
760 if util.safehasattr(tr, '_validator'): |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
761 # hg <= 5.3 (36f08ae87ef6) |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
762 tr._validator = validator |
4123
119fced5a891
topic: add a compatibility to access transaction's validator
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4117
diff
changeset
|
763 else: |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
764 tr.addvalidator(b'000-enforce-single-head', _validate) |
3157
f286eefbd20d
topic: add an option to enforce a single head per name in a repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3150
diff
changeset
|
765 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
766 topicmodeserver = self.ui.config(b'experimental', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
767 b'topic-mode.server', b'ignore') |
5930
8d36bfe9968a
topic: add more variables to make a condition fit on one line
Anton Shestakov <av6@dwimlabs.net>
parents:
5919
diff
changeset
|
768 publishbare = self.ui.configbool(b'experimental', |
8d36bfe9968a
topic: add more variables to make a condition fit on one line
Anton Shestakov <av6@dwimlabs.net>
parents:
5919
diff
changeset
|
769 b'topic.publish-bare-branch') |
8d36bfe9968a
topic: add more variables to make a condition fit on one line
Anton Shestakov <av6@dwimlabs.net>
parents:
5919
diff
changeset
|
770 ispush = desc.startswith((b'push', b'serve')) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
771 if (topicmodeserver != b'ignore' and ispush): |
6304
c00332abb66b
topic: remove 4.7 compat for transaction validators
Anton Shestakov <av6@dwimlabs.net>
parents:
6296
diff
changeset
|
772 if util.safehasattr(tr, '_validator'): |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
773 # hg <= 5.3 (36f08ae87ef6) |
4123
119fced5a891
topic: add a compatibility to access transaction's validator
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4117
diff
changeset
|
774 origvalidator = tr._validator |
3235
8a772f0c54d9
topics: add a config to reject draft changeset without topic on a server
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3232
diff
changeset
|
775 |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
776 def _validate(tr2): |
3235
8a772f0c54d9
topics: add a config to reject draft changeset without topic on a server
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3232
diff
changeset
|
777 repo = reporef() |
8a772f0c54d9
topics: add a config to reject draft changeset without topic on a server
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3232
diff
changeset
|
778 flow.rejectuntopicedchangeset(repo, tr2) |
8a772f0c54d9
topics: add a config to reject draft changeset without topic on a server
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3232
diff
changeset
|
779 |
8a772f0c54d9
topics: add a config to reject draft changeset without topic on a server
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3232
diff
changeset
|
780 def validator(tr2): |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
781 _validate(tr2) |
3235
8a772f0c54d9
topics: add a config to reject draft changeset without topic on a server
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3232
diff
changeset
|
782 return origvalidator(tr2) |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
783 |
6304
c00332abb66b
topic: remove 4.7 compat for transaction validators
Anton Shestakov <av6@dwimlabs.net>
parents:
6296
diff
changeset
|
784 if util.safehasattr(tr, '_validator'): |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
785 # hg <= 5.3 (36f08ae87ef6) |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
786 tr._validator = validator |
4123
119fced5a891
topic: add a compatibility to access transaction's validator
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4117
diff
changeset
|
787 else: |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
788 tr.addvalidator(b'000-reject-untopiced', _validate) |
3235
8a772f0c54d9
topics: add a config to reject draft changeset without topic on a server
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3232
diff
changeset
|
789 |
5930
8d36bfe9968a
topic: add more variables to make a condition fit on one line
Anton Shestakov <av6@dwimlabs.net>
parents:
5919
diff
changeset
|
790 elif publishbare and ispush: |
3158
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
791 origclose = tr.close |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
792 trref = weakref.ref(tr) |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
793 |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
794 def close(): |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
795 repo = reporef() |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
796 tr2 = trref() |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
797 flow.publishbarebranch(repo, tr2) |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
798 origclose() |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
799 tr.close = close |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
800 allow_publish = self.ui.configbool(b'experimental', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
801 b'topic.allow-publish', |
4647
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
802 True) |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
803 if not allow_publish: |
6304
c00332abb66b
topic: remove 4.7 compat for transaction validators
Anton Shestakov <av6@dwimlabs.net>
parents:
6296
diff
changeset
|
804 if util.safehasattr(tr, '_validator'): |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
805 # hg <= 5.3 (36f08ae87ef6) |
4647
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
806 origvalidator = tr._validator |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
807 |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
808 def _validate(tr2): |
4647
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
809 repo = reporef() |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
810 flow.reject_publish(repo, tr2) |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
811 |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
812 def validator(tr2): |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
813 _validate(tr2) |
4647
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
814 return origvalidator(tr2) |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
815 |
6304
c00332abb66b
topic: remove 4.7 compat for transaction validators
Anton Shestakov <av6@dwimlabs.net>
parents:
6296
diff
changeset
|
816 if util.safehasattr(tr, '_validator'): |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
817 # hg <= 5.3 (36f08ae87ef6) |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
818 tr._validator = validator |
4647
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
819 else: |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
820 tr.addvalidator(b'000-reject-publish', _validate) |
3158
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
821 |
6496
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
822 if util.safehasattr(tr, '_validator'): |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
823 # hg <= 5.3 (36f08ae87ef6) |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
824 origvalidator = tr._validator |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
825 |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
826 def _validate(tr2): |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
827 repo = reporef() |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
828 find_affected_tns(repo, tr2) |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
829 |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
830 def validator(tr2): |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
831 result = origvalidator(tr2) |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
832 _validate(tr2) |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
833 return result |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
834 |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
835 if util.safehasattr(tr, '_validator'): |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
836 # hg <= 5.3 (36f08ae87ef6) |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
837 tr._validator = validator |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
838 else: |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
839 tr.addvalidator(b'000-find-affected-tns', _validate) |
fba501baf5cb
topic: find and report topic namespace changes in transactions
Anton Shestakov <av6@dwimlabs.net>
parents:
6489
diff
changeset
|
840 |
2988
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
841 # real transaction start |
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
842 ct = self.currenttopic |
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
843 if not ct: |
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
844 return tr |
3043
033e00be9ce4
topics: use stack rather than stackdata when one only wants the changeset count
Aurélien Campéas
parents:
3012
diff
changeset
|
845 ctwasempty = stack.stack(self, topic=ct).changesetcount == 0 |
2988
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
846 |
2986
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
847 reporef = weakref.ref(self) |
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
848 |
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
849 def currenttopicempty(tr): |
3225
28fb347a5bf8
typos: fix typos in several locations
Kyle Lippincott <spectral@google.com>
parents:
3195
diff
changeset
|
850 # check active topic emptiness |
2986
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
851 repo = reporef() |
3043
033e00be9ce4
topics: use stack rather than stackdata when one only wants the changeset count
Aurélien Campéas
parents:
3012
diff
changeset
|
852 csetcount = stack.stack(repo, topic=ct).changesetcount |
2988
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
853 empty = csetcount == 0 |
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
854 if empty and not ctwasempty: |
5924
16f3fb304285
topic: add a 'topic.active' label to messages with active topic
Anton Shestakov <av6@dwimlabs.net>
parents:
5922
diff
changeset
|
855 ui.status(b"active topic '%s' is now empty\n" |
16f3fb304285
topic: add a 'topic.active' label to messages with active topic
Anton Shestakov <av6@dwimlabs.net>
parents:
5922
diff
changeset
|
856 % ui.label(ct, b'topic.active')) |
4124
23658110ab26
topic: add a compatibility to access transaction's names
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4123
diff
changeset
|
857 trnames = getattr(tr, 'names', getattr(tr, '_names', ())) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
858 if (b'phase' in trnames |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
859 or any(n.startswith(b'push-response') |
4124
23658110ab26
topic: add a compatibility to access transaction's names
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4123
diff
changeset
|
860 for n in trnames)): |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
861 ui.status(_(b"(use 'hg topic --clear' to clear it if needed)\n")) |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
862 hint = _(b"(see 'hg help topics' for more information)\n") |
2988
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
863 if ctwasempty and not empty: |
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
864 if csetcount == 1: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
865 msg = _(b"active topic '%s' grew its first changeset\n%s") |
5924
16f3fb304285
topic: add a 'topic.active' label to messages with active topic
Anton Shestakov <av6@dwimlabs.net>
parents:
5922
diff
changeset
|
866 ui.status(msg % (ui.label(ct, b'topic.active'), hint)) |
2988
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
867 else: |
5132
fb5f49be3c90
topic: use `%d` for integers instead of `%s` on py3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5110
diff
changeset
|
868 msg = _(b"active topic '%s' grew its %d first changesets\n%s") |
5924
16f3fb304285
topic: add a 'topic.active' label to messages with active topic
Anton Shestakov <av6@dwimlabs.net>
parents:
5922
diff
changeset
|
869 ui.status(msg % (ui.label(ct, b'topic.active'), csetcount, hint)) |
2986
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
870 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
871 tr.addpostclose(b'signalcurrenttopicempty', currenttopicempty) |
2986
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
872 return tr |
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
873 |
1857
a506ed8ab8da
topics: add listnames hook so completion works
Matt Mackall <mpm@selenic.com>
parents:
1856
diff
changeset
|
874 repo.__class__ = topicrepo |
6238
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
875 repo._topic_namespaces = None |
1999 | 876 repo._topics = None |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
877 if util.safehasattr(repo, 'names'): |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
878 repo.names.addnamespace(namespaces.namespace( |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
879 b'topics', b'topic', namemap=_namemap, nodemap=_nodemap, |
1857
a506ed8ab8da
topics: add listnames hook so completion works
Matt Mackall <mpm@selenic.com>
parents:
1856
diff
changeset
|
880 listnames=lambda repo: repo.topics)) |
2928
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
881 |
5183
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
882 templatekeyword = registrar.templatekeyword() |
4152
fb22c7a6ca8b
topic: add topicidx template keyword
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4126
diff
changeset
|
883 |
5183
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
884 @templatekeyword(b'topic', requires={b'ctx'}) |
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
885 def topickw(context, mapping): |
6409
77c4f9773aea
topic: remove templatekeyword name, not needed after 119702a8b415
Anton Shestakov <av6@dwimlabs.net>
parents:
6406
diff
changeset
|
886 """String. The topic of the changeset""" |
5183
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
887 ctx = context.resource(mapping, b'ctx') |
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
888 return ctx.topic() |
3384
2b06f144b6e0
topics: add a new templatekeyword `topic`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3372
diff
changeset
|
889 |
5183
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
890 @templatekeyword(b'topicidx', requires={b'ctx'}) |
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
891 def topicidxkw(context, mapping): |
6409
77c4f9773aea
topic: remove templatekeyword name, not needed after 119702a8b415
Anton Shestakov <av6@dwimlabs.net>
parents:
6406
diff
changeset
|
892 """Integer. Index of the changeset as a stack alias""" |
5183
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
893 ctx = context.resource(mapping, b'ctx') |
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
894 return ctx.topicidx() |
4152
fb22c7a6ca8b
topic: add topicidx template keyword
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4126
diff
changeset
|
895 |
6241
85abf58c3d8c
topic: namespace template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
6240
diff
changeset
|
896 @templatekeyword(b'topic_namespace', requires={b'ctx'}) |
85abf58c3d8c
topic: namespace template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
6240
diff
changeset
|
897 def topicnamespacekw(context, mapping): |
6409
77c4f9773aea
topic: remove templatekeyword name, not needed after 119702a8b415
Anton Shestakov <av6@dwimlabs.net>
parents:
6406
diff
changeset
|
898 """String. The topic namespace of the changeset""" |
6241
85abf58c3d8c
topic: namespace template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
6240
diff
changeset
|
899 ctx = context.resource(mapping, b'ctx') |
85abf58c3d8c
topic: namespace template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
6240
diff
changeset
|
900 return ctx.topic_namespace() |
85abf58c3d8c
topic: namespace template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
6240
diff
changeset
|
901 |
6243
91d9a279b84a
topic: fqbn template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
6242
diff
changeset
|
902 @templatekeyword(b'fqbn', requires={b'ctx'}) |
91d9a279b84a
topic: fqbn template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
6242
diff
changeset
|
903 def fqbnkw(context, mapping): |
6409
77c4f9773aea
topic: remove templatekeyword name, not needed after 119702a8b415
Anton Shestakov <av6@dwimlabs.net>
parents:
6406
diff
changeset
|
904 """String. The branch//namespace/topic of the changeset""" |
6243
91d9a279b84a
topic: fqbn template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
6242
diff
changeset
|
905 ctx = context.resource(mapping, b'ctx') |
91d9a279b84a
topic: fqbn template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
6242
diff
changeset
|
906 return ctx.fqbn() |
91d9a279b84a
topic: fqbn template keyword
Anton Shestakov <av6@dwimlabs.net>
parents:
6242
diff
changeset
|
907 |
2928
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
908 def wrapinit(orig, self, repo, *args, **kwargs): |
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
909 orig(self, repo, *args, **kwargs) |
4532
659b6f548fc1
topic: only wrap workingctx.__init__ for repo with topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4531
diff
changeset
|
910 if not hastopicext(repo): |
659b6f548fc1
topic: only wrap workingctx.__init__ for repo with topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4531
diff
changeset
|
911 return |
6240
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
912 if b'topic-namespace' not in self._extra: |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
913 if getattr(repo, 'currenttns', b''): |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
914 self._extra[b'topic-namespace'] = repo.currenttns |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
915 else: |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
916 # Default value will be dropped from extra by another hack at the changegroup level |
6487
963471ebe26a
topic: make topic namespace use string "none" as the default/empty value
Anton Shestakov <av6@dwimlabs.net>
parents:
6480
diff
changeset
|
917 self._extra[b'topic-namespace'] = b'none' |
4125
865c33c16508
topic: respect preexisting 'topic' value on workingcommitctx
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4124
diff
changeset
|
918 if constants.extrakey not in self._extra: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
919 if getattr(repo, 'currenttopic', b''): |
4125
865c33c16508
topic: respect preexisting 'topic' value on workingcommitctx
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4124
diff
changeset
|
920 self._extra[constants.extrakey] = repo.currenttopic |
865c33c16508
topic: respect preexisting 'topic' value on workingcommitctx
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4124
diff
changeset
|
921 else: |
865c33c16508
topic: respect preexisting 'topic' value on workingcommitctx
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4124
diff
changeset
|
922 # Empty key will be dropped from extra by another hack at the changegroup level |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
923 self._extra[constants.extrakey] = b'' |
2928
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
924 |
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
925 def wrapadd(orig, cl, manifest, files, desc, transaction, p1, p2, user, |
4646
7b986968700b
compat: adjust `wrapadd` for upstream
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4628
diff
changeset
|
926 date=None, extra=None, p1copies=None, p2copies=None, |
7b986968700b
compat: adjust `wrapadd` for upstream
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4628
diff
changeset
|
927 filesadded=None, filesremoved=None): |
6487
963471ebe26a
topic: make topic namespace use string "none" as the default/empty value
Anton Shestakov <av6@dwimlabs.net>
parents:
6480
diff
changeset
|
928 if b'topic-namespace' in extra and extra[b'topic-namespace'] == b'none': |
6240
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
929 extra = extra.copy() |
2686ecc90791
topic: store topic namespace in commit extras
Anton Shestakov <av6@dwimlabs.net>
parents:
6239
diff
changeset
|
930 del extra[b'topic-namespace'] |
2928
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
931 if constants.extrakey in extra and not extra[constants.extrakey]: |
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
932 extra = extra.copy() |
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
933 del extra[constants.extrakey] |
4522
001eb0f11bcd
topic: add compatibility for writing copy metadata in changelog.add()
Anton Shestakov <av6@dwimlabs.net>
parents:
4519
diff
changeset
|
934 # hg <= 4.9 (0e41f40b01cc) |
001eb0f11bcd
topic: add compatibility for writing copy metadata in changelog.add()
Anton Shestakov <av6@dwimlabs.net>
parents:
4519
diff
changeset
|
935 kwargs = {} |
001eb0f11bcd
topic: add compatibility for writing copy metadata in changelog.add()
Anton Shestakov <av6@dwimlabs.net>
parents:
4519
diff
changeset
|
936 if p1copies is not None: |
001eb0f11bcd
topic: add compatibility for writing copy metadata in changelog.add()
Anton Shestakov <av6@dwimlabs.net>
parents:
4519
diff
changeset
|
937 kwargs['p1copies'] = p1copies |
001eb0f11bcd
topic: add compatibility for writing copy metadata in changelog.add()
Anton Shestakov <av6@dwimlabs.net>
parents:
4519
diff
changeset
|
938 if p2copies is not None: |
001eb0f11bcd
topic: add compatibility for writing copy metadata in changelog.add()
Anton Shestakov <av6@dwimlabs.net>
parents:
4519
diff
changeset
|
939 kwargs['p2copies'] = p2copies |
4646
7b986968700b
compat: adjust `wrapadd` for upstream
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4628
diff
changeset
|
940 # hg <= 5.0 (f385ba70e4af) |
7b986968700b
compat: adjust `wrapadd` for upstream
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4628
diff
changeset
|
941 if filesadded is not None: |
7b986968700b
compat: adjust `wrapadd` for upstream
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4628
diff
changeset
|
942 kwargs['filesadded'] = filesadded |
7b986968700b
compat: adjust `wrapadd` for upstream
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4628
diff
changeset
|
943 if filesremoved is not None: |
7b986968700b
compat: adjust `wrapadd` for upstream
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4628
diff
changeset
|
944 kwargs['filesremoved'] = filesremoved |
2928
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
945 return orig(cl, manifest, files, desc, transaction, p1, p2, user, |
4522
001eb0f11bcd
topic: add compatibility for writing copy metadata in changelog.add()
Anton Shestakov <av6@dwimlabs.net>
parents:
4519
diff
changeset
|
946 date=date, extra=extra, **kwargs) |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
947 |
6117
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
948 def applychangewrap(orig, self): |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
949 orig(self) |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
950 repo = self.repo |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
951 rulectx = repo[self.node] |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
952 |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
953 topic = None |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
954 if util.safehasattr(rulectx, 'topic'): |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
955 topic = rulectx.topic() |
6118
5d1bfde39b95
topic: also make histedit clear the current topic if needed
Simon Sapin <simon.sapin@octobus.net>
parents:
6117
diff
changeset
|
956 _changecurrenttopic(repo, topic) |
6117
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
957 |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
958 |
2924
430fb1758d28
topic: use registrar.revsetpredicate to register revset predicate functions
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2923
diff
changeset
|
959 # revset predicates are automatically registered at loading via this symbol |
430fb1758d28
topic: use registrar.revsetpredicate to register revset predicate functions
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2923
diff
changeset
|
960 revsetpredicate = topicrevset.revsetpredicate |
430fb1758d28
topic: use registrar.revsetpredicate to register revset predicate functions
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2923
diff
changeset
|
961 |
4715
12c8b24757f4
py3: use byte strings for @command registrations
Martin von Zweigbergk <martinvonz@google.com>
parents:
4713
diff
changeset
|
962 @command(b'topics', [ |
12c8b24757f4
py3: use byte strings for @command registrations
Martin von Zweigbergk <martinvonz@google.com>
parents:
4713
diff
changeset
|
963 (b'', b'clear', False, b'clear active topic if any'), |
12c8b24757f4
py3: use byte strings for @command registrations
Martin von Zweigbergk <martinvonz@google.com>
parents:
4713
diff
changeset
|
964 (b'r', b'rev', [], b'revset of existing revisions', _(b'REV')), |
12c8b24757f4
py3: use byte strings for @command registrations
Martin von Zweigbergk <martinvonz@google.com>
parents:
4713
diff
changeset
|
965 (b'l', b'list', False, b'show the stack of changeset in the topic'), |
12c8b24757f4
py3: use byte strings for @command registrations
Martin von Zweigbergk <martinvonz@google.com>
parents:
4713
diff
changeset
|
966 (b'', b'age', False, b'show when you last touched the topics'), |
12c8b24757f4
py3: use byte strings for @command registrations
Martin von Zweigbergk <martinvonz@google.com>
parents:
4713
diff
changeset
|
967 (b'', b'current', None, b'display the current topic only'), |
2805
a789b9d5b60c
topic: make command names valid as expected, even if ui.strict=true
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2795
diff
changeset
|
968 ] + commands.formatteropts, |
4921
a7c01a2a3974
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
diff
changeset
|
969 _(b'hg topics [OPTION]... [-r REV]... [TOPIC]'), |
6305
77ce98287dc2
topic: drop helpcategory 4.7 compat, use helpcategory keyword directly
Anton Shestakov <av6@dwimlabs.net>
parents:
6304
diff
changeset
|
970 helpcategory=registrar.command.CATEGORY_CHANGE_ORGANIZATION, |
77ce98287dc2
topic: drop helpcategory 4.7 compat, use helpcategory keyword directly
Anton Shestakov <av6@dwimlabs.net>
parents:
6304
diff
changeset
|
971 ) |
2991
f4956eb3a456
topics: improve the function signature by accepting arguments as **opts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2990
diff
changeset
|
972 def topics(ui, repo, topic=None, **opts): |
2717
ed45a5fb4452
topics: update the help for `hg topics` describing ways to use the command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2712
diff
changeset
|
973 """View current topic, set current topic, change topic for a set of revisions, or see all topics. |
ed45a5fb4452
topics: update the help for `hg topics` describing ways to use the command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2712
diff
changeset
|
974 |
2923
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
975 Clear topic on existing topiced revisions:: |
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
976 |
2994
1e8ac0fcd6b7
topics: spell out topics completely in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2993
diff
changeset
|
977 hg topics --rev <related revset> --clear |
2923
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
978 |
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
979 Change topic on some revisions:: |
2717
ed45a5fb4452
topics: update the help for `hg topics` describing ways to use the command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2712
diff
changeset
|
980 |
2994
1e8ac0fcd6b7
topics: spell out topics completely in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2993
diff
changeset
|
981 hg topics <newtopicname> --rev <related revset> |
2717
ed45a5fb4452
topics: update the help for `hg topics` describing ways to use the command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2712
diff
changeset
|
982 |
2923
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
983 Clear current topic:: |
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
984 |
2994
1e8ac0fcd6b7
topics: spell out topics completely in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2993
diff
changeset
|
985 hg topics --clear |
2717
ed45a5fb4452
topics: update the help for `hg topics` describing ways to use the command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2712
diff
changeset
|
986 |
2923
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
987 Set current topic:: |
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
988 |
2994
1e8ac0fcd6b7
topics: spell out topics completely in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2993
diff
changeset
|
989 hg topics <topicname> |
2923
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
990 |
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
991 List of topics:: |
2717
ed45a5fb4452
topics: update the help for `hg topics` describing ways to use the command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2712
diff
changeset
|
992 |
2923
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
993 hg topics |
2717
ed45a5fb4452
topics: update the help for `hg topics` describing ways to use the command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2712
diff
changeset
|
994 |
2993
725b660d9886
topics: show the user who last touched the topic in --age
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2992
diff
changeset
|
995 List of topics sorted according to their last touched time displaying last |
725b660d9886
topics: show the user who last touched the topic in --age
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2992
diff
changeset
|
996 touched time and the user who last touched the topic:: |
2923
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
997 |
2994
1e8ac0fcd6b7
topics: spell out topics completely in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2993
diff
changeset
|
998 hg topics --age |
2731
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
999 |
2717
ed45a5fb4452
topics: update the help for `hg topics` describing ways to use the command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2712
diff
changeset
|
1000 The active topic (if any) will be prepended with a "*". |
2011
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
1001 |
2869
b629874ccaac
topics: allow use a --current when setting a topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2868
diff
changeset
|
1002 The `--current` flag helps to take active topic into account. For |
b629874ccaac
topics: allow use a --current when setting a topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2868
diff
changeset
|
1003 example, if you want to set the topic on all the draft changesets to the |
b629874ccaac
topics: allow use a --current when setting a topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2868
diff
changeset
|
1004 active topic, you can do: |
2994
1e8ac0fcd6b7
topics: spell out topics completely in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2993
diff
changeset
|
1005 `hg topics -r "draft()" --current` |
2869
b629874ccaac
topics: allow use a --current when setting a topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2868
diff
changeset
|
1006 |
2011
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
1007 The --verbose version of this command display various information on the state of each topic.""" |
2867
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1008 |
2991
f4956eb3a456
topics: improve the function signature by accepting arguments as **opts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2990
diff
changeset
|
1009 clear = opts.get('clear') |
f4956eb3a456
topics: improve the function signature by accepting arguments as **opts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2990
diff
changeset
|
1010 list = opts.get('list') |
f4956eb3a456
topics: improve the function signature by accepting arguments as **opts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2990
diff
changeset
|
1011 rev = opts.get('rev') |
2867
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1012 current = opts.get('current') |
2995
dbc896a7a1c3
topics: make sure user don't pass both the age option and a topic name
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2994
diff
changeset
|
1013 age = opts.get('age') |
2991
f4956eb3a456
topics: improve the function signature by accepting arguments as **opts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2990
diff
changeset
|
1014 |
2867
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1015 if current and topic: |
6318
3e488afe62f5
topic: use compat.InputError for conflicting CLI flags
Anton Shestakov <av6@dwimlabs.net>
parents:
6311
diff
changeset
|
1016 raise compat.InputError(_(b"cannot use --current when setting a topic")) |
2867
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1017 if current and clear: |
6318
3e488afe62f5
topic: use compat.InputError for conflicting CLI flags
Anton Shestakov <av6@dwimlabs.net>
parents:
6311
diff
changeset
|
1018 raise compat.InputError(_(b"cannot use --current and --clear")) |
2868
e46b68547017
topic: make --clear + topicname invalid
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2867
diff
changeset
|
1019 if clear and topic: |
6318
3e488afe62f5
topic: use compat.InputError for conflicting CLI flags
Anton Shestakov <av6@dwimlabs.net>
parents:
6311
diff
changeset
|
1020 raise compat.InputError(_(b"cannot use --clear when setting a topic")) |
2995
dbc896a7a1c3
topics: make sure user don't pass both the age option and a topic name
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2994
diff
changeset
|
1021 if age and topic: |
6318
3e488afe62f5
topic: use compat.InputError for conflicting CLI flags
Anton Shestakov <av6@dwimlabs.net>
parents:
6311
diff
changeset
|
1022 raise compat.InputError(_(b"cannot use --age while setting a topic")) |
2867
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1023 |
6320
0c780d972350
topic: use check_incompatible_arguments() for --list with --clear or --rev
Anton Shestakov <av6@dwimlabs.net>
parents:
6319
diff
changeset
|
1024 compat.check_incompatible_arguments(opts, 'list', ('clear', 'rev')) |
0c780d972350
topic: use check_incompatible_arguments() for --list with --clear or --rev
Anton Shestakov <av6@dwimlabs.net>
parents:
6319
diff
changeset
|
1025 |
2898
3dfc88c06378
topic: support --rev argument and properly process then as user input
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2897
diff
changeset
|
1026 touchedrevs = set() |
3dfc88c06378
topic: support --rev argument and properly process then as user input
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2897
diff
changeset
|
1027 if rev: |
3dfc88c06378
topic: support --rev argument and properly process then as user input
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2897
diff
changeset
|
1028 touchedrevs = scmutil.revrange(repo, rev) |
3dfc88c06378
topic: support --rev argument and properly process then as user input
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2897
diff
changeset
|
1029 |
2889
31cbace4c0f1
topics: make sure we have some restrictions on topic names
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2869
diff
changeset
|
1030 if topic: |
31cbace4c0f1
topics: make sure we have some restrictions on topic names
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2869
diff
changeset
|
1031 topic = topic.strip() |
31cbace4c0f1
topics: make sure we have some restrictions on topic names
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2869
diff
changeset
|
1032 if not topic: |
6319
8c664ed9c103
topic: use compat.InputError for invalid topic names
Anton Shestakov <av6@dwimlabs.net>
parents:
6318
diff
changeset
|
1033 raise compat.InputError(_(b"topic names cannot consist entirely of whitespace")) |
2889
31cbace4c0f1
topics: make sure we have some restrictions on topic names
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2869
diff
changeset
|
1034 # Have some restrictions on the topic name just like bookmark name |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1035 scmutil.checknewlabel(repo, topic, b'topic') |
2889
31cbace4c0f1
topics: make sure we have some restrictions on topic names
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2869
diff
changeset
|
1036 |
6206
2ec9c87e8574
topic: allow unicode symbols in names as long as they are alphanumeric
Anton Shestakov <av6@dwimlabs.net>
parents:
6205
diff
changeset
|
1037 helptxt = _(b"topic names can only consist of alphanumeric, '-'" |
2ec9c87e8574
topic: allow unicode symbols in names as long as they are alphanumeric
Anton Shestakov <av6@dwimlabs.net>
parents:
6205
diff
changeset
|
1038 b" '_' and '.' characters") |
2ec9c87e8574
topic: allow unicode symbols in names as long as they are alphanumeric
Anton Shestakov <av6@dwimlabs.net>
parents:
6205
diff
changeset
|
1039 try: |
2ec9c87e8574
topic: allow unicode symbols in names as long as they are alphanumeric
Anton Shestakov <av6@dwimlabs.net>
parents:
6205
diff
changeset
|
1040 utopic = encoding.unifromlocal(topic) |
2ec9c87e8574
topic: allow unicode symbols in names as long as they are alphanumeric
Anton Shestakov <av6@dwimlabs.net>
parents:
6205
diff
changeset
|
1041 except error.Abort: |
2ec9c87e8574
topic: allow unicode symbols in names as long as they are alphanumeric
Anton Shestakov <av6@dwimlabs.net>
parents:
6205
diff
changeset
|
1042 # Maybe we should allow these topic names as well, as long as they |
2ec9c87e8574
topic: allow unicode symbols in names as long as they are alphanumeric
Anton Shestakov <av6@dwimlabs.net>
parents:
6205
diff
changeset
|
1043 # don't break any other rules |
2ec9c87e8574
topic: allow unicode symbols in names as long as they are alphanumeric
Anton Shestakov <av6@dwimlabs.net>
parents:
6205
diff
changeset
|
1044 utopic = '' |
2ec9c87e8574
topic: allow unicode symbols in names as long as they are alphanumeric
Anton Shestakov <av6@dwimlabs.net>
parents:
6205
diff
changeset
|
1045 rmatch = re.match(r'[-_.\w]+', utopic, re.UNICODE) |
2ec9c87e8574
topic: allow unicode symbols in names as long as they are alphanumeric
Anton Shestakov <av6@dwimlabs.net>
parents:
6205
diff
changeset
|
1046 if not utopic or not rmatch or rmatch.group(0) != utopic: |
6319
8c664ed9c103
topic: use compat.InputError for invalid topic names
Anton Shestakov <av6@dwimlabs.net>
parents:
6318
diff
changeset
|
1047 raise compat.InputError(_(b"invalid topic name: '%s'") % topic, hint=helptxt) |
3652
81985b9d3e74
topic-ext: restrict the format of topic names
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3614
diff
changeset
|
1048 |
1895
c8e4c6e03957
stack: add a very first version of stack display with 'hg topic --list'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1894
diff
changeset
|
1049 if list: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1050 ui.pager(b'topics') |
1990
71410fa2c253
stack: extra argument validation logic outside of showstack
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1989
diff
changeset
|
1051 if not topic: |
71410fa2c253
stack: extra argument validation logic outside of showstack
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1989
diff
changeset
|
1052 topic = repo.currenttopic |
71410fa2c253
stack: extra argument validation logic outside of showstack
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1989
diff
changeset
|
1053 if not topic: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1054 raise error.Abort(_(b'no active topic to list')) |
4752
8a73a8df63b6
py3: convert opts keys to bytes before passing to core APIs
Martin von Zweigbergk <martinvonz@google.com>
parents:
4748
diff
changeset
|
1055 return stack.showstack(ui, repo, topic=topic, |
8a73a8df63b6
py3: convert opts keys to bytes before passing to core APIs
Martin von Zweigbergk <martinvonz@google.com>
parents:
4748
diff
changeset
|
1056 opts=pycompat.byteskwargs(opts)) |
1895
c8e4c6e03957
stack: add a very first version of stack display with 'hg topic --list'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1894
diff
changeset
|
1057 |
2898
3dfc88c06378
topic: support --rev argument and properly process then as user input
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2897
diff
changeset
|
1058 if touchedrevs: |
1851
67d53e8e0c1a
topic: only require obsolete support for --change
Matt Mackall <mpm@selenic.com>
parents:
1850
diff
changeset
|
1059 if not obsolete.isenabled(repo, obsolete.createmarkersopt): |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1060 raise error.Abort(_(b'must have obsolete enabled to change topics')) |
2645
2e3f63f4a519
topic: further simplify the clear logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2644
diff
changeset
|
1061 if clear: |
2e3f63f4a519
topic: further simplify the clear logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2644
diff
changeset
|
1062 topic = None |
2869
b629874ccaac
topics: allow use a --current when setting a topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2868
diff
changeset
|
1063 elif opts.get('current'): |
b629874ccaac
topics: allow use a --current when setting a topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2868
diff
changeset
|
1064 topic = repo.currenttopic |
2645
2e3f63f4a519
topic: further simplify the clear logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2644
diff
changeset
|
1065 elif not topic: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1066 raise error.Abort(b'changing topic requires a topic name or --clear') |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1067 if repo.revs(b'%ld and public()', touchedrevs): |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1068 raise error.Abort(b"can't change topic of a public change") |
3124
6ef274e01f64
flake8: rename some ambiguous identifier
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3097
diff
changeset
|
1069 wl = lock = txn = None |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1070 try: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1071 wl = repo.wlock() |
3124
6ef274e01f64
flake8: rename some ambiguous identifier
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3097
diff
changeset
|
1072 lock = repo.lock() |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1073 txn = repo.transaction(b'rewrite-topics') |
2898
3dfc88c06378
topic: support --rev argument and properly process then as user input
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2897
diff
changeset
|
1074 rewrote = _changetopics(ui, repo, touchedrevs, topic) |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1075 txn.close() |
4268
d5a2cc19903f
topics: improve the message around topic changing
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
4253
diff
changeset
|
1076 if topic is None: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1077 ui.status(b'cleared topic on %d changesets\n' % rewrote) |
4268
d5a2cc19903f
topics: improve the message around topic changing
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
4253
diff
changeset
|
1078 else: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1079 ui.status(b'changed topic on %d changesets to "%s"\n' % (rewrote, |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1080 topic)) |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1081 finally: |
3124
6ef274e01f64
flake8: rename some ambiguous identifier
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3097
diff
changeset
|
1082 lockmod.release(txn, lock, wl) |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1083 repo.invalidate() |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1084 return |
2664
ed6fb5f20b24
topics: return early so that other if conditions don't get execute (issue5600)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2662
diff
changeset
|
1085 |
2985
f63c97c01f92
topics/ui: signal when the topics command creates a new (empty) topic
Aurélien Campéas
parents:
2984
diff
changeset
|
1086 ct = repo.currenttopic |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1087 if clear: |
4044
c0fbe70f2e48
topic: check that repo.currenttopic is set before using it as an argument
Anton Shestakov <av6@dwimlabs.net>
parents:
4038
diff
changeset
|
1088 if ct: |
4652
b72cd597a887
stack: check if stack is empty more pythonically
Anton Shestakov <av6@dwimlabs.net>
parents:
4647
diff
changeset
|
1089 st = stack.stack(repo, topic=ct) |
b72cd597a887
stack: check if stack is empty more pythonically
Anton Shestakov <av6@dwimlabs.net>
parents:
4647
diff
changeset
|
1090 if not st: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1091 ui.status(_(b'clearing empty topic "%s"\n') % ct) |
2662
9c0b293c2785
topics: move the logic to change or clear current topic into a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2657
diff
changeset
|
1092 return _changecurrenttopic(repo, None) |
9c0b293c2785
topics: move the logic to change or clear current topic into a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2657
diff
changeset
|
1093 |
1860
b7b9e5028c2a
topics: consistently use empty string instead of None
Matt Mackall <mpm@selenic.com>
parents:
1859
diff
changeset
|
1094 if topic: |
2985
f63c97c01f92
topics/ui: signal when the topics command creates a new (empty) topic
Aurélien Campéas
parents:
2984
diff
changeset
|
1095 if not ct: |
5924
16f3fb304285
topic: add a 'topic.active' label to messages with active topic
Anton Shestakov <av6@dwimlabs.net>
parents:
5922
diff
changeset
|
1096 ui.status(_(b'marked working directory as topic: %s\n') |
16f3fb304285
topic: add a 'topic.active' label to messages with active topic
Anton Shestakov <av6@dwimlabs.net>
parents:
5922
diff
changeset
|
1097 % ui.label(topic, b'topic.active')) |
2662
9c0b293c2785
topics: move the logic to change or clear current topic into a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2657
diff
changeset
|
1098 return _changecurrenttopic(repo, topic) |
9c0b293c2785
topics: move the logic to change or clear current topic into a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2657
diff
changeset
|
1099 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1100 ui.pager(b'topics') |
2867
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1101 # `hg topic --current` |
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1102 ret = 0 |
2985
f63c97c01f92
topics/ui: signal when the topics command creates a new (empty) topic
Aurélien Campéas
parents:
2984
diff
changeset
|
1103 if current and not ct: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1104 ui.write_err(_(b'no active topic\n')) |
2867
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1105 ret = 1 |
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1106 elif current: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1107 fm = ui.formatter(b'topic', pycompat.byteskwargs(opts)) |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1108 namemask = b'%s\n' |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1109 label = b'topic.active' |
2867
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1110 fm.startitem() |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1111 fm.write(b'topic', namemask, ct, label=label) |
2867
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1112 fm.end() |
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1113 else: |
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1114 _listtopics(ui, repo, opts) |
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
1115 return ret |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1116 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1117 @command(b'stack', [ |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1118 (b'c', b'children', None, |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1119 _(b'display data about children outside of the stack')) |
2805
a789b9d5b60c
topic: make command names valid as expected, even if ui.strict=true
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2795
diff
changeset
|
1120 ] + commands.formatteropts, |
4894
f9743b13de6d
help: categorizing evolve and topic commands
Rodrigo Damazio <rdamazio@google.com>
parents:
4892
diff
changeset
|
1121 _(b'hg stack [TOPIC]'), |
6305
77ce98287dc2
topic: drop helpcategory 4.7 compat, use helpcategory keyword directly
Anton Shestakov <av6@dwimlabs.net>
parents:
6304
diff
changeset
|
1122 helpcategory=registrar.command.CATEGORY_CHANGE_NAVIGATION, |
77ce98287dc2
topic: drop helpcategory 4.7 compat, use helpcategory keyword directly
Anton Shestakov <av6@dwimlabs.net>
parents:
6304
diff
changeset
|
1123 ) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1124 def cmdstack(ui, repo, topic=b'', **opts): |
2011
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
1125 """list all changesets in a topic and other information |
1973
e97458bf53be
stack: introduce and explicite command to display the stack
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1972
diff
changeset
|
1126 |
2750
bd3824d1b795
stack: show short node of changesets in `hg stack -v`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2744
diff
changeset
|
1127 List the current topic by default. |
bd3824d1b795
stack: show short node of changesets in `hg stack -v`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2744
diff
changeset
|
1128 |
bd3824d1b795
stack: show short node of changesets in `hg stack -v`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2744
diff
changeset
|
1129 The --verbose version shows short nodes for the commits also. |
bd3824d1b795
stack: show short node of changesets in `hg stack -v`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2744
diff
changeset
|
1130 """ |
1990
71410fa2c253
stack: extra argument validation logic outside of showstack
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1989
diff
changeset
|
1131 if not topic: |
2669
b933a8068c17
topic: add some initial support for using stack on named branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2668
diff
changeset
|
1132 topic = None |
b933a8068c17
topic: add some initial support for using stack on named branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2668
diff
changeset
|
1133 branch = None |
b933a8068c17
topic: add some initial support for using stack on named branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2668
diff
changeset
|
1134 if topic is None and repo.currenttopic: |
1990
71410fa2c253
stack: extra argument validation logic outside of showstack
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1989
diff
changeset
|
1135 topic = repo.currenttopic |
2669
b933a8068c17
topic: add some initial support for using stack on named branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2668
diff
changeset
|
1136 if topic is None: |
b933a8068c17
topic: add some initial support for using stack on named branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2668
diff
changeset
|
1137 branch = repo[None].branch() |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1138 ui.pager(b'stack') |
4752
8a73a8df63b6
py3: convert opts keys to bytes before passing to core APIs
Martin von Zweigbergk <martinvonz@google.com>
parents:
4748
diff
changeset
|
1139 return stack.showstack(ui, repo, branch=branch, topic=topic, |
8a73a8df63b6
py3: convert opts keys to bytes before passing to core APIs
Martin von Zweigbergk <martinvonz@google.com>
parents:
4748
diff
changeset
|
1140 opts=pycompat.byteskwargs(opts)) |
1973
e97458bf53be
stack: introduce and explicite command to display the stack
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1972
diff
changeset
|
1141 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1142 @command(b'debugcb|debugconvertbookmark', [ |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1143 (b'b', b'bookmark', b'', _(b'bookmark to convert to topic')), |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1144 (b'', b'all', None, _(b'convert all bookmarks to topics')), |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1145 ], |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1146 _(b'[-b BOOKMARK] [--all]')) |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1147 def debugconvertbookmark(ui, repo, **opts): |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1148 """Converts a bookmark to a topic with the same name. |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1149 """ |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1150 |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1151 bookmark = opts.get('bookmark') |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1152 convertall = opts.get('all') |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1153 |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1154 if convertall and bookmark: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1155 raise error.Abort(_(b"cannot use '--all' and '-b' together")) |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1156 if not (convertall or bookmark): |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1157 raise error.Abort(_(b"you must specify either '--all' or '-b'")) |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1158 |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1159 bmstore = repo._bookmarks |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1160 |
2900
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1161 nodetobook = {} |
4742
db3e7f6b5ceb
py3: switch from iteritems() to items() in the topics extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
4719
diff
changeset
|
1162 for book, revnode in bmstore.items(): |
2900
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1163 if nodetobook.get(revnode): |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1164 nodetobook[revnode].append(book) |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1165 else: |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1166 nodetobook[revnode] = [book] |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1167 |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1168 # a list of nodes which we have skipped so that we don't print the skip |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1169 # warning repeatedly |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1170 skipped = [] |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1171 |
2908
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1172 actions = {} |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1173 |
2908
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1174 lock = wlock = tr = None |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1175 try: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1176 wlock = repo.wlock() |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1177 lock = repo.lock() |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1178 if bookmark: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1179 try: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1180 node = bmstore[bookmark] |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1181 except KeyError: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1182 raise error.Abort(_(b"no such bookmark exists: '%s'") % bookmark) |
2900
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1183 |
2908
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1184 revnum = repo[node].rev() |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1185 if len(nodetobook[node]) > 1: |
5922
8bffab1e7c4f
topic: make two almost identical messages actually identical
Anton Shestakov <av6@dwimlabs.net>
parents:
5920
diff
changeset
|
1186 ui.status(_(b"skipping revision %d as it has multiple " |
8bffab1e7c4f
topic: make two almost identical messages actually identical
Anton Shestakov <av6@dwimlabs.net>
parents:
5920
diff
changeset
|
1187 b"bookmarks on it\n") % revnum) |
2908
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1188 return |
2907
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1189 targetrevs = _findconvertbmarktopic(repo, bookmark) |
2908
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1190 if targetrevs: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1191 actions[(bookmark, revnum)] = targetrevs |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1192 |
2908
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1193 elif convertall: |
4742
db3e7f6b5ceb
py3: switch from iteritems() to items() in the topics extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
4719
diff
changeset
|
1194 for bmark, revnode in sorted(bmstore.items()): |
2900
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1195 revnum = repo[revnode].rev() |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1196 if revnum in skipped: |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1197 continue |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1198 if len(nodetobook[revnode]) > 1: |
5922
8bffab1e7c4f
topic: make two almost identical messages actually identical
Anton Shestakov <av6@dwimlabs.net>
parents:
5920
diff
changeset
|
1199 ui.status(_(b"skipping revision %d as it has multiple " |
8bffab1e7c4f
topic: make two almost identical messages actually identical
Anton Shestakov <av6@dwimlabs.net>
parents:
5920
diff
changeset
|
1200 b"bookmarks on it\n") % revnum) |
2900
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1201 skipped.append(revnum) |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
1202 continue |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1203 if bmark == b'@': |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1204 continue |
2907
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1205 targetrevs = _findconvertbmarktopic(repo, bmark) |
2908
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1206 if targetrevs: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1207 actions[(bmark, revnum)] = targetrevs |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1208 |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1209 if actions: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1210 try: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1211 tr = repo.transaction(b'debugconvertbookmark') |
4742
db3e7f6b5ceb
py3: switch from iteritems() to items() in the topics extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
4719
diff
changeset
|
1212 for ((bmark, revnum), targetrevs) in sorted(actions.items()): |
2908
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1213 _applyconvertbmarktopic(ui, repo, targetrevs, revnum, bmark, tr) |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1214 tr.close() |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1215 finally: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1216 tr.release() |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1217 finally: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1218 lockmod.release(lock, wlock) |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1219 |
2906
92566275be77
convertbookmark: extract the revset into a module level constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2905
diff
changeset
|
1220 # inspired from mercurial.repair.stripbmrevset |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1221 CONVERTBOOKREVSET = b""" |
2906
92566275be77
convertbookmark: extract the revset into a module level constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2905
diff
changeset
|
1222 not public() and ( |
92566275be77
convertbookmark: extract the revset into a module level constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2905
diff
changeset
|
1223 ancestors(bookmark(%s)) |
2909
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1224 and not ancestors( |
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1225 ( |
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1226 (head() and not bookmark(%s)) |
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1227 or (bookmark() - bookmark(%s)) |
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1228 ) - ( |
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1229 descendants(bookmark(%s)) |
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1230 - bookmark(%s) |
2906
92566275be77
convertbookmark: extract the revset into a module level constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2905
diff
changeset
|
1231 ) |
92566275be77
convertbookmark: extract the revset into a module level constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2905
diff
changeset
|
1232 ) |
92566275be77
convertbookmark: extract the revset into a module level constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2905
diff
changeset
|
1233 ) |
92566275be77
convertbookmark: extract the revset into a module level constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2905
diff
changeset
|
1234 """ |
92566275be77
convertbookmark: extract the revset into a module level constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2905
diff
changeset
|
1235 |
2907
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1236 def _findconvertbmarktopic(repo, bmark): |
3225
28fb347a5bf8
typos: fix typos in several locations
Kyle Lippincott <spectral@google.com>
parents:
3195
diff
changeset
|
1237 """find revisions unambiguously defined by a bookmark |
2907
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1238 |
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1239 find all changesets under the bookmark and under that bookmark only. |
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1240 """ |
2909
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1241 return repo.revs(CONVERTBOOKREVSET, bmark, bmark, bmark, bmark, bmark) |
2907
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1242 |
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1243 def _applyconvertbmarktopic(ui, repo, revs, old, bmark, tr): |
3225
28fb347a5bf8
typos: fix typos in several locations
Kyle Lippincott <spectral@google.com>
parents:
3195
diff
changeset
|
1244 """apply bookmark conversion to topic |
2907
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1245 |
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1246 Sets a topic as same as bname to all the changesets under the bookmark |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1247 and delete the bookmark, if topic is set to any changeset |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1248 |
2907
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1249 old is the revision on which bookmark bmark is and tr is transaction object. |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1250 """ |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1251 |
2907
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1252 rewrote = _changetopics(ui, repo, revs, bmark) |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1253 # We didn't changed topic to any changesets because the revset |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1254 # returned an empty set of revisions, so let's skip deleting the |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1255 # bookmark corresponding to which we didn't put a topic on any |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1256 # changeset |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1257 if rewrote == 0: |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1258 return |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1259 ui.status(_(b'changed topic to "%s" on %d revisions\n') % (bmark, |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1260 rewrote)) |
5721
242a0530823a
cleanup: ensure log and output messages have a '\n' terminator
Matt Harbison <matt_harbison@yahoo.com>
parents:
5689
diff
changeset
|
1261 ui.debug(b'removing bookmark "%s" from "%d"\n' % (bmark, old)) |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1262 bookmarks.delete(repo, tr, [bmark]) |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1263 |
2662
9c0b293c2785
topics: move the logic to change or clear current topic into a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2657
diff
changeset
|
1264 def _changecurrenttopic(repo, newtopic): |
9c0b293c2785
topics: move the logic to change or clear current topic into a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2657
diff
changeset
|
1265 """changes the current topic.""" |
9c0b293c2785
topics: move the logic to change or clear current topic into a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2657
diff
changeset
|
1266 |
9c0b293c2785
topics: move the logic to change or clear current topic into a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2657
diff
changeset
|
1267 if newtopic: |
9c0b293c2785
topics: move the logic to change or clear current topic into a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2657
diff
changeset
|
1268 with repo.wlock(): |
6204
364ef033da03
topic: shorter code to write current topic
Anton Shestakov <av6@dwimlabs.net>
parents:
6155
diff
changeset
|
1269 repo.vfs.write(b'topic', newtopic) |
2662
9c0b293c2785
topics: move the logic to change or clear current topic into a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2657
diff
changeset
|
1270 else: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1271 if repo.vfs.exists(b'topic'): |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1272 repo.vfs.unlink(b'topic') |
2662
9c0b293c2785
topics: move the logic to change or clear current topic into a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2657
diff
changeset
|
1273 |
2898
3dfc88c06378
topic: support --rev argument and properly process then as user input
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2897
diff
changeset
|
1274 def _changetopics(ui, repo, revs, newtopic): |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1275 """ Changes topic to newtopic of all the revisions in the revset and return |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1276 the count of revisions whose topic has been changed. |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1277 """ |
2642
92e882a82aaf
topics: factor out the logic to change topic in a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2625
diff
changeset
|
1278 rewrote = 0 |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1279 p1 = None |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1280 p2 = None |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1281 successors = {} |
2898
3dfc88c06378
topic: support --rev argument and properly process then as user input
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2897
diff
changeset
|
1282 for r in revs: |
3dfc88c06378
topic: support --rev argument and properly process then as user input
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2897
diff
changeset
|
1283 c = repo[r] |
3dfc88c06378
topic: support --rev argument and properly process then as user input
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2897
diff
changeset
|
1284 |
5919
1a8e86053adb
topic: don't lose any file changes when changing topic of a merge commit
Anton Shestakov <av6@dwimlabs.net>
parents:
5907
diff
changeset
|
1285 if len(c.parents()) > 1: |
1a8e86053adb
topic: don't lose any file changes when changing topic of a merge commit
Anton Shestakov <av6@dwimlabs.net>
parents:
5907
diff
changeset
|
1286 # ctx.files() isn't reliable for merges, so fall back to the |
1a8e86053adb
topic: don't lose any file changes when changing topic of a merge commit
Anton Shestakov <av6@dwimlabs.net>
parents:
5907
diff
changeset
|
1287 # slower repo.status() method |
1a8e86053adb
topic: don't lose any file changes when changing topic of a merge commit
Anton Shestakov <av6@dwimlabs.net>
parents:
5907
diff
changeset
|
1288 st = c.p1().status(c) |
1a8e86053adb
topic: don't lose any file changes when changing topic of a merge commit
Anton Shestakov <av6@dwimlabs.net>
parents:
5907
diff
changeset
|
1289 files = set(st.modified) | set(st.added) | set(st.removed) |
1a8e86053adb
topic: don't lose any file changes when changing topic of a merge commit
Anton Shestakov <av6@dwimlabs.net>
parents:
5907
diff
changeset
|
1290 else: |
1a8e86053adb
topic: don't lose any file changes when changing topic of a merge commit
Anton Shestakov <av6@dwimlabs.net>
parents:
5907
diff
changeset
|
1291 files = set(c.files()) |
1a8e86053adb
topic: don't lose any file changes when changing topic of a merge commit
Anton Shestakov <av6@dwimlabs.net>
parents:
5907
diff
changeset
|
1292 |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1293 def filectxfn(repo, ctx, path): |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1294 try: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1295 return c[path] |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1296 except error.ManifestLookupError: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1297 return None |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1298 fixedextra = dict(c.extra()) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1299 ui.debug(b'old node id is %s\n' % node.hex(c.node())) |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1300 ui.debug(b'origextra: %r\n' % fixedextra) |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1301 oldtopic = fixedextra.get(constants.extrakey, None) |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1302 if oldtopic == newtopic: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1303 continue |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1304 if newtopic is None: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1305 del fixedextra[constants.extrakey] |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1306 else: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1307 fixedextra[constants.extrakey] = newtopic |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1308 fixedextra[constants.changekey] = c.hex() |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1309 ui.debug(b'changing topic of %s from %s to %s\n' % ( |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1310 c, oldtopic or b'<none>', newtopic or b'<none>')) |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1311 ui.debug(b'fixedextra: %r\n' % fixedextra) |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1312 # While changing topic of set of linear commits, make sure that |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1313 # we base our commits on new parent rather than old parent which |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1314 # was obsoleted while changing the topic |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1315 p1 = c.p1().node() |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1316 p2 = c.p2().node() |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1317 if p1 in successors: |
3038
103244e34a9c
topics: use scmutil.cleanupnodes to create markers while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3030
diff
changeset
|
1318 p1 = successors[p1][0] |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1319 if p2 in successors: |
3038
103244e34a9c
topics: use scmutil.cleanupnodes to create markers while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3030
diff
changeset
|
1320 p2 = successors[p2][0] |
3040
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1321 mc = context.memctx(repo, |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1322 (p1, p2), |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1323 c.description(), |
5919
1a8e86053adb
topic: don't lose any file changes when changing topic of a merge commit
Anton Shestakov <av6@dwimlabs.net>
parents:
5907
diff
changeset
|
1324 files, |
3040
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1325 filectxfn, |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1326 user=c.user(), |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1327 date=c.date(), |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1328 extra=fixedextra) |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1329 |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1330 # phase handling |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1331 commitphase = c.phase() |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1332 overrides = {(b'phases', b'new-commit'): commitphase} |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1333 with repo.ui.configoverride(overrides, b'changetopic'): |
3040
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1334 newnode = repo.commitctx(mc) |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1335 |
3038
103244e34a9c
topics: use scmutil.cleanupnodes to create markers while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3030
diff
changeset
|
1336 successors[c.node()] = (newnode,) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1337 ui.debug(b'new node id is %s\n' % node.hex(newnode)) |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1338 rewrote += 1 |
3038
103244e34a9c
topics: use scmutil.cleanupnodes to create markers while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3030
diff
changeset
|
1339 |
103244e34a9c
topics: use scmutil.cleanupnodes to create markers while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3030
diff
changeset
|
1340 # create obsmarkers and move bookmarks |
3094
e11e018e8338
compat: add an abstraction for 'scmutil.cleanupnodes'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3082
diff
changeset
|
1341 # XXX we should be creating marker as we go instead of only at the end, |
e11e018e8338
compat: add an abstraction for 'scmutil.cleanupnodes'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3082
diff
changeset
|
1342 # this makes the operations more modulars |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1343 scmutil.cleanupnodes(repo, successors, b'changetopics') |
3040
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1344 |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1345 # move the working copy too |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1346 wctx = repo[None] |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1347 # in-progress merge is a bit too complex for now. |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1348 if len(wctx.parents()) == 1: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1349 newid = successors.get(wctx.p1().node()) |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1350 if newid is not None: |
3038
103244e34a9c
topics: use scmutil.cleanupnodes to create markers while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3030
diff
changeset
|
1351 hg.update(repo, newid[0], quietempty=True) |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1352 return rewrote |
2642
92e882a82aaf
topics: factor out the logic to change topic in a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2625
diff
changeset
|
1353 |
1975
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1354 def _listtopics(ui, repo, opts): |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1355 fm = ui.formatter(b'topics', pycompat.byteskwargs(opts)) |
1975
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1356 activetopic = repo.currenttopic |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1357 namemask = b'%s' |
3060
f43a310c4338
topics: show changesetcount, troubledcount and headscount by default
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3059
diff
changeset
|
1358 if repo.topics: |
1987
d427fd97c9d5
topic: properly justify the verbose data when listing topic
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1985
diff
changeset
|
1359 maxwidth = max(len(t) for t in repo.topics) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1360 namemask = b'%%-%is' % maxwidth |
4303
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1361 if opts.get('age'): |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1362 # here we sort by age and topic name |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1363 topicsdata = sorted(_getlasttouched(repo, repo.topics)) |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1364 else: |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1365 # here we sort by topic name only |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1366 topicsdata = ( |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1367 (None, topic, None, None) |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1368 for topic in sorted(repo.topics) |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1369 ) |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1370 for age, topic, date, user in topicsdata: |
1975
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1371 fm.startitem() |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1372 marker = b' ' |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1373 label = b'topic' |
1975
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1374 active = (topic == activetopic) |
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1375 if active: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1376 marker = b'*' |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1377 label = b'topic.active' |
1975
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1378 if not ui.quiet: |
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1379 # registering the active data is made explicitly later |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1380 fm.plain(b' %s ' % marker, label=label) |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1381 fm.write(b'topic', namemask, topic, label=label) |
1975
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1382 fm.data(active=active) |
3060
f43a310c4338
topics: show changesetcount, troubledcount and headscount by default
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3059
diff
changeset
|
1383 |
3372
4138771105bb
topics: list only topic names in quiet mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3371
diff
changeset
|
1384 if ui.quiet: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1385 fm.plain(b'\n') |
3372
4138771105bb
topics: list only topic names in quiet mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3371
diff
changeset
|
1386 continue |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1387 fm.plain(b' (') |
4303
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1388 if date: |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1389 if age == -1: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1390 timestr = b'empty and active' |
4303
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1391 else: |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1392 timestr = templatefilters.age(date) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1393 fm.write(b'lasttouched', b'%s', timestr, label=b'topic.list.time') |
4303
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1394 if user: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1395 fm.write(b'usertouched', b' by %s', user, label=b'topic.list.user') |
4303
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1396 if date: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1397 fm.plain(b', ') |
3060
f43a310c4338
topics: show changesetcount, troubledcount and headscount by default
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3059
diff
changeset
|
1398 data = stack.stack(repo, topic=topic) |
1977
137f8b04901e
topic: list the number of changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1976
diff
changeset
|
1399 if ui.verbose: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1400 fm.write(b'branches+', b'on branch: %s', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1401 b'+'.join(data.branches), # XXX use list directly after 4.0 is released |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1402 label=b'topic.list.branches') |
3059
02b220984b01
topics: use stack.stack() instead of stack.stackdata()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3057
diff
changeset
|
1403 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1404 fm.plain(b', ') |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1405 fm.write(b'changesetcount', b'%d changesets', data.changesetcount, |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1406 label=b'topic.list.changesetcount') |
3060
f43a310c4338
topics: show changesetcount, troubledcount and headscount by default
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3059
diff
changeset
|
1407 |
4581
48521a49a07e
stack: rename troubledcount to unstablecount
Anton Shestakov <av6@dwimlabs.net>
parents:
4574
diff
changeset
|
1408 if data.unstablecount: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1409 fm.plain(b', ') |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1410 fm.write(b'unstablecount', b'%d unstable', |
4581
48521a49a07e
stack: rename troubledcount to unstablecount
Anton Shestakov <av6@dwimlabs.net>
parents:
4574
diff
changeset
|
1411 data.unstablecount, |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1412 label=b'topic.list.unstablecount') |
3059
02b220984b01
topics: use stack.stack() instead of stack.stackdata()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3057
diff
changeset
|
1413 |
3060
f43a310c4338
topics: show changesetcount, troubledcount and headscount by default
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3059
diff
changeset
|
1414 headcount = len(data.heads) |
f43a310c4338
topics: show changesetcount, troubledcount and headscount by default
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3059
diff
changeset
|
1415 if 1 < headcount: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1416 fm.plain(b', ') |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1417 fm.write(b'headcount', b'%d heads', |
3060
f43a310c4338
topics: show changesetcount, troubledcount and headscount by default
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3059
diff
changeset
|
1418 headcount, |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1419 label=b'topic.list.headcount.multiple') |
3059
02b220984b01
topics: use stack.stack() instead of stack.stackdata()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3057
diff
changeset
|
1420 |
1977
137f8b04901e
topic: list the number of changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1976
diff
changeset
|
1421 if ui.verbose: |
137f8b04901e
topic: list the number of changesets when --verbose is used
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1976
diff
changeset
|
1422 # XXX we should include the data even when not verbose |
3059
02b220984b01
topics: use stack.stack() instead of stack.stackdata()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3057
diff
changeset
|
1423 |
02b220984b01
topics: use stack.stack() instead of stack.stackdata()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3057
diff
changeset
|
1424 behindcount = data.behindcount |
02b220984b01
topics: use stack.stack() instead of stack.stackdata()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3057
diff
changeset
|
1425 if 0 < behindcount: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1426 fm.plain(b', ') |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1427 fm.write(b'behindcount', b'%d behind', |
3059
02b220984b01
topics: use stack.stack() instead of stack.stackdata()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3057
diff
changeset
|
1428 behindcount, |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1429 label=b'topic.list.behindcount') |
3059
02b220984b01
topics: use stack.stack() instead of stack.stackdata()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3057
diff
changeset
|
1430 elif -1 == behindcount: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1431 fm.plain(b', ') |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1432 fm.write(b'behinderror', b'%s', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1433 _(b'ambiguous destination: %s') % data.behinderror, |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1434 label=b'topic.list.behinderror') |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1435 fm.plain(b')\n') |
1975
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1436 fm.end() |
1974
20fb4195bfc4
topic: extract the code listing all topics
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1973
diff
changeset
|
1437 |
2731
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1438 def _getlasttouched(repo, topics): |
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1439 """ |
4302
8e9940f1ae56
topic: simplify _showlasttouched and _getlasttouched (and its data structure)
Anton Shestakov <av6@dwimlabs.net>
parents:
4285
diff
changeset
|
1440 Calculates the last time a topic was used. Returns a generator of 4-tuples: |
8e9940f1ae56
topic: simplify _showlasttouched and _getlasttouched (and its data structure)
Anton Shestakov <av6@dwimlabs.net>
parents:
4285
diff
changeset
|
1441 (age in seconds, topic name, date, and user who last touched the topic). |
2731
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1442 """ |
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1443 curtime = time.time() |
4302
8e9940f1ae56
topic: simplify _showlasttouched and _getlasttouched (and its data structure)
Anton Shestakov <av6@dwimlabs.net>
parents:
4285
diff
changeset
|
1444 for topic in topics: |
8e9940f1ae56
topic: simplify _showlasttouched and _getlasttouched (and its data structure)
Anton Shestakov <av6@dwimlabs.net>
parents:
4285
diff
changeset
|
1445 age = -1 |
2993
725b660d9886
topics: show the user who last touched the topic in --age
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2992
diff
changeset
|
1446 user = None |
2731
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1447 maxtime = (0, 0) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1448 trevs = repo.revs(b"topic(%s)", topic) |
2731
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1449 # Need to check for the time of all changesets in the topic, whether |
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1450 # they are obsolete of non-heads |
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1451 # XXX: can we just rely on the max rev number for this |
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1452 for revs in trevs: |
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1453 rt = repo[revs].date() |
2993
725b660d9886
topics: show the user who last touched the topic in --age
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2992
diff
changeset
|
1454 if rt[0] >= maxtime[0]: |
2731
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1455 # Can store the rev to gather more info |
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1456 # latesthead = revs |
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1457 maxtime = rt |
2993
725b660d9886
topics: show the user who last touched the topic in --age
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2992
diff
changeset
|
1458 user = repo[revs].user() |
2731
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1459 # looking on the markers also to get more information and accurate |
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1460 # last touch time. |
4942
acc7e27fa5c6
topic: drop compat.getmarkers() and use obsutil.getmarkers() directly
Anton Shestakov <av6@dwimlabs.net>
parents:
4921
diff
changeset
|
1461 obsmarkers = obsutil.getmarkers(repo, [repo[revs].node()]) |
2731
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1462 for marker in obsmarkers: |
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1463 rt = marker.date() |
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1464 if rt[0] > maxtime[0]: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1465 user = marker.metadata().get(b'user', user) |
2731
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1466 maxtime = rt |
2993
725b660d9886
topics: show the user who last touched the topic in --age
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2992
diff
changeset
|
1467 |
3371
753e5ebabe7d
topics: take logic to parse username to a separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3297
diff
changeset
|
1468 username = stack.parseusername(user) |
4302
8e9940f1ae56
topic: simplify _showlasttouched and _getlasttouched (and its data structure)
Anton Shestakov <av6@dwimlabs.net>
parents:
4285
diff
changeset
|
1469 if trevs: |
8e9940f1ae56
topic: simplify _showlasttouched and _getlasttouched (and its data structure)
Anton Shestakov <av6@dwimlabs.net>
parents:
4285
diff
changeset
|
1470 age = curtime - maxtime[0] |
2993
725b660d9886
topics: show the user who last touched the topic in --age
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2992
diff
changeset
|
1471 |
4302
8e9940f1ae56
topic: simplify _showlasttouched and _getlasttouched (and its data structure)
Anton Shestakov <av6@dwimlabs.net>
parents:
4285
diff
changeset
|
1472 yield (age, topic, maxtime, username) |
2731
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1473 |
1848
9a81657deec2
summary: add topic summary hook
Matt Mackall <mpm@selenic.com>
parents:
1847
diff
changeset
|
1474 def summaryhook(ui, repo): |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1475 t = getattr(repo, 'currenttopic', b'') |
1848
9a81657deec2
summary: add topic summary hook
Matt Mackall <mpm@selenic.com>
parents:
1847
diff
changeset
|
1476 if not t: |
9a81657deec2
summary: add topic summary hook
Matt Mackall <mpm@selenic.com>
parents:
1847
diff
changeset
|
1477 return |
9a81657deec2
summary: add topic summary hook
Matt Mackall <mpm@selenic.com>
parents:
1847
diff
changeset
|
1478 # i18n: column positioning for "hg summary" |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1479 ui.write(_(b"topic: %s\n") % ui.label(t, b'topic.active')) |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1480 |
3022
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
1481 _validmode = [ |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1482 b'ignore', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1483 b'warning', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1484 b'enforce', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1485 b'enforce-all', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1486 b'random', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1487 b'random-all', |
3022
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
1488 ] |
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
1489 |
3020
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1490 def _configtopicmode(ui): |
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1491 """ Parse the config to get the topicmode |
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1492 """ |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1493 topicmode = ui.config(b'experimental', b'topic-mode') |
3020
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1494 |
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1495 # Fallback to read enforce-topic |
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1496 if topicmode is None: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1497 enforcetopic = ui.configbool(b'experimental', b'enforce-topic') |
3020
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1498 if enforcetopic: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1499 topicmode = b"enforce" |
3022
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
1500 if topicmode not in _validmode: |
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
1501 topicmode = _validmode[0] |
3020
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1502 |
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1503 return topicmode |
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1504 |
1850 | 1505 def commitwrap(orig, ui, repo, *args, **opts): |
4533
51317ce90bdc
topic: only affect `hg commit` behavior for repo with topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4532
diff
changeset
|
1506 if not hastopicext(repo): |
51317ce90bdc
topic: only affect `hg commit` behavior for repo with topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4532
diff
changeset
|
1507 return orig(ui, repo, *args, **opts) |
1971
ec4924ea8bc6
topic: make sure we have the 'wlock' when setting topic
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1969
diff
changeset
|
1508 with repo.wlock(): |
3020
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1509 topicmode = _configtopicmode(ui) |
3024
89855920fb0f
topicmode: 'enforce' topic mode, no longer warn about untopiced merge
Boris Feld <boris.feld@octobus.net>
parents:
3023
diff
changeset
|
1510 ismergecommit = len(repo[None].parents()) == 2 |
89855920fb0f
topicmode: 'enforce' topic mode, no longer warn about untopiced merge
Boris Feld <boris.feld@octobus.net>
parents:
3023
diff
changeset
|
1511 |
89855920fb0f
topicmode: 'enforce' topic mode, no longer warn about untopiced merge
Boris Feld <boris.feld@octobus.net>
parents:
3023
diff
changeset
|
1512 notopic = not repo.currenttopic |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1513 mayabort = (topicmode == b"enforce" and not ismergecommit) |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1514 maywarn = (topicmode == b"warning" |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1515 or (topicmode == b"enforce" and ismergecommit)) |
3024
89855920fb0f
topicmode: 'enforce' topic mode, no longer warn about untopiced merge
Boris Feld <boris.feld@octobus.net>
parents:
3023
diff
changeset
|
1516 |
3030
581a6b9d2c8c
test: add support for random-all topic mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3028
diff
changeset
|
1517 mayrandom = False |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1518 if topicmode == b"random": |
3030
581a6b9d2c8c
test: add support for random-all topic mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3028
diff
changeset
|
1519 mayrandom = not ismergecommit |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1520 elif topicmode == b"random-all": |
3030
581a6b9d2c8c
test: add support for random-all topic mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3028
diff
changeset
|
1521 mayrandom = True |
581a6b9d2c8c
test: add support for random-all topic mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3028
diff
changeset
|
1522 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1523 if topicmode == b'enforce-all': |
3025
e814c553ef32
topic: add a 'enforce-all' mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3024
diff
changeset
|
1524 ismergecommit = False |
e814c553ef32
topic: add a 'enforce-all' mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3024
diff
changeset
|
1525 mayabort = True |
e814c553ef32
topic: add a 'enforce-all' mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3024
diff
changeset
|
1526 maywarn = False |
e814c553ef32
topic: add a 'enforce-all' mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3024
diff
changeset
|
1527 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1528 hint = _(b"see 'hg help -e topic.topic-mode' for details") |
1971
ec4924ea8bc6
topic: make sure we have the 'wlock' when setting topic
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1969
diff
changeset
|
1529 if opts.get('topic'): |
ec4924ea8bc6
topic: make sure we have the 'wlock' when setting topic
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1969
diff
changeset
|
1530 t = opts['topic'] |
6204
364ef033da03
topic: shorter code to write current topic
Anton Shestakov <av6@dwimlabs.net>
parents:
6155
diff
changeset
|
1531 repo.vfs.write(b'topic', t) |
3097
f06c86fd2ffd
topic: do to check to topic while amending
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3096
diff
changeset
|
1532 elif opts.get('amend'): |
f06c86fd2ffd
topic: do to check to topic while amending
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3096
diff
changeset
|
1533 pass |
3024
89855920fb0f
topicmode: 'enforce' topic mode, no longer warn about untopiced merge
Boris Feld <boris.feld@octobus.net>
parents:
3023
diff
changeset
|
1534 elif notopic and mayabort: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1535 msg = _(b"no active topic") |
2733
adfbb984ebbb
topics: check for topic on commit before a user enters message
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2731
diff
changeset
|
1536 raise error.Abort(msg, hint=hint) |
3024
89855920fb0f
topicmode: 'enforce' topic mode, no longer warn about untopiced merge
Boris Feld <boris.feld@octobus.net>
parents:
3023
diff
changeset
|
1537 elif notopic and maywarn: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1538 ui.warn(_(b"warning: new draft commit without topic\n")) |
3027
b220e2f5ebd5
topic: update the topic-mode hint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3026
diff
changeset
|
1539 if not ui.quiet: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1540 ui.warn((b"(%s)\n") % hint) |
3030
581a6b9d2c8c
test: add support for random-all topic mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3028
diff
changeset
|
1541 elif notopic and mayrandom: |
6204
364ef033da03
topic: shorter code to write current topic
Anton Shestakov <av6@dwimlabs.net>
parents:
6155
diff
changeset
|
1542 repo.vfs.write(b'topic', randomname.randomtopicname(ui)) |
1971
ec4924ea8bc6
topic: make sure we have the 'wlock' when setting topic
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1969
diff
changeset
|
1543 return orig(ui, repo, *args, **opts) |
1850 | 1544 |
1852
3084687f7994
commit: add a topic field to the in-editor commit text
Matt Mackall <mpm@selenic.com>
parents:
1851
diff
changeset
|
1545 def committextwrap(orig, repo, ctx, subs, extramsg): |
3084687f7994
commit: add a topic field to the in-editor commit text
Matt Mackall <mpm@selenic.com>
parents:
1851
diff
changeset
|
1546 ret = orig(repo, ctx, subs, extramsg) |
4534
24662f94d126
topic: only wrap committext for repo with topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4533
diff
changeset
|
1547 if hastopicext(repo): |
24662f94d126
topic: only wrap committext for repo with topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4533
diff
changeset
|
1548 t = repo.currenttopic |
24662f94d126
topic: only wrap committext for repo with topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4533
diff
changeset
|
1549 if t: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1550 ret = ret.replace(b"\nHG: branch", |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1551 b"\nHG: topic '%s'\nHG: branch" % t) |
1852
3084687f7994
commit: add a topic field to the in-editor commit text
Matt Mackall <mpm@selenic.com>
parents:
1851
diff
changeset
|
1552 return ret |
3084687f7994
commit: add a topic field to the in-editor commit text
Matt Mackall <mpm@selenic.com>
parents:
1851
diff
changeset
|
1553 |
2983
c0de0010ec30
topic: add a --topic option to "outgoing" command
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
2982
diff
changeset
|
1554 def pushoutgoingwrap(orig, ui, repo, *args, **opts): |
2982
fef934b7ed86
topic: add a --topic option to "push" command
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
2939
diff
changeset
|
1555 if opts.get('topic'): |
5380
60317988f5ae
topic: substitute current topic when `--topic .` is used for outgoing/push
Anton Shestakov <av6@dwimlabs.net>
parents:
5375
diff
changeset
|
1556 topic = opts['topic'] |
60317988f5ae
topic: substitute current topic when `--topic .` is used for outgoing/push
Anton Shestakov <av6@dwimlabs.net>
parents:
5375
diff
changeset
|
1557 if topic == b'.': |
60317988f5ae
topic: substitute current topic when `--topic .` is used for outgoing/push
Anton Shestakov <av6@dwimlabs.net>
parents:
5375
diff
changeset
|
1558 topic = repo.currenttopic |
60317988f5ae
topic: substitute current topic when `--topic .` is used for outgoing/push
Anton Shestakov <av6@dwimlabs.net>
parents:
5375
diff
changeset
|
1559 topic = b'literal:' + topic |
5375
bed4fc158fc9
topic: treat argument to --topic as a literal topic name explicitly
Anton Shestakov <av6@dwimlabs.net>
parents:
5320
diff
changeset
|
1560 topicrevs = repo.revs(b'topic(%s) - obsolete()', topic) |
2982
fef934b7ed86
topic: add a --topic option to "push" command
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
2939
diff
changeset
|
1561 opts.setdefault('rev', []).extend(topicrevs) |
fef934b7ed86
topic: add a --topic option to "push" command
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
2939
diff
changeset
|
1562 return orig(ui, repo, *args, **opts) |
fef934b7ed86
topic: add a --topic option to "push" command
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
2939
diff
changeset
|
1563 |
1877
69077c65919d
topic: handle merge.update function signature change
Augie Fackler <raf@durin42.com>
parents:
1874
diff
changeset
|
1564 def mergeupdatewrap(orig, repo, node, branchmerge, force, *args, **kwargs): |
1966
e67c526c0a25
update: calculate 'partial' as core does
Sean Farley <sean@farley.io>
parents:
1963
diff
changeset
|
1565 matcher = kwargs.get('matcher') |
e67c526c0a25
update: calculate 'partial' as core does
Sean Farley <sean@farley.io>
parents:
1963
diff
changeset
|
1566 partial = not (matcher is None or matcher.always()) |
1853
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1567 wlock = repo.wlock() |
2679
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1568 isrebase = False |
2711
8c938e9af113
topics: wrap the update function to check if either t0 or b0 is passed as rev
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2709
diff
changeset
|
1569 ist0 = False |
1853
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1570 try: |
5601
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1571 mergemode = repo.ui.config(b'experimental', b'topic.linear-merge') |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1572 |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1573 cleanup = lambda: None |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1574 oldrepo = repo |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1575 if mergemode == b'allow-from-bare-branch' and not repo[None].topic(): |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1576 unfi = repo.unfiltered() |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1577 oldrepo = repo |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1578 old = unfi.__class__ |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1579 |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1580 class overridebranch(old): |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1581 def __getitem__(self, rev): |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1582 ret = super(overridebranch, self).__getitem__(rev) |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1583 if rev == node: |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1584 b = ret.branch() |
6311
466702ac6c28
topic: complete "//" format support in experimental.topic.linear-merge code
Anton Shestakov <av6@dwimlabs.net>
parents:
6306
diff
changeset
|
1585 tns = ret.topic_namespace() |
5601
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1586 t = ret.topic() |
6311
466702ac6c28
topic: complete "//" format support in experimental.topic.linear-merge code
Anton Shestakov <av6@dwimlabs.net>
parents:
6306
diff
changeset
|
1587 # topic is required for merging from bare branch |
5601
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1588 if t: |
6311
466702ac6c28
topic: complete "//" format support in experimental.topic.linear-merge code
Anton Shestakov <av6@dwimlabs.net>
parents:
6306
diff
changeset
|
1589 ret.branch = lambda: common.formatfqbn(b, tns, t) |
5601
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1590 return ret |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1591 unfi.__class__ = overridebranch |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1592 if repo.filtername is not None: |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1593 repo = unfi.filtered(repo.filtername) |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1594 |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1595 def cleanup(): |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1596 unfi.__class__ = old |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1597 |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1598 try: |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1599 ret = orig(repo, node, branchmerge, force, *args, **kwargs) |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1600 finally: |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1601 cleanup() |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1602 repo = oldrepo |
3946ee4ee3ae
topic: add a `exp….topic.linear-merge` option to allow some oedipus
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5566
diff
changeset
|
1603 |
4535
8dae14cd076a
topic: only wrap mergeupdate for repo with topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4534
diff
changeset
|
1604 if not hastopicext(repo): |
8dae14cd076a
topic: only wrap mergeupdate for repo with topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4534
diff
changeset
|
1605 return ret |
2679
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1606 # The mergeupdatewrap function makes the destination's topic as the |
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1607 # current topic. This is right for merge but wrong for rebase. We check |
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1608 # if rebase is running and update the currenttopic to topic of new |
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1609 # rebased commit. We have explicitly stored in config if rebase is |
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1610 # running. |
6245
a54db3e55c88
topic: switch to namespace when updating to a commit, similar to topic
Anton Shestakov <av6@dwimlabs.net>
parents:
6243
diff
changeset
|
1611 otns = repo.currenttns |
2984
30f6030dca8f
topics: signal to the end user when a topic has been forgotten
Aurélien Campéas
parents:
2983
diff
changeset
|
1612 ot = repo.currenttopic |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1613 if repo.ui.hasconfig(b'experimental', b'topicrebase'): |
2679
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1614 isrebase = True |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1615 if repo.ui.configbool(b'_internal', b'keep-topic'): |
2711
8c938e9af113
topics: wrap the update function to check if either t0 or b0 is passed as rev
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2709
diff
changeset
|
1616 ist0 = True |
8c938e9af113
topics: wrap the update function to check if either t0 or b0 is passed as rev
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2709
diff
changeset
|
1617 if ((not partial and not branchmerge) or isrebase) and not ist0: |
6487
963471ebe26a
topic: make topic namespace use string "none" as the default/empty value
Anton Shestakov <av6@dwimlabs.net>
parents:
6480
diff
changeset
|
1618 tns = b'none' |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1619 t = b'' |
1853
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1620 pctx = repo[node] |
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1621 if pctx.phase() > phases.public: |
6245
a54db3e55c88
topic: switch to namespace when updating to a commit, similar to topic
Anton Shestakov <av6@dwimlabs.net>
parents:
6243
diff
changeset
|
1622 tns = pctx.topic_namespace() |
1861
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
1623 t = pctx.topic() |
6245
a54db3e55c88
topic: switch to namespace when updating to a commit, similar to topic
Anton Shestakov <av6@dwimlabs.net>
parents:
6243
diff
changeset
|
1624 repo.vfs.write(b'topic-namespace', tns) |
6487
963471ebe26a
topic: make topic namespace use string "none" as the default/empty value
Anton Shestakov <av6@dwimlabs.net>
parents:
6480
diff
changeset
|
1625 if tns != b'none' and tns != otns: |
6245
a54db3e55c88
topic: switch to namespace when updating to a commit, similar to topic
Anton Shestakov <av6@dwimlabs.net>
parents:
6243
diff
changeset
|
1626 repo.ui.status(_(b"switching to topic-namespace %s\n") % tns) |
6204
364ef033da03
topic: shorter code to write current topic
Anton Shestakov <av6@dwimlabs.net>
parents:
6155
diff
changeset
|
1627 repo.vfs.write(b'topic', t) |
1853
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1628 if t and t != ot: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1629 repo.ui.status(_(b"switching to topic %s\n") % t) |
4044
c0fbe70f2e48
topic: check that repo.currenttopic is set before using it as an argument
Anton Shestakov <av6@dwimlabs.net>
parents:
4038
diff
changeset
|
1630 if ot and not t: |
4652
b72cd597a887
stack: check if stack is empty more pythonically
Anton Shestakov <av6@dwimlabs.net>
parents:
4647
diff
changeset
|
1631 st = stack.stack(repo, topic=ot) |
b72cd597a887
stack: check if stack is empty more pythonically
Anton Shestakov <av6@dwimlabs.net>
parents:
4647
diff
changeset
|
1632 if not st: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1633 repo.ui.status(_(b'clearing empty topic "%s"\n') % ot) |
2711
8c938e9af113
topics: wrap the update function to check if either t0 or b0 is passed as rev
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2709
diff
changeset
|
1634 elif ist0: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1635 repo.ui.status(_(b"preserving the current topic '%s'\n") % ot) |
1853
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1636 return ret |
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1637 finally: |
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1638 wlock.release() |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1639 |
2793
fb317d218af0
topic: wrap 'update' in a more flexible way
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
1640 def checkt0(orig, ui, repo, node=None, rev=None, *args, **kwargs): |
2711
8c938e9af113
topics: wrap the update function to check if either t0 or b0 is passed as rev
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2709
diff
changeset
|
1641 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1642 thezeros = set([b't0', b'b0', b's0']) |
5008
848ca807f83a
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5007
diff
changeset
|
1643 configoverride = util.nullcontextmanager() |
848ca807f83a
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5007
diff
changeset
|
1644 if node in thezeros or rev in thezeros: |
848ca807f83a
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5007
diff
changeset
|
1645 configoverride = repo.ui.configoverride({ |
848ca807f83a
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5007
diff
changeset
|
1646 (b'_internal', b'keep-topic'): b'yes' |
848ca807f83a
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5007
diff
changeset
|
1647 }, source=b'topic-extension') |
848ca807f83a
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5007
diff
changeset
|
1648 with configoverride: |
3614
9ad461df4d4d
compat: keep passing arguments as keyword argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3612
diff
changeset
|
1649 return orig(ui, repo, node=node, rev=rev, *args, **kwargs) |
2711
8c938e9af113
topics: wrap the update function to check if either t0 or b0 is passed as rev
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2709
diff
changeset
|
1650 |
1854
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1651 def _fixrebase(loaded): |
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1652 if not loaded: |
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1653 return |
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1654 |
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1655 def savetopic(ctx, extra): |
1861
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
1656 if ctx.topic(): |
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
1657 extra[constants.extrakey] = ctx.topic() |
1854
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1658 |
2679
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1659 def setrebaseconfig(orig, ui, repo, **opts): |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1660 repo.ui.setconfig(b'experimental', b'topicrebase', b'yes', |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1661 source=b'topic-extension') |
2679
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1662 return orig(ui, repo, **opts) |
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1663 |
3612
33b718191bc9
rebase: update the rebase wrapping to works with hg 4.6
Boris Feld <boris.feld@octobus.net>
parents:
3603
diff
changeset
|
1664 def new_init(orig, *args, **kwargs): |
33b718191bc9
rebase: update the rebase wrapping to works with hg 4.6
Boris Feld <boris.feld@octobus.net>
parents:
3603
diff
changeset
|
1665 runtime = orig(*args, **kwargs) |
33b718191bc9
rebase: update the rebase wrapping to works with hg 4.6
Boris Feld <boris.feld@octobus.net>
parents:
3603
diff
changeset
|
1666 |
33b718191bc9
rebase: update the rebase wrapping to works with hg 4.6
Boris Feld <boris.feld@octobus.net>
parents:
3603
diff
changeset
|
1667 if util.safehasattr(runtime, 'extrafns'): |
33b718191bc9
rebase: update the rebase wrapping to works with hg 4.6
Boris Feld <boris.feld@octobus.net>
parents:
3603
diff
changeset
|
1668 runtime.extrafns.append(savetopic) |
33b718191bc9
rebase: update the rebase wrapping to works with hg 4.6
Boris Feld <boris.feld@octobus.net>
parents:
3603
diff
changeset
|
1669 |
33b718191bc9
rebase: update the rebase wrapping to works with hg 4.6
Boris Feld <boris.feld@octobus.net>
parents:
3603
diff
changeset
|
1670 return runtime |
33b718191bc9
rebase: update the rebase wrapping to works with hg 4.6
Boris Feld <boris.feld@octobus.net>
parents:
3603
diff
changeset
|
1671 |
1969
a604423c1500
compat: tolerate missing rebase extension
timeless@gmail.com
parents:
1966
diff
changeset
|
1672 try: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1673 rebase = extensions.find(b"rebase") |
3612
33b718191bc9
rebase: update the rebase wrapping to works with hg 4.6
Boris Feld <boris.feld@octobus.net>
parents:
3603
diff
changeset
|
1674 extensions.wrapfunction(rebase.rebaseruntime, '__init__', new_init) |
2679
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1675 # This exists to store in the config that rebase is running so that we can |
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1676 # update the topic according to rebase. This is a hack and should be removed |
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1677 # when we have better options. |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1678 extensions.wrapcommand(rebase.cmdtable, b'rebase', setrebaseconfig) |
1969
a604423c1500
compat: tolerate missing rebase extension
timeless@gmail.com
parents:
1966
diff
changeset
|
1679 except KeyError: |
a604423c1500
compat: tolerate missing rebase extension
timeless@gmail.com
parents:
1966
diff
changeset
|
1680 pass |
1854
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1681 |
1946
72246b13bd72
patch: document the section about import/export
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1945
diff
changeset
|
1682 ## preserve topic during import/export |
72246b13bd72
patch: document the section about import/export
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1945
diff
changeset
|
1683 |
6539
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1684 def _exporttns(seq, ctx): |
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1685 tns = ctx.topic_namespace() |
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1686 if tns != b'none': |
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1687 return b'EXP-Topic-Namespace %s' % tns |
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1688 return None |
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1689 |
1866
13fc93fb7fbe
patch: add topic to exported patch
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1863
diff
changeset
|
1690 def _exporttopic(seq, ctx): |
13fc93fb7fbe
patch: add topic to exported patch
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1863
diff
changeset
|
1691 topic = ctx.topic() |
13fc93fb7fbe
patch: add topic to exported patch
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1863
diff
changeset
|
1692 if topic: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1693 return b'EXP-Topic %s' % topic |
1866
13fc93fb7fbe
patch: add topic to exported patch
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1863
diff
changeset
|
1694 return None |
13fc93fb7fbe
patch: add topic to exported patch
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1863
diff
changeset
|
1695 |
6539
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1696 def _importtns(repo, patchdata, extra, opts): |
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1697 if b'topic-namespace' in patchdata: |
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1698 extra[b'topic-namespace'] = patchdata[b'topic-namespace'] |
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1699 |
1867
c9cacc62fa17
patch: import topic from patch header
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1866
diff
changeset
|
1700 def _importtopic(repo, patchdata, extra, opts): |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1701 if b'topic' in patchdata: |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1702 extra[b'topic'] = patchdata[b'topic'] |
1867
c9cacc62fa17
patch: import topic from patch header
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1866
diff
changeset
|
1703 |
1948
54810b543bf4
patch: move setup of import/export logic into a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1947
diff
changeset
|
1704 def setupimportexport(ui): |
54810b543bf4
patch: move setup of import/export logic into a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1947
diff
changeset
|
1705 """run at ui setup time to install import/export logic""" |
6539
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1706 cmdutil.extraexport.append(b'topic-namespace') |
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1707 cmdutil.extraexportmap[b'topic-namespace'] = _exporttns |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1708 cmdutil.extraexport.append(b'topic') |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1709 cmdutil.extraexportmap[b'topic'] = _exporttopic |
6539
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1710 cmdutil.extrapreimport.append(b'topic-namespace') |
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1711 cmdutil.extrapreimportmap[b'topic-namespace'] = _importtns |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1712 cmdutil.extrapreimport.append(b'topic') |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1713 cmdutil.extrapreimportmap[b'topic'] = _importtopic |
6539
45689da4ed41
topic: teach hg import/export to handle topic namespace as well
Anton Shestakov <av6@dwimlabs.net>
parents:
6537
diff
changeset
|
1714 patch.patchheadermap.append((b'EXP-Topic-Namespace', b'topic-namespace')) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1715 patch.patchheadermap.append((b'EXP-Topic', b'topic')) |
2667
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1716 |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1717 ## preserve topic during split |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1718 |
6417
c37754bb02d4
topic: rename presplitupdatetopic() to wrappresplitupdate()
Anton Shestakov <av6@dwimlabs.net>
parents:
6410
diff
changeset
|
1719 def wrappresplitupdate(original, repo, ui, prev, ctx): |
2667
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1720 # Save topic of revision |
6418
50c4ed02ac6d
topic: make hg split preserve topic namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6417
diff
changeset
|
1721 tns = None |
2667
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1722 topic = None |
6418
50c4ed02ac6d
topic: make hg split preserve topic namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6417
diff
changeset
|
1723 if util.safehasattr(ctx, 'topic_namespace'): |
50c4ed02ac6d
topic: make hg split preserve topic namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6417
diff
changeset
|
1724 tns = ctx.topic_namespace() |
2667
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1725 if util.safehasattr(ctx, 'topic'): |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1726 topic = ctx.topic() |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1727 |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1728 # Update the working directory |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1729 original(repo, ui, prev, ctx) |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1730 |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1731 # Restore the topic if need |
6535
d324fa553620
topic: check if tns is "none" in one more place
Anton Shestakov <av6@dwimlabs.net>
parents:
6534
diff
changeset
|
1732 if tns != b'none': |
6418
50c4ed02ac6d
topic: make hg split preserve topic namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6417
diff
changeset
|
1733 _changecurrenttns(repo, tns) |
2667
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1734 if topic: |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1735 _changecurrenttopic(repo, topic) |
6236
7ad8107d953a
topic: introduce topic namespaces concept starting with simple parsing
Anton Shestakov <av6@dwimlabs.net>
parents:
6206
diff
changeset
|
1736 |
6537
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1737 def wrapprecheck(orig, repo, revs, action=b'rewrite', check_divergence=True): |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1738 # hg <= 6.1 (d4752aeb20f1) |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1739 args = pycompat.getargspec(orig).args |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1740 if r'check_divergence' in args: |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1741 orig(repo, revs, action, check_divergence=check_divergence) |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1742 else: |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1743 orig(repo, revs, action) |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1744 |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1745 # TODO: at some point in future the default will change from '*' to the |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1746 # default topic namespace for the current user |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1747 allow = set(repo.ui.configlist(b'experimental', b'tns-allow-rewrite', [b'*'])) |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1748 if b'*' not in allow: |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1749 namespaces = set(repo[rev].topic_namespace() for rev in revs) |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1750 disallowed = namespaces - allow |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1751 if disallowed: |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1752 msg = _(b"refusing to %s changesets with these topic namespaces: %s") |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1753 msg %= (action, b' '.join(disallowed)) |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1754 hint = _(b"modify experimental.tns-allow-rewrite to allow rewriting changesets from these topic namespaces") |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1755 raise compat.InputError(msg, hint=hint) |
80d5d4e587f7
topic: experimental config option and topic namespace checking in precheck()
Anton Shestakov <av6@dwimlabs.net>
parents:
6535
diff
changeset
|
1756 |
6239
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1757 def _changecurrenttns(repo, tns): |
6534
43a1bacf6a14
topic: write topic namespace to disk if it's not "none"
Anton Shestakov <av6@dwimlabs.net>
parents:
6530
diff
changeset
|
1758 if tns != b'none': |
6239
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1759 with repo.wlock(): |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1760 repo.vfs.write(b'topic-namespace', tns) |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1761 else: |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1762 repo.vfs.unlinkpath(b'topic-namespace', ignoremissing=True) |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1763 |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1764 @command(b'debug-topic-namespace', [ |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1765 (b'', b'clear', False, b'clear active topic namespace if any'), |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1766 ], |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1767 _(b'[NAMESPACE|--clear]')) |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1768 def debugtopicnamespace(ui, repo, tns=None, **opts): |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1769 """set or show the current topic namespace""" |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1770 if opts.get('clear'): |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1771 if tns: |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1772 raise error.Abort(_(b"cannot use --clear when setting a topic namespace")) |
6534
43a1bacf6a14
topic: write topic namespace to disk if it's not "none"
Anton Shestakov <av6@dwimlabs.net>
parents:
6530
diff
changeset
|
1773 tns = b'none' |
6239
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1774 elif not tns: |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1775 ui.write(b'%s\n' % repo.currenttns) |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1776 return |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1777 if tns: |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1778 tns = tns.strip() |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1779 if not tns: |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1780 raise error.Abort(_(b"topic namespace cannot consist entirely of whitespace")) |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1781 if b'/' in tns: |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1782 raise error.Abort(_(b"topic namespace cannot contain '/' character")) |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1783 scmutil.checknewlabel(repo, tns, b'topic namespace') |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1784 ctns = repo.currenttns |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1785 _changecurrenttns(repo, tns) |
6541
09fb1cfb5adc
topic: update hg debug-topic-namespace to treat "none" as the empty value
Anton Shestakov <av6@dwimlabs.net>
parents:
6539
diff
changeset
|
1786 if ctns == b'none' and tns != b'none': |
6239
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1787 repo.ui.status(_(b'marked working directory as topic namespace: %s\n') |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1788 % tns) |
8861e33f3bb2
topic: setting current repo namespace with debug-namespace
Anton Shestakov <av6@dwimlabs.net>
parents:
6238
diff
changeset
|
1789 |
6238
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
1790 @command(b'debug-topic-namespaces', []) |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
1791 def debugtopicnamespaces(ui, repo, **opts): |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
1792 """list repository namespaces""" |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
1793 for tns in repo.topic_namespaces: |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
1794 ui.write(b'%s\n' % (tns,)) |
6bbd16579f0f
topic: list namespaces with debug-namespaces
Anton Shestakov <av6@dwimlabs.net>
parents:
6237
diff
changeset
|
1795 |
6236
7ad8107d953a
topic: introduce topic namespaces concept starting with simple parsing
Anton Shestakov <av6@dwimlabs.net>
parents:
6206
diff
changeset
|
1796 @command(b'debug-parse-fqbn', commands.formatteropts, _(b'FQBN'), optionalrepo=True) |
7ad8107d953a
topic: introduce topic namespaces concept starting with simple parsing
Anton Shestakov <av6@dwimlabs.net>
parents:
6206
diff
changeset
|
1797 def debugparsefqbn(ui, repo, fqbn, **opts): |
7ad8107d953a
topic: introduce topic namespaces concept starting with simple parsing
Anton Shestakov <av6@dwimlabs.net>
parents:
6206
diff
changeset
|
1798 """parse branch//namespace/topic string into its components""" |
7ad8107d953a
topic: introduce topic namespaces concept starting with simple parsing
Anton Shestakov <av6@dwimlabs.net>
parents:
6206
diff
changeset
|
1799 branch, tns, topic = common.parsefqbn(fqbn) |
7ad8107d953a
topic: introduce topic namespaces concept starting with simple parsing
Anton Shestakov <av6@dwimlabs.net>
parents:
6206
diff
changeset
|
1800 opts = pycompat.byteskwargs(opts) |
7ad8107d953a
topic: introduce topic namespaces concept starting with simple parsing
Anton Shestakov <av6@dwimlabs.net>
parents:
6206
diff
changeset
|
1801 fm = ui.formatter(b'debug-parse-namespace', opts) |
7ad8107d953a
topic: introduce topic namespaces concept starting with simple parsing
Anton Shestakov <av6@dwimlabs.net>
parents:
6206
diff
changeset
|
1802 fm.startitem() |
7ad8107d953a
topic: introduce topic namespaces concept starting with simple parsing
Anton Shestakov <av6@dwimlabs.net>
parents:
6206
diff
changeset
|
1803 fm.write(b'branch', b'branch: %s\n', branch) |
7ad8107d953a
topic: introduce topic namespaces concept starting with simple parsing
Anton Shestakov <av6@dwimlabs.net>
parents:
6206
diff
changeset
|
1804 fm.write(b'topic_namespace', b'namespace: %s\n', tns) |
7ad8107d953a
topic: introduce topic namespaces concept starting with simple parsing
Anton Shestakov <av6@dwimlabs.net>
parents:
6206
diff
changeset
|
1805 fm.write(b'topic', b'topic: %s\n', topic) |
7ad8107d953a
topic: introduce topic namespaces concept starting with simple parsing
Anton Shestakov <av6@dwimlabs.net>
parents:
6206
diff
changeset
|
1806 fm.end() |
6237
0b9042408809
topic: formatting branch, namespace and topic into fully qualified branch name
Anton Shestakov <av6@dwimlabs.net>
parents:
6236
diff
changeset
|
1807 |
0b9042408809
topic: formatting branch, namespace and topic into fully qualified branch name
Anton Shestakov <av6@dwimlabs.net>
parents:
6236
diff
changeset
|
1808 @command(b'debug-format-fqbn', [ |
0b9042408809
topic: formatting branch, namespace and topic into fully qualified branch name
Anton Shestakov <av6@dwimlabs.net>
parents:
6236
diff
changeset
|
1809 (b'b', b'branch', b'', b'branch'), |
0b9042408809
topic: formatting branch, namespace and topic into fully qualified branch name
Anton Shestakov <av6@dwimlabs.net>
parents:
6236
diff
changeset
|
1810 (b'n', b'topic-namespace', b'', b'topic namespace'), |
0b9042408809
topic: formatting branch, namespace and topic into fully qualified branch name
Anton Shestakov <av6@dwimlabs.net>
parents:
6236
diff
changeset
|
1811 (b't', b'topic', b'', b'topic'), |
6266
213db29a19e9
topic: ability to shorten branch//namespace/topic strings when possible
Anton Shestakov <av6@dwimlabs.net>
parents:
6245
diff
changeset
|
1812 (b's', b'short', False, b'short format'), |
6237
0b9042408809
topic: formatting branch, namespace and topic into fully qualified branch name
Anton Shestakov <av6@dwimlabs.net>
parents:
6236
diff
changeset
|
1813 ], optionalrepo=True) |
0b9042408809
topic: formatting branch, namespace and topic into fully qualified branch name
Anton Shestakov <av6@dwimlabs.net>
parents:
6236
diff
changeset
|
1814 def debugformatfqbn(ui, repo, **opts): |
0b9042408809
topic: formatting branch, namespace and topic into fully qualified branch name
Anton Shestakov <av6@dwimlabs.net>
parents:
6236
diff
changeset
|
1815 """format branch, namespace and topic into branch//namespace/topic string""" |
6266
213db29a19e9
topic: ability to shorten branch//namespace/topic strings when possible
Anton Shestakov <av6@dwimlabs.net>
parents:
6245
diff
changeset
|
1816 short = common.formatfqbn(opts.get('branch'), opts.get('topic_namespace'), opts.get('topic'), opts.get('short')) |
6237
0b9042408809
topic: formatting branch, namespace and topic into fully qualified branch name
Anton Shestakov <av6@dwimlabs.net>
parents:
6236
diff
changeset
|
1817 ui.write(b'%s\n' % short) |