Mercurial > evolve
annotate hgext3rd/topic/__init__.py @ 6293:2b30ff6c8e82 stable
packaging: mark as developer version
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Thu, 14 Jul 2022 16:39:49 +0400 |
parents | 48387e18f294 |
children | 47268350b3bc b4f9b7e468ee |
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, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
171 context, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
172 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
|
173 exchange, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
174 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
|
175 hg, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
176 localrepo, |
2890
1e3d97486861
topics: import lock as lockmods
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2889
diff
changeset
|
177 lock as lockmod, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
178 merge, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
179 namespaces, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
180 node, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
181 obsolete, |
4942
acc7e27fa5c6
topic: drop compat.getmarkers() and use obsutil.getmarkers() directly
Anton Shestakov <av6@dwimlabs.net>
parents:
4921
diff
changeset
|
182 obsutil, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
183 patch, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
184 phases, |
4752
8a73a8df63b6
py3: convert opts keys to bytes before passing to core APIs
Martin von Zweigbergk <martinvonz@google.com>
parents:
4748
diff
changeset
|
185 pycompat, |
2464
2b53a2a21bbb
deprecation: fix cmdutil.command deprecation warning
Boris Feld <boris.feld@octobus.net>
parents:
2428
diff
changeset
|
186 registrar, |
2889
31cbace4c0f1
topics: make sure we have some restrictions on topic names
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2869
diff
changeset
|
187 scmutil, |
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
|
188 templatefilters, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
189 util, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
190 ) |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
191 |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
192 from . import ( |
4531
1d1f8f56daac
topic: introduce a `hastopicext(repo)` function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4524
diff
changeset
|
193 common, |
2922
66357d4d03b2
topic: centralize compatibility logic between hg versions into compat module
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2915
diff
changeset
|
194 compat, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
195 constants, |
3532
68e99d2c6267
prev: fix the breakage of `hg previous` from obsolete cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3447
diff
changeset
|
196 destination, |
68e99d2c6267
prev: fix the breakage of `hg previous` from obsolete cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3447
diff
changeset
|
197 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
|
198 flow, |
3532
68e99d2c6267
prev: fix the breakage of `hg previous` from obsolete cset
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3447
diff
changeset
|
199 randomname, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
200 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
|
201 server, |
1932
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
202 stack, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
203 topicmap, |
880aac9dbfa6
init: move to new style import
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1918
diff
changeset
|
204 ) |
1843
0ba067a97d06
revset: add a topic() revset for querying topics
Augie Fackler <augie@google.com>
parents:
1842
diff
changeset
|
205 |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
206 cmdtable = {} |
3971
9f8b99b3d9b5
topic: drop compat layer for `command`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3945
diff
changeset
|
207 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
|
208 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
|
209 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
|
210 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
|
211 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
|
212 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
|
213 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
|
214 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
|
215 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
|
216 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
|
217 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
|
218 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
|
219 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
|
220 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
|
221 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
|
222 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
|
223 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
|
224 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
|
225 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
|
226 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
|
227 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
|
228 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
|
229 # 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
|
230 # (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
|
231 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
|
232 } |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
233 |
6293
2b30ff6c8e82
packaging: mark as developer version
Anton Shestakov <av6@dwimlabs.net>
parents:
6276
diff
changeset
|
234 __version__ = b'0.24.2.dev' |
3057
cb8ae3cb0bbc
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
diff
changeset
|
235 |
6276
48387e18f294
packaging: prepare evolve 10.5.2 and topic 0.24.1
Anton Shestakov <av6@dwimlabs.net>
parents:
6154
diff
changeset
|
236 testedwith = b'4.8 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' |
6146
74665d83fb3b
branching: merge stable into default
Anton Shestakov <av6@dwimlabs.net>
parents:
6118
diff
changeset
|
237 minimumhgversion = b'4.8' |
4713
fbe7f35a6926
py3: make metadata values be byte strings as Mercurial expects
Martin von Zweigbergk <martinvonz@google.com>
parents:
4704
diff
changeset
|
238 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
|
239 |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
240 if util.safehasattr(registrar, 'configitem'): |
3295
64aedeb30625
topic: fix compatibility with 4.3
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3293
diff
changeset
|
241 |
64aedeb30625
topic: fix compatibility with 4.3
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3293
diff
changeset
|
242 from mercurial import configitems |
64aedeb30625
topic: fix compatibility with 4.3
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3293
diff
changeset
|
243 |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
244 configtable = {} |
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
245 configitem = registrar.configitem(configtable) |
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
246 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
247 configitem(b'experimental', b'enforce-topic', |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
248 default=False, |
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
249 ) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
250 configitem(b'experimental', b'enforce-single-head', |
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
|
251 default=False, |
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
|
252 ) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
253 configitem(b'experimental', b'topic-mode', |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
254 default=None, |
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
255 ) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
256 configitem(b'experimental', b'topic.publish-bare-branch', |
3158
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
257 default=False, |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
258 ) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
259 configitem(b'experimental', 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
|
260 default=configitems.dynamicdefault, |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
261 ) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
262 configitem(b'_internal', b'keep-topic', |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
263 default=False, |
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
264 ) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
265 configitem(b'experimental', b'topic-mode.server', |
3295
64aedeb30625
topic: fix compatibility with 4.3
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3293
diff
changeset
|
266 default=configitems.dynamicdefault, |
3235
8a772f0c54d9
topics: add a config to reject draft changeset without topic on a server
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3232
diff
changeset
|
267 ) |
5139
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
268 configitem(b'experimental', b'topic.server-gate-topic-changesets', |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
269 default=False, |
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
270 ) |
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
|
271 configitem(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
|
272 default="reject", |
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
|
273 ) |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
274 |
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
275 def extsetup(ui): |
3225
28fb347a5bf8
typos: fix typos in several locations
Kyle Lippincott <spectral@google.com>
parents:
3195
diff
changeset
|
276 # register config that strictly belong to other code (thg, core, etc) |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
277 # |
3225
28fb347a5bf8
typos: fix typos in several locations
Kyle Lippincott <spectral@google.com>
parents:
3195
diff
changeset
|
278 # To ensure all config items we used are registered, we register them if |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
279 # nobody else did so far. |
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
280 from mercurial import configitems |
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
281 extraitem = functools.partial(configitems._register, ui._knownconfig) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
282 if (b'experimental' not in ui._knownconfig |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
283 or not ui._knownconfig[b'experimental'].get(b'thg.displaynames')): |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
284 extraitem(b'experimental', b'thg.displaynames', |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
285 default=None, |
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
286 ) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
287 if (b'devel' not in ui._knownconfig |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
288 or not ui._knownconfig[b'devel'].get(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
|
289 extraitem(b'devel', b'randomseed', |
3082
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
290 default=None, |
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
291 ) |
326e0ee1eed1
topic: register config items
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3071
diff
changeset
|
292 |
2656
4a148ca3e80d
topic: update the changectx method to respect phases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2655
diff
changeset
|
293 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
|
294 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
|
295 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
|
296 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
|
297 # 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
|
298 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
|
299 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
|
300 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
|
301 # 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
|
302 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
|
303 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
|
304 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
|
305 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
|
306 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
|
307 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
|
308 |
1861
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
309 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
|
310 |
2744
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
311 def _contexttopicidx(self): |
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
312 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
|
313 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
|
314 # 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
|
315 # 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
|
316 return None |
2915
b3abdb3d819e
stack: replace 'getstack' with direct call to 'stack'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2912
diff
changeset
|
317 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
|
318 try: |
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
319 return revlist.index(self.rev()) |
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
320 except IndexError: |
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
321 # 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
|
322 return None |
ddfe336de779
topic: add a 'topicidx()' to context
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2740
diff
changeset
|
323 context.basectx.topicidx = _contexttopicidx |
1861
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
324 |
4801
16c1398b0063
python3: prefix all regex to work with python 2 and 3
Raphaël Gomès <rgomes@octobus.net>
parents:
4791
diff
changeset
|
325 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
|
326 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
|
327 |
4531
1d1f8f56daac
topic: introduce a `hastopicext(repo)` function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4524
diff
changeset
|
328 hastopicext = common.hastopicext |
1d1f8f56daac
topic: introduce a `hastopicext(repo)` function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4524
diff
changeset
|
329 |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
330 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
|
331 revs = None |
4065
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
332 if stackrev.match(name): |
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
333 idx = int(name[1:]) |
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
334 tname = topic = repo.currenttopic |
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
335 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
|
336 ttype = b'topic' |
4065
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
337 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
|
338 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
|
339 ttype = b'branch' |
4065
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
340 tname = branch = repo[None].branch() |
fbc51e98cf13
alias: allow reference through 's#'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4044
diff
changeset
|
341 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
|
342 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
|
343 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
|
344 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
|
345 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
|
346 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
|
347 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
|
348 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
|
349 |
b933a8068c17
topic: add some initial support for using stack on named branch
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2668
diff
changeset
|
350 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
|
351 try: |
2712
f19b314d8475
topics: add t0 and b0 to the stack
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2711
diff
changeset
|
352 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
|
353 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
|
354 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
|
355 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
|
356 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
|
357 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
|
358 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
|
359 # 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
|
360 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
|
361 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
|
362 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
|
363 return [repo[r].node()] |
2008 | 364 if name not in repo.topics: |
2000
c413e7c96265
init: guard _namemap with repo.topics (issue5351)
timeless@gmail.com
parents:
1999
diff
changeset
|
365 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
|
366 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
|
367 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
|
368 |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
369 def _nodemap(repo, node): |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
370 ctx = repo[node] |
1861
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
371 t = ctx.topic() |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
372 if t and ctx.phase() > phases.public: |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
373 return [t] |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
374 return [] |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
375 |
5685
7ee15bf011d6
topic: wrap branch call during summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5680
diff
changeset
|
376 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
|
377 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
|
378 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
|
379 |
1871
58ef5699fb35
merge: use topic to pick default destination
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1867
diff
changeset
|
380 def uisetup(ui): |
1941
7eb737b7a902
destination: rename 'setupdest' to 'modsetup'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1939
diff
changeset
|
381 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
|
382 discovery.modsetup(ui) |
1952
665d6322994e
uisetup: add call to 'topicmap.modsetup'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1951
diff
changeset
|
383 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
|
384 setupimportexport(ui) |
1871
58ef5699fb35
merge: use topic to pick default destination
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1867
diff
changeset
|
385 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
386 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
|
387 |
3159
90515d0bfb08
push: add a --publish flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3158
diff
changeset
|
388 flow.installpushflag(ui) |
90515d0bfb08
push: add a --publish flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3158
diff
changeset
|
389 |
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 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
|
391 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
|
392 _(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
|
393 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
394 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
|
395 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
|
396 _(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
|
397 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
398 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
|
399 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
|
400 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
|
401 _(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
|
402 |
1951
0309cac5d91d
uisetup: move all remaining wrapping into uisetup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1950
diff
changeset
|
403 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
|
404 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
|
405 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
|
406 else: |
d9ee2706487f
compat: add support for upstream rename of merge.update() to _update()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5531
diff
changeset
|
407 # 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
|
408 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
|
409 # 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
|
410 # 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
|
411 # 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
|
412 # 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
|
413 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
|
414 |
5685
7ee15bf011d6
topic: wrap branch call during summary
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5680
diff
changeset
|
415 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
|
416 |
2667
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
417 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
|
418 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
|
419 extensions.wrapfunction(evolve.rewriteutil, "presplitupdate", |
610581a2fb74
commands: move split to the 'evocommands' module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2750
diff
changeset
|
420 presplitupdatetopic) |
2667
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
421 except (KeyError, AttributeError): |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
422 pass |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
423 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
424 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
|
425 |
3281
703e8398ac57
topic: move function wrapping from reposetup to uisetup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3235
diff
changeset
|
426 # 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
|
427 extensions.wrapfunction(context.workingctx, '__init__', wrapinit) |
703e8398ac57
topic: move function wrapping from reposetup to uisetup
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3235
diff
changeset
|
428 # 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
|
429 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
|
430 # 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
|
431 if util.safehasattr(exchange, '_checkpublish'): |
1a81bbc94d45
topic: check that exchange._checkpublish() exists before wrapping it
Anton Shestakov <av6@dwimlabs.net>
parents:
5221
diff
changeset
|
432 extensions.wrapfunction(exchange, '_checkpublish', |
1a81bbc94d45
topic: check that exchange._checkpublish() exists before wrapping it
Anton Shestakov <av6@dwimlabs.net>
parents:
5221
diff
changeset
|
433 flow.replacecheckpublish) |
5232
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
434 else: |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
435 # hg <= 4.8 (33d30fb1e4ae) |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
436 try: |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
437 evolve = extensions.find(b'evolve') |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
438 extensions.wrapfunction(evolve.safeguard, '_checkpublish', |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
439 flow.replacecheckpublish) |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
440 except (KeyError, AttributeError): |
9ed5f9c5d8ae
topic: hg <= 4.8 compatibility for wrapping exchange._checkpublish()
Anton Shestakov <av6@dwimlabs.net>
parents:
5231
diff
changeset
|
441 pass |
1951
0309cac5d91d
uisetup: move all remaining wrapping into uisetup
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1950
diff
changeset
|
442 |
6117
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
443 try: |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
444 histedit = extensions.find(b'histedit') |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
445 except KeyError: |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
446 pass |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
447 else: |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
448 # 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
|
449 extensions.wrapfunction(histedit.histeditaction, 'applychange', |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
450 applychangewrap) |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
451 |
5139
19b8ffd23795
topic: option to hide topic changesets to plain client
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5111
diff
changeset
|
452 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
|
453 |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
454 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
|
455 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
|
456 return # this can be a peer in the ssh case (puzzling) |
2007 | 457 |
2653
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
458 repo = repo.unfiltered() |
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
459 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
460 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
|
461 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
|
462 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
|
463 |
5688
b1e057fb7837
topic: disable inmemory rebase to avoid losing the topic
Matt Harbison <matt_harbison@yahoo.com>
parents:
5644
diff
changeset
|
464 # 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
|
465 # 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
|
466 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
|
467 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
|
468 source=b'topic-extension') |
b1e057fb7837
topic: disable inmemory rebase to avoid losing the topic
Matt Harbison <matt_harbison@yahoo.com>
parents:
5644
diff
changeset
|
469 |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
470 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
|
471 |
4531
1d1f8f56daac
topic: introduce a `hastopicext(repo)` function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4524
diff
changeset
|
472 # 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
|
473 hastopicext = True |
1d1f8f56daac
topic: introduce a `hastopicext(repo)` function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4524
diff
changeset
|
474 |
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
|
475 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
|
476 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
|
477 caps.add(b'topics') |
5251
2de59d916266
auto-publish: issue the capabilities in all cases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5242
diff
changeset
|
478 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
|
479 mode = b'all' |
2de59d916266
auto-publish: issue the capabilities in all cases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5242
diff
changeset
|
480 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
|
481 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
|
482 mode = b'auto' |
2de59d916266
auto-publish: issue the capabilities in all cases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5242
diff
changeset
|
483 else: |
2de59d916266
auto-publish: issue the capabilities in all cases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5242
diff
changeset
|
484 mode = b'none' |
2de59d916266
auto-publish: issue the capabilities in all cases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5242
diff
changeset
|
485 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
|
486 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
|
487 |
1858
4ab1b854ce4e
topics: allow commits that only change topic (issue4725)
Matt Mackall <mpm@selenic.com>
parents:
1857
diff
changeset
|
488 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
|
489 configoverride = util.nullcontextmanager() |
de0151ba3e46
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4942
diff
changeset
|
490 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
|
491 # 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
|
492 configoverride = self.ui.configoverride({ |
de0151ba3e46
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4942
diff
changeset
|
493 (b'ui', b'allowemptycommit'): True |
de0151ba3e46
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4942
diff
changeset
|
494 }) |
de0151ba3e46
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
4942
diff
changeset
|
495 with configoverride: |
2288
b6ea9049693d
topic: directly use "super" call
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2012
diff
changeset
|
496 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
|
497 |
4842
ee0866a279da
topic: fix some API to make it more robust
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
4790
diff
changeset
|
498 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
|
499 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
|
500 current = self.currenttopic |
f241a00e93a7
topics: only apply topic to commits of the working copy
Matt Mackall <mpm@selenic.com>
parents:
1854
diff
changeset
|
501 if current: |
f241a00e93a7
topics: only apply topic to commits of the working copy
Matt Mackall <mpm@selenic.com>
parents:
1854
diff
changeset
|
502 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
|
503 return super(topicrepo, self).commitctx(ctx, *args, **kwargs) |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
504 |
5680
18a70ae9fb0b
topic: add a basic in-memory cache for topic information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5646
diff
changeset
|
505 @util.propertycache |
18a70ae9fb0b
topic: add a basic in-memory cache for topic information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5646
diff
changeset
|
506 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
|
507 return {} |
18a70ae9fb0b
topic: add a basic in-memory cache for topic information
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
5646
diff
changeset
|
508 |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
509 @property |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
510 def topics(self): |
1999 | 511 if self._topics is not None: |
512 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
|
513 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
|
514 for c in self.set(b'not public()'): |
1861
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
515 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
|
516 topics.remove(b'') |
1999 | 517 self._topics = topics |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
518 return topics |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
519 |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
520 @property |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
521 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
|
522 return self.vfs.tryread(b'topic') |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
523 |
2653
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
524 # overwritten at the instance level by topicmap.py |
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
525 _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
|
526 |
2653
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
527 def branchmap(self, topic=None): |
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
528 if topic is None: |
3880
28dadd024299
topic: use self instead of repo in topicrepo methods
Anton Shestakov <av6@dwimlabs.net>
parents:
3834
diff
changeset
|
529 topic = getattr(self, '_autobranchmaptopic', False) |
2653
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
530 topicfilter = topicmap.topicfilter(self.filtername) |
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
531 if not topic or topicfilter == self.filtername: |
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
532 return super(topicrepo, self).branchmap() |
13313d0cab71
topicmap: massive rework
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2652
diff
changeset
|
533 return self.filtered(topicfilter).branchmap() |
1889
d9b929bcc3ad
topicmap: ensure that 'served' view is updated with topicmap
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1888
diff
changeset
|
534 |
4704
5f90eb8fd63c
evolve: fix confusion in branch heads checking logic when topic in play
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4669
diff
changeset
|
535 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
|
536 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
|
537 branch = self[None].branch() |
5687
d24669df9a4a
topic: look for topic heads only when necessary
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
5685
diff
changeset
|
538 if self.currenttopic: |
d24669df9a4a
topic: look for topic heads only when necessary
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
5685
diff
changeset
|
539 branch = b"%s:%s" % (branch, 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
|
540 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
|
541 start=start, |
5f90eb8fd63c
evolve: fix confusion in branch heads checking logic when topic in play
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4669
diff
changeset
|
542 closed=closed) |
5f90eb8fd63c
evolve: fix confusion in branch heads checking logic when topic in play
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4669
diff
changeset
|
543 |
1999 | 544 def invalidatevolatilesets(self): |
545 # XXX we might be able to move this to something invalidated less often | |
546 super(topicrepo, self).invalidatevolatilesets() | |
547 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
|
548 |
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
|
549 def peer(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
|
550 peer = super(topicrepo, self).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
|
551 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
|
552 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
|
553 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
|
554 usetopic = not self._repo.publishing() |
0504e76bfbd9
push: allow pushing new topic to non-publishing server by default
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1885
diff
changeset
|
555 return self._repo.branchmap(topic=usetopic) |
0504e76bfbd9
push: allow pushing new topic to non-publishing server by default
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1885
diff
changeset
|
556 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
|
557 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
|
558 |
2989
53246d237373
topic: skip topic movement message during strip
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2986
diff
changeset
|
559 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
|
560 ctr = self.currenttransaction() |
2989
53246d237373
topic: skip topic movement message during strip
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2986
diff
changeset
|
561 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
|
562 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
|
563 return tr |
2986
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
564 |
3158
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
565 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
|
566 if self.ui.configbool(b'experimental', b'enforce-single-head'): |
5193
a4d081923c81
compat: update hg-X.Y compat comments and test them
Anton Shestakov <av6@dwimlabs.net>
parents:
5183
diff
changeset
|
567 if util.safehasattr(tr, 'validator'): # hg <= 4.7 (ebbba3ba3f66) |
4123
119fced5a891
topic: add a compatibility to access transaction's validator
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4117
diff
changeset
|
568 origvalidator = tr.validator |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
569 elif util.safehasattr(tr, '_validator'): |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
570 # 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
|
571 origvalidator = tr._validator |
4123
119fced5a891
topic: add a compatibility to access transaction's validator
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4117
diff
changeset
|
572 else: |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
573 origvalidator = None |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
574 |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
575 def _validate(tr2): |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
576 repo = reporef() |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
577 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
|
578 |
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
|
579 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
|
580 _validate(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
|
581 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
|
582 |
5193
a4d081923c81
compat: update hg-X.Y compat comments and test them
Anton Shestakov <av6@dwimlabs.net>
parents:
5183
diff
changeset
|
583 if util.safehasattr(tr, 'validator'): # hg <= 4.7 (ebbba3ba3f66) |
4123
119fced5a891
topic: add a compatibility to access transaction's validator
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4117
diff
changeset
|
584 tr.validator = validator |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
585 elif util.safehasattr(tr, '_validator'): |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
586 # 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
|
587 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
|
588 else: |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
589 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
|
590 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
591 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
|
592 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
|
593 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
|
594 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
|
595 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
|
596 if (topicmodeserver != b'ignore' and ispush): |
5193
a4d081923c81
compat: update hg-X.Y compat comments and test them
Anton Shestakov <av6@dwimlabs.net>
parents:
5183
diff
changeset
|
597 if util.safehasattr(tr, 'validator'): # hg <= 4.7 (ebbba3ba3f66) |
4123
119fced5a891
topic: add a compatibility to access transaction's validator
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4117
diff
changeset
|
598 origvalidator = tr.validator |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
599 elif util.safehasattr(tr, '_validator'): |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
600 # 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
|
601 origvalidator = tr._validator |
119fced5a891
topic: add a compatibility to access transaction's validator
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4117
diff
changeset
|
602 else: |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
603 origvalidator = None |
3235
8a772f0c54d9
topics: add a config to reject draft changeset without topic on a server
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3232
diff
changeset
|
604 |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
605 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
|
606 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
|
607 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
|
608 |
8a772f0c54d9
topics: add a config to reject draft changeset without topic on a server
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3232
diff
changeset
|
609 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
|
610 _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
|
611 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
|
612 |
5193
a4d081923c81
compat: update hg-X.Y compat comments and test them
Anton Shestakov <av6@dwimlabs.net>
parents:
5183
diff
changeset
|
613 if util.safehasattr(tr, 'validator'): # hg <= 4.7 (ebbba3ba3f66) |
4123
119fced5a891
topic: add a compatibility to access transaction's validator
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4117
diff
changeset
|
614 tr.validator = validator |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
615 elif util.safehasattr(tr, '_validator'): |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
616 # 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
|
617 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
|
618 else: |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
619 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
|
620 |
5930
8d36bfe9968a
topic: add more variables to make a condition fit on one line
Anton Shestakov <av6@dwimlabs.net>
parents:
5919
diff
changeset
|
621 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
|
622 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
|
623 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
|
624 |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
625 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
|
626 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
|
627 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
|
628 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
|
629 origclose() |
678a9802c56b
topic: add an option to automatically publish topic-less changeset
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3157
diff
changeset
|
630 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
|
631 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
|
632 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
|
633 True) |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
634 if not allow_publish: |
5193
a4d081923c81
compat: update hg-X.Y compat comments and test them
Anton Shestakov <av6@dwimlabs.net>
parents:
5183
diff
changeset
|
635 if util.safehasattr(tr, 'validator'): # hg <= 4.7 (ebbba3ba3f66) |
4647
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
636 origvalidator = tr.validator |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
637 elif util.safehasattr(tr, '_validator'): |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
638 # 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
|
639 origvalidator = tr._validator |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
640 else: |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
641 origvalidator = None |
4647
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
642 |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
643 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
|
644 repo = reporef() |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
645 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
|
646 |
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
647 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
|
648 _validate(tr2) |
4647
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
649 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
|
650 |
5193
a4d081923c81
compat: update hg-X.Y compat comments and test them
Anton Shestakov <av6@dwimlabs.net>
parents:
5183
diff
changeset
|
651 if util.safehasattr(tr, 'validator'): # hg <= 4.7 (ebbba3ba3f66) |
4647
228caeb8b7af
topic: add a simple option to reject publishing
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4646
diff
changeset
|
652 tr.validator = validator |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
653 elif util.safehasattr(tr, '_validator'): |
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
654 # 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
|
655 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
|
656 else: |
5203
034d6d0efa7d
topic: fix compatibility issues caused because of change in transaction API
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5193
diff
changeset
|
657 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
|
658 |
2988
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
659 # real transaction start |
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
660 ct = self.currenttopic |
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
661 if not ct: |
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
662 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
|
663 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
|
664 |
2986
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
665 reporef = weakref.ref(self) |
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
666 |
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
667 def currenttopicempty(tr): |
3225
28fb347a5bf8
typos: fix typos in several locations
Kyle Lippincott <spectral@google.com>
parents:
3195
diff
changeset
|
668 # check active topic emptiness |
2986
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
669 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
|
670 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
|
671 empty = csetcount == 0 |
62201935e1a7
topics/ui: detect and signal when an empty changeset becomes non-empty
Aurélien Campéas
parents:
2987
diff
changeset
|
672 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
|
673 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
|
674 % 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
|
675 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
|
676 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
|
677 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
|
678 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
|
679 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
|
680 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
|
681 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
|
682 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
|
683 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
|
684 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
|
685 else: |
5132
fb5f49be3c90
topic: use `%d` for integers instead of `%s` on py3
Pulkit Goyal <7895pulkit@gmail.com>
parents:
5110
diff
changeset
|
686 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
|
687 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
|
688 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
689 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
|
690 return tr |
4746b92cc1f8
topics/ui: signal when an operation entails voiding a topic
Aurélien Campéas
parents:
2985
diff
changeset
|
691 |
1857
a506ed8ab8da
topics: add listnames hook so completion works
Matt Mackall <mpm@selenic.com>
parents:
1856
diff
changeset
|
692 repo.__class__ = topicrepo |
1999 | 693 repo._topics = None |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
694 if util.safehasattr(repo, 'names'): |
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
695 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
|
696 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
|
697 listnames=lambda repo: repo.topics)) |
2928
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
698 |
5183
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
699 templatekeyword = registrar.templatekeyword() |
4152
fb22c7a6ca8b
topic: add topicidx template keyword
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4126
diff
changeset
|
700 |
5183
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
701 @templatekeyword(b'topic', requires={b'ctx'}) |
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
702 def topickw(context, mapping): |
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
703 """:topic: String. The topic of the changeset""" |
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
704 ctx = context.resource(mapping, b'ctx') |
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
705 return ctx.topic() |
3384
2b06f144b6e0
topics: add a new templatekeyword `topic`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3372
diff
changeset
|
706 |
5183
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
707 @templatekeyword(b'topicidx', requires={b'ctx'}) |
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
708 def topicidxkw(context, mapping): |
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
709 """:topicidx: Integer. Index of the changeset as a stack alias""" |
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
710 ctx = context.resource(mapping, b'ctx') |
9ac6779d608c
topic: drop 4.5 compatibility for template keywords
Anton Shestakov <av6@dwimlabs.net>
parents:
5164
diff
changeset
|
711 return ctx.topicidx() |
4152
fb22c7a6ca8b
topic: add topicidx template keyword
Sushil khanchi <sushilkhanchi97@gmail.com>
parents:
4126
diff
changeset
|
712 |
2928
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
713 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
|
714 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
|
715 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
|
716 return |
4125
865c33c16508
topic: respect preexisting 'topic' value on workingcommitctx
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4124
diff
changeset
|
717 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
|
718 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
|
719 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
|
720 else: |
865c33c16508
topic: respect preexisting 'topic' value on workingcommitctx
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4124
diff
changeset
|
721 # 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
|
722 self._extra[constants.extrakey] = b'' |
2928
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
723 |
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
724 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
|
725 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
|
726 filesadded=None, filesremoved=None): |
2928
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
727 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
|
728 extra = extra.copy() |
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
729 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
|
730 # hg <= 4.9 (0e41f40b01cc) |
001eb0f11bcd
topic: add compatibility for writing copy metadata in changelog.add()
Anton Shestakov <av6@dwimlabs.net>
parents:
4519
diff
changeset
|
731 kwargs = {} |
001eb0f11bcd
topic: add compatibility for writing copy metadata in changelog.add()
Anton Shestakov <av6@dwimlabs.net>
parents:
4519
diff
changeset
|
732 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
|
733 kwargs['p1copies'] = p1copies |
001eb0f11bcd
topic: add compatibility for writing copy metadata in changelog.add()
Anton Shestakov <av6@dwimlabs.net>
parents:
4519
diff
changeset
|
734 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
|
735 kwargs['p2copies'] = p2copies |
4646
7b986968700b
compat: adjust `wrapadd` for upstream
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4628
diff
changeset
|
736 # hg <= 5.0 (f385ba70e4af) |
7b986968700b
compat: adjust `wrapadd` for upstream
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4628
diff
changeset
|
737 if filesadded is not None: |
7b986968700b
compat: adjust `wrapadd` for upstream
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4628
diff
changeset
|
738 kwargs['filesadded'] = filesadded |
7b986968700b
compat: adjust `wrapadd` for upstream
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4628
diff
changeset
|
739 if filesremoved is not None: |
7b986968700b
compat: adjust `wrapadd` for upstream
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4628
diff
changeset
|
740 kwargs['filesremoved'] = filesremoved |
2928
6275808e89ef
topic: setup 'topic' value for working ctx
Boris Feld <boris.feld@octobus.net>
parents:
2924
diff
changeset
|
741 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
|
742 date=date, extra=extra, **kwargs) |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
743 |
6117
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
744 def applychangewrap(orig, self): |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
745 orig(self) |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
746 repo = self.repo |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
747 rulectx = repo[self.node] |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
748 |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
749 topic = None |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
750 if util.safehasattr(rulectx, 'topic'): |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
751 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
|
752 _changecurrenttopic(repo, topic) |
6117
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
753 |
a27bdd116761
topic: wrap applychange from histedit to preserve topics
Simon Sapin <simon.sapin@octobus.net>
parents:
6088
diff
changeset
|
754 |
2924
430fb1758d28
topic: use registrar.revsetpredicate to register revset predicate functions
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2923
diff
changeset
|
755 # 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
|
756 revsetpredicate = topicrevset.revsetpredicate |
430fb1758d28
topic: use registrar.revsetpredicate to register revset predicate functions
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2923
diff
changeset
|
757 |
4715
12c8b24757f4
py3: use byte strings for @command registrations
Martin von Zweigbergk <martinvonz@google.com>
parents:
4713
diff
changeset
|
758 @command(b'topics', [ |
12c8b24757f4
py3: use byte strings for @command registrations
Martin von Zweigbergk <martinvonz@google.com>
parents:
4713
diff
changeset
|
759 (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
|
760 (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
|
761 (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
|
762 (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
|
763 (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
|
764 ] + commands.formatteropts, |
4921
a7c01a2a3974
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net>
diff
changeset
|
765 _(b'hg topics [OPTION]... [-r REV]... [TOPIC]'), |
4894
f9743b13de6d
help: categorizing evolve and topic commands
Rodrigo Damazio <rdamazio@google.com>
parents:
4892
diff
changeset
|
766 **compat.helpcategorykwargs('CATEGORY_CHANGE_ORGANIZATION')) |
2991
f4956eb3a456
topics: improve the function signature by accepting arguments as **opts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2990
diff
changeset
|
767 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
|
768 """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
|
769 |
2923
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
770 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
|
771 |
2994
1e8ac0fcd6b7
topics: spell out topics completely in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2993
diff
changeset
|
772 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
|
773 |
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
774 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
|
775 |
2994
1e8ac0fcd6b7
topics: spell out topics completely in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2993
diff
changeset
|
776 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
|
777 |
2923
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
778 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
|
779 |
2994
1e8ac0fcd6b7
topics: spell out topics completely in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2993
diff
changeset
|
780 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
|
781 |
2923
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
782 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
|
783 |
2994
1e8ac0fcd6b7
topics: spell out topics completely in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2993
diff
changeset
|
784 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
|
785 |
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
786 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
|
787 |
2923
8c2d3c474fc6
doc: make paragraphs before example code end with "::" for reST syntax
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
2922
diff
changeset
|
788 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
|
789 |
2993
725b660d9886
topics: show the user who last touched the topic in --age
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2992
diff
changeset
|
790 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
|
791 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
|
792 |
2994
1e8ac0fcd6b7
topics: spell out topics completely in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2993
diff
changeset
|
793 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
|
794 |
2717
ed45a5fb4452
topics: update the help for `hg topics` describing ways to use the command
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2712
diff
changeset
|
795 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
|
796 |
2869
b629874ccaac
topics: allow use a --current when setting a topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2868
diff
changeset
|
797 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
|
798 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
|
799 active topic, you can do: |
2994
1e8ac0fcd6b7
topics: spell out topics completely in help
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2993
diff
changeset
|
800 `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
|
801 |
2011
9c7665e3107b
documentation: some basic update of the documentation
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2008
diff
changeset
|
802 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
|
803 |
2991
f4956eb3a456
topics: improve the function signature by accepting arguments as **opts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2990
diff
changeset
|
804 clear = opts.get('clear') |
f4956eb3a456
topics: improve the function signature by accepting arguments as **opts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2990
diff
changeset
|
805 list = opts.get('list') |
f4956eb3a456
topics: improve the function signature by accepting arguments as **opts
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2990
diff
changeset
|
806 rev = opts.get('rev') |
2867
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
807 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
|
808 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
|
809 |
2867
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
810 if current and 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
|
811 raise error.Abort(_(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
|
812 if current and clear: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
813 raise error.Abort(_(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
|
814 if clear and 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
|
815 raise error.Abort(_(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
|
816 if age and 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
|
817 raise error.Abort(_(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
|
818 |
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
|
819 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
|
820 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
|
821 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
|
822 |
2889
31cbace4c0f1
topics: make sure we have some restrictions on topic names
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2869
diff
changeset
|
823 if topic: |
31cbace4c0f1
topics: make sure we have some restrictions on topic names
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2869
diff
changeset
|
824 topic = topic.strip() |
31cbace4c0f1
topics: make sure we have some restrictions on topic names
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2869
diff
changeset
|
825 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
|
826 raise error.Abort(_(b"topic name cannot consist entirely of whitespaces")) |
2889
31cbace4c0f1
topics: make sure we have some restrictions on topic names
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2869
diff
changeset
|
827 # 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
|
828 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
|
829 |
3667
a346b1641dfa
topic: allow '.' in topic names
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3652
diff
changeset
|
830 rmatch = re.match(br'[-_.\w]+', topic) |
3652
81985b9d3e74
topic-ext: restrict the format of topic names
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3614
diff
changeset
|
831 if not rmatch or rmatch.group(0) != 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
|
832 helptxt = _(b"topic names can only consist of alphanumeric, '-'" |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
833 b" '_' and '.' characters") |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
834 raise error.Abort(_(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
|
835 |
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
|
836 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
|
837 ui.pager(b'topics') |
2643
a9ca94defc29
topics: rename '--change' flag to '--rev' flag
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2642
diff
changeset
|
838 if clear or rev: |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
839 raise error.Abort(_(b"cannot use --clear or --rev with --list")) |
1990
71410fa2c253
stack: extra argument validation logic outside of showstack
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1989
diff
changeset
|
840 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
|
841 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
|
842 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
|
843 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
|
844 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
|
845 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
|
846 |
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
|
847 if touchedrevs: |
1851
67d53e8e0c1a
topic: only require obsolete support for --change
Matt Mackall <mpm@selenic.com>
parents:
1850
diff
changeset
|
848 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
|
849 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
|
850 if clear: |
2e3f63f4a519
topic: further simplify the clear logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2644
diff
changeset
|
851 topic = None |
2869
b629874ccaac
topics: allow use a --current when setting a topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2868
diff
changeset
|
852 elif opts.get('current'): |
b629874ccaac
topics: allow use a --current when setting a topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2868
diff
changeset
|
853 topic = repo.currenttopic |
2645
2e3f63f4a519
topic: further simplify the clear logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2644
diff
changeset
|
854 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
|
855 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
|
856 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
|
857 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
|
858 wl = lock = txn = None |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
859 try: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
860 wl = repo.wlock() |
3124
6ef274e01f64
flake8: rename some ambiguous identifier
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3097
diff
changeset
|
861 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
|
862 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
|
863 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
|
864 txn.close() |
4268
d5a2cc19903f
topics: improve the message around topic changing
Pulkit Goyal <pulkit@yandex-team.ru>
parents:
4253
diff
changeset
|
865 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
|
866 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
|
867 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
|
868 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
|
869 topic)) |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
870 finally: |
3124
6ef274e01f64
flake8: rename some ambiguous identifier
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3097
diff
changeset
|
871 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
|
872 repo.invalidate() |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
873 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
|
874 |
2985
f63c97c01f92
topics/ui: signal when the topics command creates a new (empty) topic
Aurélien Campéas
parents:
2984
diff
changeset
|
875 ct = repo.currenttopic |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
876 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
|
877 if ct: |
4652
b72cd597a887
stack: check if stack is empty more pythonically
Anton Shestakov <av6@dwimlabs.net>
parents:
4647
diff
changeset
|
878 st = stack.stack(repo, topic=ct) |
b72cd597a887
stack: check if stack is empty more pythonically
Anton Shestakov <av6@dwimlabs.net>
parents:
4647
diff
changeset
|
879 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
|
880 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
|
881 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
|
882 |
1860
b7b9e5028c2a
topics: consistently use empty string instead of None
Matt Mackall <mpm@selenic.com>
parents:
1859
diff
changeset
|
883 if topic: |
2985
f63c97c01f92
topics/ui: signal when the topics command creates a new (empty) topic
Aurélien Campéas
parents:
2984
diff
changeset
|
884 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
|
885 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
|
886 % 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
|
887 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
|
888 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
889 ui.pager(b'topics') |
2867
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
890 # `hg topic --current` |
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
891 ret = 0 |
2985
f63c97c01f92
topics/ui: signal when the topics command creates a new (empty) topic
Aurélien Campéas
parents:
2984
diff
changeset
|
892 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
|
893 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
|
894 ret = 1 |
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
895 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
|
896 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
|
897 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
|
898 label = b'topic.active' |
2867
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
899 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
|
900 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
|
901 fm.end() |
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
902 else: |
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
903 _listtopics(ui, repo, opts) |
5c0b6af37b21
topics: add a current flag to display current topic
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2866
diff
changeset
|
904 return ret |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
905 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
906 @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
|
907 (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
|
908 _(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
|
909 ] + commands.formatteropts, |
4894
f9743b13de6d
help: categorizing evolve and topic commands
Rodrigo Damazio <rdamazio@google.com>
parents:
4892
diff
changeset
|
910 _(b'hg stack [TOPIC]'), |
f9743b13de6d
help: categorizing evolve and topic commands
Rodrigo Damazio <rdamazio@google.com>
parents:
4892
diff
changeset
|
911 **compat.helpcategorykwargs('CATEGORY_CHANGE_NAVIGATION')) |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
912 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
|
913 """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
|
914 |
2750
bd3824d1b795
stack: show short node of changesets in `hg stack -v`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2744
diff
changeset
|
915 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
|
916 |
bd3824d1b795
stack: show short node of changesets in `hg stack -v`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2744
diff
changeset
|
917 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
|
918 """ |
1990
71410fa2c253
stack: extra argument validation logic outside of showstack
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1989
diff
changeset
|
919 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
|
920 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
|
921 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
|
922 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
|
923 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
|
924 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
|
925 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
|
926 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
|
927 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
|
928 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
|
929 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
930 @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
|
931 (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
|
932 (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
|
933 ], |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
934 _(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
|
935 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
|
936 """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
|
937 """ |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
938 |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
939 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
|
940 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
|
941 |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
942 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
|
943 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
|
944 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
|
945 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
|
946 |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
947 bmstore = repo._bookmarks |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
948 |
2900
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
949 nodetobook = {} |
4742
db3e7f6b5ceb
py3: switch from iteritems() to items() in the topics extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
4719
diff
changeset
|
950 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
|
951 if nodetobook.get(revnode): |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
952 nodetobook[revnode].append(book) |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
953 else: |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
954 nodetobook[revnode] = [book] |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
955 |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
956 # 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
|
957 # warning repeatedly |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
958 skipped = [] |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
959 |
2908
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
960 actions = {} |
2899
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
961 |
2908
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
962 lock = wlock = tr = None |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
963 try: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
964 wlock = repo.wlock() |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
965 lock = repo.lock() |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
966 if bookmark: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
967 try: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
968 node = bmstore[bookmark] |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
969 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
|
970 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
|
971 |
2908
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
972 revnum = repo[node].rev() |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
973 if len(nodetobook[node]) > 1: |
5922
8bffab1e7c4f
topic: make two almost identical messages actually identical
Anton Shestakov <av6@dwimlabs.net>
parents:
5920
diff
changeset
|
974 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
|
975 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
|
976 return |
2907
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
977 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
|
978 if targetrevs: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
979 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
|
980 |
2908
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
981 elif convertall: |
4742
db3e7f6b5ceb
py3: switch from iteritems() to items() in the topics extension
Martin von Zweigbergk <martinvonz@google.com>
parents:
4719
diff
changeset
|
982 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
|
983 revnum = repo[revnode].rev() |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
984 if revnum in skipped: |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
985 continue |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
986 if len(nodetobook[revnode]) > 1: |
5922
8bffab1e7c4f
topic: make two almost identical messages actually identical
Anton Shestakov <av6@dwimlabs.net>
parents:
5920
diff
changeset
|
987 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
|
988 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
|
989 skipped.append(revnum) |
1928e9c802dd
convertbookmark: add logic to skip revisions with multiple bookmarks
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2899
diff
changeset
|
990 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
|
991 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
|
992 continue |
2907
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
993 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
|
994 if targetrevs: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
995 actions[(bmark, revnum)] = targetrevs |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
996 |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
997 if actions: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
998 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
|
999 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
|
1000 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
|
1001 _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
|
1002 tr.close() |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1003 finally: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1004 tr.release() |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1005 finally: |
95bb27b8918c
convertbookmark: perform all actions at the end
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2907
diff
changeset
|
1006 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
|
1007 |
2906
92566275be77
convertbookmark: extract the revset into a module level constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2905
diff
changeset
|
1008 # 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
|
1009 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
|
1010 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
|
1011 ancestors(bookmark(%s)) |
2909
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1012 and not ancestors( |
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1013 ( |
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1014 (head() and not bookmark(%s)) |
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1015 or (bookmark() - bookmark(%s)) |
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1016 ) - ( |
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1017 descendants(bookmark(%s)) |
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1018 - 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
|
1019 ) |
92566275be77
convertbookmark: extract the revset into a module level constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2905
diff
changeset
|
1020 ) |
92566275be77
convertbookmark: extract the revset into a module level constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2905
diff
changeset
|
1021 ) |
92566275be77
convertbookmark: extract the revset into a module level constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2905
diff
changeset
|
1022 """ |
92566275be77
convertbookmark: extract the revset into a module level constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2905
diff
changeset
|
1023 |
2907
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1024 def _findconvertbmarktopic(repo, bmark): |
3225
28fb347a5bf8
typos: fix typos in several locations
Kyle Lippincott <spectral@google.com>
parents:
3195
diff
changeset
|
1025 """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
|
1026 |
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1027 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
|
1028 """ |
2909
9ce092b17530
convertbookmark: properly convert stacked bookmarks
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2908
diff
changeset
|
1029 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
|
1030 |
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1031 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
|
1032 """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
|
1033 |
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1034 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
|
1035 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
|
1036 |
2907
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1037 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
|
1038 """ |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1039 |
2907
d617128279f6
converbookmark: split target computation from actual update
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2906
diff
changeset
|
1040 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
|
1041 # 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
|
1042 # 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
|
1043 # 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
|
1044 # changeset |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1045 if rewrote == 0: |
32306ee32806
topics: add a new debugconvertbookmark command to convert bookmarks to topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2898
diff
changeset
|
1046 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
|
1047 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
|
1048 rewrote)) |
5721
242a0530823a
cleanup: ensure log and output messages have a '\n' terminator
Matt Harbison <matt_harbison@yahoo.com>
parents:
5689
diff
changeset
|
1049 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
|
1050 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
|
1051 |
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
|
1052 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
|
1053 """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
|
1054 |
9c0b293c2785
topics: move the logic to change or clear current topic into a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2657
diff
changeset
|
1055 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
|
1056 with repo.wlock(): |
4812
67567d7f1174
python3: enforce byte prefix for vfs.open()
Raphaël Gomès <rgomes@octobus.net>
parents:
4807
diff
changeset
|
1057 with repo.vfs.open(b'topic', b'w') as f: |
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
|
1058 f.write(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
|
1059 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
|
1060 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
|
1061 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
|
1062 |
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
|
1063 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
|
1064 """ 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
|
1065 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
|
1066 """ |
2642
92e882a82aaf
topics: factor out the logic to change topic in a new function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2625
diff
changeset
|
1067 rewrote = 0 |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1068 p1 = None |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1069 p2 = None |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1070 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
|
1071 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
|
1072 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
|
1073 |
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
|
1074 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
|
1075 # 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
|
1076 # 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
|
1077 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
|
1078 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
|
1079 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
|
1080 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
|
1081 |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1082 def filectxfn(repo, ctx, path): |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1083 try: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1084 return c[path] |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1085 except error.ManifestLookupError: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1086 return None |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1087 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
|
1088 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
|
1089 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
|
1090 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
|
1091 if oldtopic == newtopic: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1092 continue |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1093 if newtopic is None: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1094 del fixedextra[constants.extrakey] |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1095 else: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1096 fixedextra[constants.extrakey] = newtopic |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1097 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
|
1098 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
|
1099 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
|
1100 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
|
1101 # 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
|
1102 # 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
|
1103 # 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
|
1104 p1 = c.p1().node() |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1105 p2 = c.p2().node() |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1106 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
|
1107 p1 = successors[p1][0] |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1108 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
|
1109 p2 = successors[p2][0] |
3040
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1110 mc = context.memctx(repo, |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1111 (p1, p2), |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1112 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
|
1113 files, |
3040
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1114 filectxfn, |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1115 user=c.user(), |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1116 date=c.date(), |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1117 extra=fixedextra) |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1118 |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1119 # phase handling |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1120 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
|
1121 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
|
1122 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
|
1123 newnode = repo.commitctx(mc) |
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1124 |
3038
103244e34a9c
topics: use scmutil.cleanupnodes to create markers while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3030
diff
changeset
|
1125 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
|
1126 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
|
1127 rewrote += 1 |
3038
103244e34a9c
topics: use scmutil.cleanupnodes to create markers while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3030
diff
changeset
|
1128 |
103244e34a9c
topics: use scmutil.cleanupnodes to create markers while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3030
diff
changeset
|
1129 # 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
|
1130 # 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
|
1131 # 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
|
1132 scmutil.cleanupnodes(repo, successors, b'changetopics') |
3040
a05b6580f71c
topics: handle phase correctly while changing topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3038
diff
changeset
|
1133 |
2850
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1134 # move the working copy too |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1135 wctx = repo[None] |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1136 # 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
|
1137 if len(wctx.parents()) == 1: |
a0d6741d4bb8
topics: take locks and start transaction before calling _changetopics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2831
diff
changeset
|
1138 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
|
1139 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
|
1140 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
|
1141 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
|
1142 |
1975
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1143 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
|
1144 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
|
1145 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
|
1146 namemask = b'%s' |
3060
f43a310c4338
topics: show changesetcount, troubledcount and headscount by default
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3059
diff
changeset
|
1147 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
|
1148 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
|
1149 namemask = b'%%-%is' % maxwidth |
4303
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1150 if opts.get('age'): |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1151 # here we sort by age and topic name |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1152 topicsdata = sorted(_getlasttouched(repo, repo.topics)) |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1153 else: |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1154 # here we sort by topic name only |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1155 topicsdata = ( |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1156 (None, topic, None, None) |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1157 for topic in sorted(repo.topics) |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1158 ) |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1159 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
|
1160 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
|
1161 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
|
1162 label = b'topic' |
1975
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1163 active = (topic == activetopic) |
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1164 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
|
1165 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
|
1166 label = b'topic.active' |
1975
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1167 if not ui.quiet: |
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1168 # 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
|
1169 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
|
1170 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
|
1171 fm.data(active=active) |
3060
f43a310c4338
topics: show changesetcount, troubledcount and headscount by default
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3059
diff
changeset
|
1172 |
3372
4138771105bb
topics: list only topic names in quiet mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3371
diff
changeset
|
1173 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
|
1174 fm.plain(b'\n') |
3372
4138771105bb
topics: list only topic names in quiet mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3371
diff
changeset
|
1175 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
|
1176 fm.plain(b' (') |
4303
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1177 if date: |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1178 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
|
1179 timestr = b'empty and active' |
4303
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1180 else: |
78700a59192a
topic: merge _showlasttouched logic into _listtopics
Anton Shestakov <av6@dwimlabs.net>
parents:
4302
diff
changeset
|
1181 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
|
1182 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
|
1183 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
|
1184 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
|
1185 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
|
1186 fm.plain(b', ') |
3060
f43a310c4338
topics: show changesetcount, troubledcount and headscount by default
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3059
diff
changeset
|
1187 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
|
1188 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
|
1189 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
|
1190 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
|
1191 label=b'topic.list.branches') |
3059
02b220984b01
topics: use stack.stack() instead of stack.stackdata()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3057
diff
changeset
|
1192 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1193 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
|
1194 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
|
1195 label=b'topic.list.changesetcount') |
3060
f43a310c4338
topics: show changesetcount, troubledcount and headscount by default
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3059
diff
changeset
|
1196 |
4581
48521a49a07e
stack: rename troubledcount to unstablecount
Anton Shestakov <av6@dwimlabs.net>
parents:
4574
diff
changeset
|
1197 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
|
1198 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
|
1199 fm.write(b'unstablecount', b'%d unstable', |
4581
48521a49a07e
stack: rename troubledcount to unstablecount
Anton Shestakov <av6@dwimlabs.net>
parents:
4574
diff
changeset
|
1200 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
|
1201 label=b'topic.list.unstablecount') |
3059
02b220984b01
topics: use stack.stack() instead of stack.stackdata()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3057
diff
changeset
|
1202 |
3060
f43a310c4338
topics: show changesetcount, troubledcount and headscount by default
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3059
diff
changeset
|
1203 headcount = len(data.heads) |
f43a310c4338
topics: show changesetcount, troubledcount and headscount by default
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3059
diff
changeset
|
1204 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
|
1205 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
|
1206 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
|
1207 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
|
1208 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
|
1209 |
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
|
1210 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
|
1211 # 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
|
1212 |
02b220984b01
topics: use stack.stack() instead of stack.stackdata()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3057
diff
changeset
|
1213 behindcount = data.behindcount |
02b220984b01
topics: use stack.stack() instead of stack.stackdata()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3057
diff
changeset
|
1214 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
|
1215 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
|
1216 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
|
1217 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
|
1218 label=b'topic.list.behindcount') |
3059
02b220984b01
topics: use stack.stack() instead of stack.stackdata()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3057
diff
changeset
|
1219 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
|
1220 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
|
1221 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
|
1222 _(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
|
1223 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
|
1224 fm.plain(b')\n') |
1975
acbbf7f0751e
topic: add formatter support
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1974
diff
changeset
|
1225 fm.end() |
1974
20fb4195bfc4
topic: extract the code listing all topics
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
1973
diff
changeset
|
1226 |
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
|
1227 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
|
1228 """ |
4302
8e9940f1ae56
topic: simplify _showlasttouched and _getlasttouched (and its data structure)
Anton Shestakov <av6@dwimlabs.net>
parents:
4285
diff
changeset
|
1229 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
|
1230 (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
|
1231 """ |
d39942773163
topics: add a new flag --age which will show last touched time for topics
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2718
diff
changeset
|
1232 curtime = time.time() |
4302
8e9940f1ae56
topic: simplify _showlasttouched and _getlasttouched (and its data structure)
Anton Shestakov <av6@dwimlabs.net>
parents:
4285
diff
changeset
|
1233 for topic in topics: |
8e9940f1ae56
topic: simplify _showlasttouched and _getlasttouched (and its data structure)
Anton Shestakov <av6@dwimlabs.net>
parents:
4285
diff
changeset
|
1234 age = -1 |
2993
725b660d9886
topics: show the user who last touched the topic in --age
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2992
diff
changeset
|
1235 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
|
1236 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
|
1237 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
|
1238 # 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
|
1239 # 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
|
1240 # 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
|
1241 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
|
1242 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
|
1243 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
|
1244 # 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
|
1245 # 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
|
1246 maxtime = rt |
2993
725b660d9886
topics: show the user who last touched the topic in --age
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2992
diff
changeset
|
1247 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
|
1248 # 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
|
1249 # last touch time. |
4942
acc7e27fa5c6
topic: drop compat.getmarkers() and use obsutil.getmarkers() directly
Anton Shestakov <av6@dwimlabs.net>
parents:
4921
diff
changeset
|
1250 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
|
1251 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
|
1252 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
|
1253 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
|
1254 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
|
1255 maxtime = rt |
2993
725b660d9886
topics: show the user who last touched the topic in --age
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2992
diff
changeset
|
1256 |
3371
753e5ebabe7d
topics: take logic to parse username to a separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
3297
diff
changeset
|
1257 username = stack.parseusername(user) |
4302
8e9940f1ae56
topic: simplify _showlasttouched and _getlasttouched (and its data structure)
Anton Shestakov <av6@dwimlabs.net>
parents:
4285
diff
changeset
|
1258 if trevs: |
8e9940f1ae56
topic: simplify _showlasttouched and _getlasttouched (and its data structure)
Anton Shestakov <av6@dwimlabs.net>
parents:
4285
diff
changeset
|
1259 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
|
1260 |
4302
8e9940f1ae56
topic: simplify _showlasttouched and _getlasttouched (and its data structure)
Anton Shestakov <av6@dwimlabs.net>
parents:
4285
diff
changeset
|
1261 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
|
1262 |
1848
9a81657deec2
summary: add topic summary hook
Matt Mackall <mpm@selenic.com>
parents:
1847
diff
changeset
|
1263 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
|
1264 t = getattr(repo, 'currenttopic', b'') |
1848
9a81657deec2
summary: add topic summary hook
Matt Mackall <mpm@selenic.com>
parents:
1847
diff
changeset
|
1265 if not t: |
9a81657deec2
summary: add topic summary hook
Matt Mackall <mpm@selenic.com>
parents:
1847
diff
changeset
|
1266 return |
9a81657deec2
summary: add topic summary hook
Matt Mackall <mpm@selenic.com>
parents:
1847
diff
changeset
|
1267 # 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
|
1268 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
|
1269 |
3022
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
1270 _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
|
1271 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
|
1272 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
|
1273 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
|
1274 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
|
1275 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
|
1276 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
|
1277 ] |
255e66783505
topic: add documentation for the 'topic-mode' option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3021
diff
changeset
|
1278 |
3020
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1279 def _configtopicmode(ui): |
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1280 """ 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
|
1281 """ |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1282 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
|
1283 |
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1284 # 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
|
1285 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
|
1286 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
|
1287 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
|
1288 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
|
1289 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
|
1290 topicmode = _validmode[0] |
3020
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1291 |
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1292 return topicmode |
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1293 |
1850 | 1294 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
|
1295 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
|
1296 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
|
1297 with repo.wlock(): |
3020
361d83261d7a
topic: migrate experimental.enforce-topic to experimental.topic-mode
Boris Feld <boris.feld@octobus.net>
parents:
3014
diff
changeset
|
1298 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
|
1299 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
|
1300 |
89855920fb0f
topicmode: 'enforce' topic mode, no longer warn about untopiced merge
Boris Feld <boris.feld@octobus.net>
parents:
3023
diff
changeset
|
1301 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
|
1302 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
|
1303 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
|
1304 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
|
1305 |
3030
581a6b9d2c8c
test: add support for random-all topic mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3028
diff
changeset
|
1306 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
|
1307 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
|
1308 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
|
1309 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
|
1310 mayrandom = True |
581a6b9d2c8c
test: add support for random-all topic mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3028
diff
changeset
|
1311 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1312 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
|
1313 ismergecommit = False |
e814c553ef32
topic: add a 'enforce-all' mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3024
diff
changeset
|
1314 mayabort = True |
e814c553ef32
topic: add a 'enforce-all' mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3024
diff
changeset
|
1315 maywarn = False |
e814c553ef32
topic: add a 'enforce-all' mode
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3024
diff
changeset
|
1316 |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1317 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
|
1318 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
|
1319 t = opts['topic'] |
4812
67567d7f1174
python3: enforce byte prefix for vfs.open()
Raphaël Gomès <rgomes@octobus.net>
parents:
4807
diff
changeset
|
1320 with repo.vfs.open(b'topic', b'w') as f: |
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
|
1321 f.write(t) |
3097
f06c86fd2ffd
topic: do to check to topic while amending
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3096
diff
changeset
|
1322 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
|
1323 pass |
3024
89855920fb0f
topicmode: 'enforce' topic mode, no longer warn about untopiced merge
Boris Feld <boris.feld@octobus.net>
parents:
3023
diff
changeset
|
1324 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
|
1325 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
|
1326 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
|
1327 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
|
1328 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
|
1329 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
|
1330 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
|
1331 elif notopic and mayrandom: |
4812
67567d7f1174
python3: enforce byte prefix for vfs.open()
Raphaël Gomès <rgomes@octobus.net>
parents:
4807
diff
changeset
|
1332 with repo.vfs.open(b'topic', b'w') as f: |
3028
c2d1f49ac7e2
topicmode: add 'random' topic mode
Boris Feld <boris.feld@octobus.net>
parents:
3027
diff
changeset
|
1333 f.write(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
|
1334 return orig(ui, repo, *args, **opts) |
1850 | 1335 |
1852
3084687f7994
commit: add a topic field to the in-editor commit text
Matt Mackall <mpm@selenic.com>
parents:
1851
diff
changeset
|
1336 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
|
1337 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
|
1338 if hastopicext(repo): |
24662f94d126
topic: only wrap committext for repo with topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4533
diff
changeset
|
1339 t = repo.currenttopic |
24662f94d126
topic: only wrap committext for repo with topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4533
diff
changeset
|
1340 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
|
1341 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
|
1342 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
|
1343 return ret |
3084687f7994
commit: add a topic field to the in-editor commit text
Matt Mackall <mpm@selenic.com>
parents:
1851
diff
changeset
|
1344 |
2983
c0de0010ec30
topic: add a --topic option to "outgoing" command
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
2982
diff
changeset
|
1345 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
|
1346 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
|
1347 topic = opts['topic'] |
60317988f5ae
topic: substitute current topic when `--topic .` is used for outgoing/push
Anton Shestakov <av6@dwimlabs.net>
parents:
5375
diff
changeset
|
1348 if topic == b'.': |
60317988f5ae
topic: substitute current topic when `--topic .` is used for outgoing/push
Anton Shestakov <av6@dwimlabs.net>
parents:
5375
diff
changeset
|
1349 topic = repo.currenttopic |
60317988f5ae
topic: substitute current topic when `--topic .` is used for outgoing/push
Anton Shestakov <av6@dwimlabs.net>
parents:
5375
diff
changeset
|
1350 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
|
1351 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
|
1352 opts.setdefault('rev', []).extend(topicrevs) |
fef934b7ed86
topic: add a --topic option to "push" command
Denis Laxalde <denis.laxalde@logilab.fr>
parents:
2939
diff
changeset
|
1353 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
|
1354 |
1877
69077c65919d
topic: handle merge.update function signature change
Augie Fackler <raf@durin42.com>
parents:
1874
diff
changeset
|
1355 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
|
1356 matcher = kwargs.get('matcher') |
e67c526c0a25
update: calculate 'partial' as core does
Sean Farley <sean@farley.io>
parents:
1963
diff
changeset
|
1357 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
|
1358 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
|
1359 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
|
1360 ist0 = False |
1853
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1361 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
|
1362 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
|
1363 |
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
|
1364 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
|
1365 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
|
1366 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
|
1367 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
|
1368 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
|
1369 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
|
1370 |
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
|
1371 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
|
1372 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
|
1373 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
|
1374 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
|
1375 b = ret.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
|
1376 t = ret.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
|
1377 if t: |
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
|
1378 ret.branch = lambda: b'%s//%s' % (b, t) |
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
|
1379 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
|
1380 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
|
1381 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
|
1382 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
|
1383 |
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
|
1384 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
|
1385 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
|
1386 |
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
|
1387 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
|
1388 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
|
1389 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
|
1390 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
|
1391 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
|
1392 |
4535
8dae14cd076a
topic: only wrap mergeupdate for repo with topic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
4534
diff
changeset
|
1393 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
|
1394 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
|
1395 # 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
|
1396 # 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
|
1397 # 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
|
1398 # 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
|
1399 # running. |
2984
30f6030dca8f
topics: signal to the end user when a topic has been forgotten
Aurélien Campéas
parents:
2983
diff
changeset
|
1400 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
|
1401 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
|
1402 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
|
1403 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
|
1404 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
|
1405 if ((not partial and not branchmerge) or isrebase) and not 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
|
1406 t = b'' |
1853
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1407 pctx = repo[node] |
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1408 if pctx.phase() > phases.public: |
1861
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
1409 t = pctx.topic() |
4812
67567d7f1174
python3: enforce byte prefix for vfs.open()
Raphaël Gomès <rgomes@octobus.net>
parents:
4807
diff
changeset
|
1410 with repo.vfs.open(b'topic', b'w') as f: |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1411 f.write(t) |
1853
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1412 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
|
1413 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
|
1414 if ot and not t: |
4652
b72cd597a887
stack: check if stack is empty more pythonically
Anton Shestakov <av6@dwimlabs.net>
parents:
4647
diff
changeset
|
1415 st = stack.stack(repo, topic=ot) |
b72cd597a887
stack: check if stack is empty more pythonically
Anton Shestakov <av6@dwimlabs.net>
parents:
4647
diff
changeset
|
1416 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
|
1417 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
|
1418 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
|
1419 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
|
1420 return ret |
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1421 finally: |
8db7828751b7
topic: wrap the underlying update function rather than the command
Matt Mackall <mpm@selenic.com>
parents:
1852
diff
changeset
|
1422 wlock.release() |
1839
1bc5e62fc0c7
Initial dumb version of topics.
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
1423 |
2793
fb317d218af0
topic: wrap 'update' in a more flexible way
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2762
diff
changeset
|
1424 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
|
1425 |
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 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
|
1427 configoverride = util.nullcontextmanager() |
848ca807f83a
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5007
diff
changeset
|
1428 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
|
1429 configoverride = repo.ui.configoverride({ |
848ca807f83a
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5007
diff
changeset
|
1430 (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
|
1431 }, source=b'topic-extension') |
848ca807f83a
topic: use ui.configoverride() instead of ui.backupconfig()
Martin von Zweigbergk <martinvonz@google.com>
parents:
5007
diff
changeset
|
1432 with configoverride: |
3614
9ad461df4d4d
compat: keep passing arguments as keyword argument
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3612
diff
changeset
|
1433 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
|
1434 |
1854
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1435 def _fixrebase(loaded): |
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1436 if not loaded: |
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1437 return |
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1438 |
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1439 def savetopic(ctx, extra): |
1861
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
1440 if ctx.topic(): |
972d4e0c3d44
changectx: add topic method
Matt Mackall <mpm@selenic.com>
parents:
1860
diff
changeset
|
1441 extra[constants.extrakey] = ctx.topic() |
1854
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1442 |
2679
5156a67f66a6
topics: update current topic to the topic of newly rebased commit (issue5551)
Pulkit Goyal <7895pulkit@gmail.com>
parents:
2677
diff
changeset
|
1443 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
|
1444 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
|
1445 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
|
1446 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
|
1447 |
3612
33b718191bc9
rebase: update the rebase wrapping to works with hg 4.6
Boris Feld <boris.feld@octobus.net>
parents:
3603
diff
changeset
|
1448 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
|
1449 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
|
1450 |
33b718191bc9
rebase: update the rebase wrapping to works with hg 4.6
Boris Feld <boris.feld@octobus.net>
parents:
3603
diff
changeset
|
1451 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
|
1452 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
|
1453 |
33b718191bc9
rebase: update the rebase wrapping to works with hg 4.6
Boris Feld <boris.feld@octobus.net>
parents:
3603
diff
changeset
|
1454 return runtime |
33b718191bc9
rebase: update the rebase wrapping to works with hg 4.6
Boris Feld <boris.feld@octobus.net>
parents:
3603
diff
changeset
|
1455 |
1969
a604423c1500
compat: tolerate missing rebase extension
timeless@gmail.com
parents:
1966
diff
changeset
|
1456 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
|
1457 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
|
1458 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
|
1459 # 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
|
1460 # 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
|
1461 # 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
|
1462 extensions.wrapcommand(rebase.cmdtable, b'rebase', setrebaseconfig) |
1969
a604423c1500
compat: tolerate missing rebase extension
timeless@gmail.com
parents:
1966
diff
changeset
|
1463 except KeyError: |
a604423c1500
compat: tolerate missing rebase extension
timeless@gmail.com
parents:
1966
diff
changeset
|
1464 pass |
1854
67950fcf1c69
rebase: teach rebase how to copy topics
Matt Mackall <mpm@selenic.com>
parents:
1853
diff
changeset
|
1465 |
1946
72246b13bd72
patch: document the section about import/export
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1945
diff
changeset
|
1466 ## 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
|
1467 |
1866
13fc93fb7fbe
patch: add topic to exported patch
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1863
diff
changeset
|
1468 def _exporttopic(seq, ctx): |
13fc93fb7fbe
patch: add topic to exported patch
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1863
diff
changeset
|
1469 topic = ctx.topic() |
13fc93fb7fbe
patch: add topic to exported patch
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1863
diff
changeset
|
1470 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
|
1471 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
|
1472 return None |
13fc93fb7fbe
patch: add topic to exported patch
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1863
diff
changeset
|
1473 |
1867
c9cacc62fa17
patch: import topic from patch header
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1866
diff
changeset
|
1474 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
|
1475 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
|
1476 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
|
1477 |
1948
54810b543bf4
patch: move setup of import/export logic into a function
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
1947
diff
changeset
|
1478 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
|
1479 """run at ui setup time to install import/export logic""" |
4814
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1480 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
|
1481 cmdutil.extraexportmap[b'topic'] = _exporttopic |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1482 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
|
1483 cmdutil.extrapreimportmap[b'topic'] = _importtopic |
48b30ff742cb
python3: use format-source to run byteify-strings in .py files
Raphaël Gomès <rgomes@octobus.net>
parents:
4812
diff
changeset
|
1484 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
|
1485 |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1486 ## preserve topic during split |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1487 |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1488 def presplitupdatetopic(original, repo, ui, prev, ctx): |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1489 # Save topic of revision |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1490 topic = None |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1491 if util.safehasattr(ctx, 'topic'): |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1492 topic = ctx.topic() |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1493 |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1494 # Update the working directory |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1495 original(repo, ui, prev, ctx) |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1496 |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1497 # Restore the topic if need |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1498 if topic: |
e7079bba383d
topic: makes split keep the topic
Boris Feld <boris.feld@octobus.net>
parents:
2665
diff
changeset
|
1499 _changecurrenttopic(repo, topic) |