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