Wed, 30 Mar 2016 23:04:58 -0400
drop ri, add vim-asciidoc
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1 | """commands to support generalized Driessen's branching model |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3 | # License GPL 2.0 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
4 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
5 | # hgflow.py - Mercurial extension to support generalized Driessen's branching model |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
6 | # Copyright (C) 2011-2014, Yujie Wu and others |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
7 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
8 | # This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
9 | # as published by the Free Software Foundation; either version 2 of the License or any later version. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
10 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
11 | # This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
12 | # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
13 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
14 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
15 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
16 | import os |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
17 | import sys |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
18 | import copy |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
19 | import difflib |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
20 | import mercurial |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
21 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
22 | from mercurial import util, extensions, error, config |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
23 | from mercurial.node import short |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
24 | from mercurial.i18n import _ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
25 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
26 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
27 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
28 | ############################################################################################################################### |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
29 | # Let's use 128 char width. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
30 | # It is silly to stick to the 80-char rule. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
31 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
32 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
33 | # Terminologies <== Read before you got confused |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
34 | # - branch type |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
35 | # We distinguish the following types of branches: master, develop, feature, release, hotfix, support. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
36 | # We should assume any branch is of one of these types. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
37 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
38 | # - stream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
39 | # The entire set of branches of the same type. Stream is not branch, it is a set. Stream is not a type, it is a set. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
40 | # Stream is a set of branches. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
41 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
42 | # - substream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
43 | # A subset of branches in a stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
44 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
45 | # - trunk |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
46 | # Trunk is a special branch. A stream can optionally have a trunk, but only one trunk at most. For example, master and |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
47 | # develop streams each has a trunk, whereas feature, release, hotfix, and support streams don't. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
48 | # If a stream has a trunk, all branches in the stream normally should diverge from the trunk and later merge to the trunk |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
49 | # when the branches are closed. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
50 | # Trunk is a relative concept. A trunk of a stream may be a regular branch of another stream. (The former stream will be |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
51 | # a substream of the latter.) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
52 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
53 | # - source |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
54 | # Source is an attribute of stream. The source of a stream refers to the parent stream where branches in the current stream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
55 | # are created from. Most commonly, source of a stream is the stream itself. But this is not always the case, for example, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
56 | # the sources of release and feature streams are the develop stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
57 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
58 | # - destin |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
59 | # Destin is another attribute of stream. The destin of a stream refers to the stream(s) where branches in the current |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
60 | # stream will merge to. Most commonly, destin of a stream is the stream itself. But this is not always the case, for |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
61 | # example, the destin of release is the develop and the master streams. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
62 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
63 | # - branch name |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
64 | # Use this term carefully since it is potentially ambiguious. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
65 | # Try using this term to refer to fullname (see below). |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
66 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
67 | # - fullname |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
68 | # Branch name as recognized by the SCM, e.g., feature/enhance_log. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
69 | # Prefer this term to 'branch name'. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
70 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
71 | # - basename |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
72 | # Branch name recognized by flow, but not necessarily by SCM, e.g., enhanced_log (with prefix 'feature/' dropped). |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
73 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
74 | # - name |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
75 | # Use this term carefully since it is potentially ambiguious. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
76 | # This term should be a synonym of basename (see above). Try using it only as place holders, such as |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
77 | # <hotfix-prefix>/<name>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
78 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
79 | # - flow action |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
80 | # Refer to action on a specified stream, e.g., hg flow feature start, where 'start' is an action. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
81 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
82 | # - flow command |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
83 | # Refer to other actions than those on a stream, e.g., hg flow unshelve, where 'unshelve' is a command. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
84 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
85 | # - hg command |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
86 | # Refer to command not from flow extension. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
87 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
88 | # - workflow |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
89 | # Refer to the process of executing a sequence of hg commands. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
90 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
91 | # - history |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
92 | # Refer to a sequence of hg commands that has been executed. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
93 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
94 | # Notations |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
95 | # - <stream> |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
96 | # Examples: <feature>, <hotfix>. These denote the corresponding streams. When you refer to a stream, e.g., feature stream, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
97 | # use '<feature>' (or more verbosely 'feature stream'), instead of '<feature> stream', because '<feature>' already means |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
98 | # stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
99 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
100 | # - <stream> branch |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
101 | # Example: a <feature> branch. This phrase refers a branch in <feature>. Do not use 'a feature branch' to mean a branch in |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
102 | # <feature> because the word 'feature' there should take its usual meaning as in English, which doesn't necessarily mean |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
103 | # the feature stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
104 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
105 | # - `text` |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
106 | # Example, `hg flow feature start <name>`. The text wrapped by the ` (apostrophe) symbols should be a piece of code or |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
107 | # shell command, which could contain placeholders to be replaced by actual values. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
108 | # |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
109 | # - 'text' or "text" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
110 | # Refer to an exact string. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
111 | ############################################################################################################################### |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
112 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
113 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
114 | |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
115 | VERSION = "0.9.8" |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
116 | CONFIG_BASENAME = ".hgflow" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
117 | OLD_CONFIG_BASENAME = ".flow" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
118 | CONFIG_SECTION_BRANCHNAME = "branchname" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
119 | STRIP_CHARS = '\'"' |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
120 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
121 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
122 | colortable = {"flow.error" : "red bold", |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
123 | "flow.warn" : "magenta bold", |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
124 | "flow.note" : "cyan", |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
125 | "flow.help.topic" : "yellow", |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
126 | "flow.help.code" : "green bold", |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
127 | } |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
128 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
129 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
130 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
131 | def _print( ui, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
132 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
133 | Customized print function |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
134 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
135 | This function prints messages with the prefix: C{flow: }. Multiple messages can be printed in one call. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
136 | See I{Example I} below. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
137 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
138 | @type ui: C{mercurial.ui} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
139 | @param ui: Mercurial user interface object |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
140 | @type warning: C{bool} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
141 | @param warning: If set to true, messages will be written to C{stderr} using the C{ui.warn} function. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
142 | @type note: C{bool} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
143 | @param note: If set to true, messages will be written to C{stdout} using the C{ui.note} function. The messages will be |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
144 | visible only when user turns on C{--verbose}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
145 | By default, both L{warning} and L{note} are set to false, and messages will be written to C{stdout}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
146 | @type prefix: C{None} or C{str} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
147 | @param prefix: Add a customized prefix before every message. See I{Example II}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
148 | @type newline: C{bool} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
149 | @param newline: If set to false, each message will be written without newline suffix. Default value is true. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
150 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
151 | I{Example I}: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
152 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
153 | >>> _print( ui, "message1", "message2" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
154 | flow: message1 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
155 | flow: message2 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
156 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
157 | I{Example II}: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
158 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
159 | >>> _print( ui, "message1", "message2", prefix = "warning: " ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
160 | flow: warning: message1 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
161 | flow: warning: message2 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
162 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
163 | I{Example III}: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
164 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
165 | >>> _print( ui, "message1", "message2", inline = False ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
166 | flow: message1message2 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
167 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
168 | printer = ui.warn if (kwarg.get( "warning" )) else (ui.note if (kwarg.get( "note" )) else ui.write) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
169 | indent = kwarg.get( "indent", "" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
170 | prefix = kwarg.get( "prefix", "" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
171 | newline = kwarg.get( "newline" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
172 | newline = "\n" if (newline or newline is None) else "" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
173 | for e in arg : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
174 | printer( ui.config( "flow", "prefix", "flow: " ).strip( STRIP_CHARS ) + prefix + indent ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
175 | printer( e + newline, label = kwarg.get( "label", "" ) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
176 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
177 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
178 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
179 | def _warn( ui, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
180 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
181 | Print messages to C{stderr}. Each message will be prefixed with C{flow: warning: }. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
182 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
183 | This function is a thin wrapper of L{_print}. See document of the later for usage detail. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
184 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
185 | Customized prefix will be appended after C{flow: warning: }. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
186 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
187 | I{Example}: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
188 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
189 | >>> _warn( ui, "message1", "message2", prefix = "prefix_" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
190 | flow: warning: prefix_message1 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
191 | flow: warning: prefix_message2 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
192 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
193 | kwarg["warn" ] = True |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
194 | kwarg["label" ] = kwarg.get( "label", "flow.warn" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
195 | kwarg["prefix"] = "warning: " + kwarg.get( "prefix", "" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
196 | _print( ui, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
197 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
198 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
199 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
200 | def _error( ui, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
201 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
202 | Print messages to C{stderr}. Each message will be prefixed with C{flow: error: }. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
203 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
204 | This function is a thin wrapper of L{_print}. See document of the later for usage detail. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
205 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
206 | Customized prefix will be appended after C{flow: error: }. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
207 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
208 | I{Example}: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
209 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
210 | >>> _error( ui, "message1", "message2", prefix = "prefix_" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
211 | flow: error: prefix_message1 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
212 | flow: error: prefix_message2 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
213 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
214 | kwarg["warn" ] = True |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
215 | kwarg["label" ] = kwarg.get( "label", "flow.error" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
216 | kwarg["prefix"] = "error: " + kwarg.get( "prefix", "" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
217 | _print( ui, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
218 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
219 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
220 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
221 | def _note( ui, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
222 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
223 | Print messages to C{stout}. Each message will be prefixed with C{flow: note: }. The messages will be displayed only when |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
224 | user turns on C{--verbose}. If you want to print message without C{--verbose}, include an argument C{via_quiet = True} in |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
225 | the call to this function. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
226 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
227 | This function is a thin wrapper of L{_print}. See document of the later for usage detail. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
228 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
229 | Customized prefix will be appended after C{flow: note: }. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
230 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
231 | I{Example}: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
232 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
233 | >>> _note( ui, "message1", "message2", prefix = "prefix_" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
234 | flow: note: prefix_message1 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
235 | flow: note: prefix_message2 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
236 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
237 | if (kwarg.get( "via_quiet")) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
238 | kwarg["note"] = not kwarg["via_quiet"] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
239 | del kwarg["via_quiet"] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
240 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
241 | kwarg["note"] = True |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
242 | kwarg["label" ] = kwarg.get( "label", "flow.note" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
243 | kwarg["prefix"] = "note: " + kwarg.get( "prefix", "" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
244 | _print( ui, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
245 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
246 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
247 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
248 | class AbortFlow( Exception ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
249 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
250 | Throw an instance of this exception whenever we have to abort the flow command. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
251 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
252 | def __init__( self, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
253 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
254 | Accept one or more error messages in C{str} as the arguments. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
255 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
256 | Exception.__init__( self, "Aborted hg flow command." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
257 | self._msg = arg |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
258 | for k in kwarg : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
259 | self.__dict__[k] = kwarg[k] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
260 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
261 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
262 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
263 | def error_message( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
264 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
265 | Returns a list of error messages in C{str}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
266 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
267 | return self._msg |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
268 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
269 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
270 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
271 | class AbnormalStream( Exception ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
272 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
273 | Throw an instance of this exception if the stream does not belong to any one of C{<master>}, C{<develop>}, C{<feature>}, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
274 | C{<release>}, C{<hotfix>}, and C{<support>}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
275 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
276 | def __init__( self, message = "", stream = None ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
277 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
278 | Accept one error message. You can also pass the C{Stream} object, which can be retrieved later via the C{stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
279 | method. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
280 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
281 | Exception.__init__( self, message ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
282 | self._stream = stream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
283 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
284 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
285 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
286 | def stream( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
287 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
288 | Return the C{Stream} object. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
289 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
290 | return self._stream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
291 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
292 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
293 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
294 | class Commands( object ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
295 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
296 | Wrapper class of C{mercurial.commands} with ability of recording command history. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
297 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
298 | I{Example:} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
299 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
300 | >>> commands = Commands() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
301 | >>> commands.commit( ui, repo, ... ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
302 | >>> commands.update( ui, repo, ... ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
303 | >>> commands.print_history() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
304 | flow: note: Hg command history: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
305 | flow: note: hg commit --message "flow: Closed release 0.7." --close_branch |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
306 | flow: note: hg update default |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
307 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
308 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
309 | def __init__( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
310 | self.ui = None |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
311 | self._cmd = None |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
312 | self._cmd_history = [] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
313 | self._via_quiet = False |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
314 | self._dryrun = False |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
315 | self._common_opts = {} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
316 | self._opt_mutator = {} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
317 | |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
318 | self.reg_option_mutator( "strip", lambda opts : dict( {"rev" : [],}, **opts ) ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
319 | self.reg_option_mutator( "graft", lambda opts : dict( {"rev" : [], "continue" : False,}, **opts ) ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
320 | self.reg_option_mutator( "log", lambda opts : dict( {"date" : None, "user" : None, "rev" : None,}, **opts ) ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
321 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
322 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
323 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
324 | def __getattr__( self, name ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
325 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
326 | Typical invocation of mercurial commands is in the form: commands.name( ... ). |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
327 | We only need to save the command name here, leaving execution of the command to the L{__call__} function. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
328 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
329 | if (name[0] != "_") : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
330 | self._cmd = name |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
331 | return self |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
332 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
333 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
334 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
335 | def __call__( self, ui, repo, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
336 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
337 | Invoke the mercurial command and save it as a string into the history. |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
338 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
339 | @raise AbortFlow: Throw exception if the return code of hg command (except C{commit} and C{rebase}) is nonzero. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
340 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
341 | self.ui = ui |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
342 | cmd_str = "hg " + (self._cmd[:-1] if (self._cmd[-1] == "_") else self._cmd) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
343 | arg = self._branch2str( arg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
344 | kwarg = self._branch2str( kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
345 | cmd = self._cmd |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
346 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
347 | if (cmd[0] == "q") : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
348 | where = extensions.find( "mq" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
349 | cmd = cmd[1:] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
350 | elif (cmd == "strip" ) : where = extensions.find( "mq" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
351 | elif (cmd == "rebase") : where = extensions.find( "rebase" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
352 | else : where = mercurial.commands |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
353 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
354 | kwarg = self._mutate_options( where, self._cmd, kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
355 | |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
356 | for key, value in sorted( kwarg.items(), reverse = True ) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
357 | if (value in [None, "", False]) : |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
358 | continue |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
359 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
360 | # If the command is `hg commit --message <commit-hint> --force-editor [other-options...]`, we will drop the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
361 | # `--message <commit-hint> --force-editor` part from the command string because `--force-editor` is not a command |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
362 | # option (it avails only programmatically). |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
363 | if (cmd == "commit" and (key in ["message", "force_editor",]) and "force_editor" in kwarg) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
364 | continue |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
365 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
366 | new_key = "" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
367 | for e in key : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
368 | new_key += "-" if (e == "_") else e |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
369 | key = new_key |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
370 | value = [self._add_quotes( e ) for e in value] if (isinstance( value, list )) else self._add_quotes( value ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
371 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
372 | if (isinstance( value, bool )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
373 | cmd_str = "%s --%s" % (cmd_str, key,) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
374 | elif (isinstance( value, list )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
375 | for e in value : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
376 | cmd_str = "%s --%s %s" % (cmd_str, key, str( e ),) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
377 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
378 | cmd_str = "%s --%s %s" % (cmd_str, key, str( value ),) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
379 | for e in arg : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
380 | cmd_str = '%s %s ' % (cmd_str, self._add_quotes( str( e ) ),) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
381 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
382 | self._cmd_history.append( cmd_str ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
383 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
384 | if (self._dryrun) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
385 | return |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
386 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
387 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
388 | # Ever since 2.8 the "strip" command has been moved out of the "mq" module to a new module of its own. Issue#56 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
389 | if ("strip" == cmd) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
390 | from mercurial import __version__ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
391 | if (__version__.version > "2.8") : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
392 | where = extensions.find( "strip" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
393 | cmd = "stripcmd" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
394 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
395 | ret = None |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
396 | ret = getattr( where, cmd )( ui, repo, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
397 | except Exception, e : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
398 | raise AbortFlow( "Hg command failed: %s" % cmd_str, "abort: %s\n" % str( e ), traceback = sys.exc_info() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
399 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
400 | if (ret and cmd not in ["commit", "rebase",]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
401 | # We have to make some exceptions, where nonzero return codes don't mean error. Issue#55 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
402 | if ((ret, cmd,) not in [(1, "push",),]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
403 | raise AbortFlow( "Hg command failed: %s" % cmd_str, "abort: Nonzero return code from hg command\n" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
404 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
405 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
406 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
407 | def _add_quotes( self, value ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
408 | """ |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
409 | If C{value} is a string that contains space, slash, double quote, and parenthesis (viz: '(' or ')'), wrap it with |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
410 | double quotes and properly escape the double-quotes and slashes within, and finally return the modified string. |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
411 | Otherwise, return the value as is. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
412 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
413 | if (isinstance( value, str ) and (1 in [c in value for c in " ()\\\""])) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
414 | new_value = "" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
415 | for c in value : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
416 | if (c == "\\") : new_value += "\\\\" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
417 | elif (c == '"' ) : new_value += "\"" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
418 | else : new_value += c |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
419 | value = '"%s"' % new_value |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
420 | return value |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
421 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
422 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
423 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
424 | def _branch2str( self, value ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
425 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
426 | If C{value} is a C{Branch} object, return its fullname (C{str}); if it is not, return the object itself. Do this |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
427 | recursively if C{value} is a C{tuple}, or C{list}, or C{dict} object. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
428 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
429 | if (isinstance( value, Branch )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
430 | return value.fullname() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
431 | if (isinstance( value, (list, tuple,) )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
432 | new_value = [] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
433 | for e in value : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
434 | new_value.append( self._branch2str( e ) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
435 | return new_value |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
436 | if (isinstance( value, dict )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
437 | new_value = {} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
438 | for k, v in value.items() : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
439 | new_value[k] = self._branch2str( v ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
440 | return new_value |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
441 | return value |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
442 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
443 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
444 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
445 | def _filter_common_options( self, where, cmd ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
446 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
447 | If any common options are valid options of the command, return these options. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
448 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
449 | @type where: module |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
450 | @param where: Should be `mercurial.commands', or a Mercurial's plugin object. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
451 | @type cmd : C{str} |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
452 | @param cmd : Mercurial command name |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
453 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
454 | ret = {} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
455 | if (self._common_opts != {}) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
456 | if (cmd[-1] == "_") : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
457 | cmd = cmd[:-1] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
458 | junk, table = mercurial.cmdutil.findcmd( cmd, where.table if hasattr( where, "table" ) else where.cmdtable ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
459 | opts = [e[1] for e in table[1]] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
460 | for e in self._common_opts : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
461 | if (e in opts) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
462 | ret[e] = self._common_opts[e] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
463 | return ret |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
464 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
465 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
466 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
467 | def _mutate_options( self, where, cmd, opts ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
468 | """ |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
469 | Call the registered command option mutator for the command and return the modified command options. |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
470 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
471 | @type where: module |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
472 | @param where: Should be `mercurial.commands', or a Mercurial's plugin object. |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
473 | @type cmd : C{str} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
474 | @param cmd : Mercurial command name |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
475 | @type opts : C{dict} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
476 | @param opts : Original command options |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
477 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
478 | @rtype: C{dict} |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
479 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
480 | common_opts = self._filter_common_options( where, cmd ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
481 | common_opts.update( opts ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
482 | opts = common_opts |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
483 | mutator = self._opt_mutator.get( cmd ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
484 | if (mutator) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
485 | opts = mutator( opts ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
486 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
487 | return opts |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
488 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
489 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
490 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
491 | def use_quiet_channel( self, via_quiet = True ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
492 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
493 | Print the history to the I{quiet} channel, where text will be displayed even when user does not specify the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
494 | C{--verbose} option. |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
495 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
496 | @type via_quiet: C{bool} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
497 | @param via_quiet: To turn off using the "quiet" channel for history printing, you can call this function like: |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
498 | C{use_quiet_channel( False )}. |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
499 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
500 | self._via_quiet = via_quiet |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
501 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
502 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
503 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
504 | def use_verbose_channel( self, via_verbose = True ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
505 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
506 | Print the history to the I{verbose} channel, where text will be display only when user specify the C{--verbose} option. |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
507 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
508 | @type via_verbose: C{bool} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
509 | @param via_verbose: To turn off using the "verbose" channel for history printing (you will be using the "quiet" |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
510 | channel instead), you can call this function like: C{use_verbose_channel( False )}. |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
511 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
512 | self._via_quiet = not via_verbose |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
513 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
514 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
515 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
516 | def reg_common_options( self, opts ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
517 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
518 | Register common options. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
519 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
520 | @type opts: C{dict} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
521 | @param opts: Common options. Key = option's flag, value = option's value. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
522 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
523 | self._common_opts.update( opts ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
524 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
525 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
526 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
527 | def reg_option_mutator( self, cmd, mutator ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
528 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
529 | Register common options. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
530 | |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
531 | @type cmd : C{str} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
532 | @param cmd : Mercurial command name |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
533 | @type mutator: Callable object |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
534 | @param mutator: It will take a C{dict} object as its argument and return another C{dict} object that is supposed to be |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
535 | a mutant of the former. The input object is supposed to be the original hg-command options in form of |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
536 | key-value pairs. |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
537 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
538 | self._opt_mutator[cmd] = mutator |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
539 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
540 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
541 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
542 | def dryrun( self, switch = None ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
543 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
544 | Switch the dry-run mode. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
545 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
546 | @type switch: C{boolean} or C{None} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
547 | @param switch: Switch on dry-run mode if C{switch = True}, off if C{switch = False}. If C{switch} is C{None}, just |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
548 | return the current state of dry-run mode. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
549 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
550 | if (switch is None) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
551 | return self._dryrun |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
552 | self._dryrun = switch |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
553 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
554 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
555 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
556 | def print_history( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
557 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
558 | Print the command history using the L{_note} function. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
559 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
560 | if (self.ui) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
561 | _note( self.ui, "Hg command history:", via_quiet = self._via_quiet ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
562 | for e in self._cmd_history : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
563 | _note( self.ui, e, prefix = " ", via_quiet = self._via_quiet ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
564 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
565 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
566 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
567 | class Stream( object ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
568 | @staticmethod |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
569 | def gen( ui, repo, name, check = False ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
570 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
571 | Given the name of a stream, return a C{Stream} object. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
572 | If the name is that of one of the standard streams: master, develop, feature, release, hotfix, and support, return the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
573 | same object as in C{STREAM}. If not, create and return a new C{stream} object. If the new object is not in the standard |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
574 | streams, an C{AbnormalStream} exception will be thrown. One can catch the exception and call its C{stream} method to |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
575 | get the object. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
576 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
577 | @type name : C{str} |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
578 | @param name : Name of the stream. It can be a complex stream name, e.g., "develop/spring:release". |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
579 | @type check: C{boolean} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
580 | @param check: If true and the stream is not a standard one, the function will check if the trunk of the stream exists |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
581 | or not and (if exists) open or not. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
582 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
583 | @raise AbortFlow : When C{check} is true and the trunk of the stream doesn't exist or is closed |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
584 | @raise AbnormalStream: When the stream is not in any of the standard streams |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
585 | """ |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
586 | source = None |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
587 | tokens = name.split( ':' ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
588 | n = len( tokens ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
589 | if (n == 2) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
590 | source, name = tokens[0], tokens[1] |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
591 | if (n > 2 or not name) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
592 | raise AbortFlow( "Invalid stream syntax: '%s'" % stream ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
593 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
594 | for e in STREAM.values() : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
595 | if (name == e.name()) : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
596 | if (source) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
597 | stream = copy.copy( e ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
598 | break |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
599 | else : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
600 | return e |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
601 | else : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
602 | rootstream_name = name.split( '/', 1 )[0] |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
603 | is_normalstream = True |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
604 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
605 | if (rootstream_name in STREAM) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
606 | trunk = name.replace( rootstream_name + '/', STREAM[rootstream_name].prefix(), 1 ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
607 | stream = Stream( ui, repo, name, trunk = trunk ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
608 | else : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
609 | stream = Stream( ui, repo, name, trunk = name ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
610 | is_normalstream = False |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
611 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
612 | if (check) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
613 | try : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
614 | trunk = stream.trunk() |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
615 | except error.RepoLookupError , e : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
616 | misspelling = difflib.get_close_matches( stream.name(), STREAM.keys(), 3, 0.7 ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
617 | note = "Did you mean: %s?" % " or ".join( misspelling ) if (misspelling) else None |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
618 | raise AbortFlow( "Stream not found: %s" % stream, note = note ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
619 | if (trunk.is_closed()) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
620 | raise AbortFlow( "%s has been closed." % stream ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
621 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
622 | # It seems we never really mind abnormal streams. So comment this out. |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
623 | #if (not is_normalstream) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
624 | # raise AbnormalStream( stream = Stream( ui, repo, name ) ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
625 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
626 | if (source) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
627 | source = Stream.gen( ui, repo, source, check = True ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
628 | stream = copy.copy( stream ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
629 | stream._source = source |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
630 | for i, e in enumerate( stream.destin() ) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
631 | if (source in e) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
632 | stream._destin[i] = source |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
633 | break |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
634 | else : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
635 | stream._destin = [source] |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
636 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
637 | return stream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
638 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
639 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
640 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
641 | def __init__( self, ui, repo, name, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
642 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
643 | Create a new C{Stream} object. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
644 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
645 | @type name : C{str} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
646 | @param name : Name of the new stream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
647 | @type trunk : C{str} or C{None} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
648 | @param trunk : Fullname of the trunk of the stream, or C{None} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
649 | @type prefix: C{str} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
650 | @param prefix: Name prefix of branches in this stream. If not specified, it will default to C{trunk + '/'} (if C{trunk} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
651 | is not C{None}), or C{name + '/'} if (C{trunk} is C{None}). |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
652 | @type source: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
653 | @param source: Stream where branches in this stream will be created from |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
654 | @type destin: C{list} of C{Stream} objects |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
655 | @param destin: Streams where branches in this stream will merge to when being finished |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
656 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
657 | self.ui = ui |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
658 | self.repo = repo |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
659 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
660 | self._name = name |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
661 | self._trunk = kwarg.get( "trunk" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
662 | self._prefix = kwarg.get( "prefix" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
663 | self._source = kwarg.get( "source", self ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
664 | self._destin = kwarg.get( "destin", [self._source,] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
665 | self._tcache = None # Caches `Branch' object of the trunk because construction of a `Branch' object is very slow. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
666 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
667 | if (self._prefix is None) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
668 | if (self._trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
669 | self._prefix = self._trunk + '/' |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
670 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
671 | self._prefix = self._name + '/' |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
672 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
673 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
674 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
675 | def __str__( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
676 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
677 | Return a string: '<stream-name>'. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
678 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
679 | return "<%s>" % self._name |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
680 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
681 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
682 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
683 | def __cmp__( self, rhs ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
684 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
685 | Compare streams by comparing their names as strings. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
686 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
687 | lhs = self._name |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
688 | rhs = rhs ._name |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
689 | return -1 if (lhs < rhs) else (1 if (lhs > rhs) else 0) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
690 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
691 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
692 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
693 | def __contains__( self, stranch ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
694 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
695 | Return true if the C{stanch} is in this stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
696 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
697 | @type stranch: C{Stream} or C{Branch} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
698 | @param srranch: Stream or branch which you want to test if it is in this stream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
699 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
700 | if (isinstance( stranch, Branch )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
701 | if (stranch._fullname == self._trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
702 | return True |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
703 | return stranch._fullname.startswith( self.prefix() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
704 | elif (isinstance( stranch, Stream )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
705 | return stranch.prefix().startswith( self.prefix() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
706 | return str( stranch ).startswith( self.prefix() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
707 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
708 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
709 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
710 | def name( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
711 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
712 | Return the name of this stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
713 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
714 | return self._name |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
715 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
716 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
717 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
718 | def trunk( self, trace = False ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
719 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
720 | Return the trunk of this stream. If it has no trunk, return C{None} or the trunk of the source stream depending on the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
721 | C{trace} parameter. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
722 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
723 | @type trace: C{boolean} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
724 | @param trace: If true and this stream has no trunk, return the trunk of the source stream, and do this recursively |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
725 | until a trunk is found. If false and this stream has no trunk, this function will return C{None}. |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
726 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
727 | @return: A C{Branch} object or C{None} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
728 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
729 | if (self._tcache) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
730 | return self._tcache |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
731 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
732 | trunk = Branch( self.ui, self.repo, self._trunk ) if (self._trunk) else None |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
733 | if (not trunk and trace) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
734 | return self.source().trunk( True ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
735 | self._tcache = trunk |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
736 | return trunk |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
737 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
738 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
739 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
740 | def prefix( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
741 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
742 | Return the branch name prefix of this stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
743 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
744 | @return: C{str} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
745 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
746 | return self._prefix |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
747 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
748 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
749 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
750 | def source( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
751 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
752 | Return the source stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
753 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
754 | @return: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
755 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
756 | return self._source |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
757 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
758 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
759 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
760 | def destin( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
761 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
762 | Return a list of streams where branches in this stream will merge to when finished. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
763 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
764 | @return: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
765 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
766 | return self._destin |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
767 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
768 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
769 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
770 | def get_fullname( self, branch_basename ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
771 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
772 | Return the fullname of a branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
773 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
774 | @type branch_basename: C{str} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
775 | @param branch_basename: Basename of a branch in this stream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
776 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
777 | @return: C{str} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
778 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
779 | return self._prefix + branch_basename |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
780 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
781 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
782 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
783 | def get_branch( self, branch_basename ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
784 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
785 | Create and return a new C{Branch} object with the given basename. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
786 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
787 | @type branch_basename: C{str} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
788 | @param branch_basename: Basename of a branch in this stream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
789 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
790 | @return: C{Branch} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
791 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
792 | return Branch( self.ui, self.repo, self.get_fullname( branch_basename ) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
793 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
794 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
795 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
796 | def branches( self, openclosed = "open" ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
797 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
798 | Return a list of branches in this stream. The list does not include the trunk. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
799 | The returned list is sorted per branch name. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
800 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
801 | @type openclosed: C{str}, must be one of "open", "closed", and "all". |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
802 | @param openclosed: If the value is C{"open"}, return all open branches in this stream; if C{"closed"}, return all |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
803 | closed branches in this stream; if C{"all"}, returns all open and closed branches in this stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
804 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
805 | if (openclosed not in ["open", "closed", "all",]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
806 | raise ValueError( "Invalid value for `openclosed` parameter: %s" % openclosed ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
807 | |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
808 | all_branches = [] |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
809 | if (openclosed == "open") : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
810 | for branch_fullname, heads in self.repo.branchmap().items() : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
811 | all_branches += [Branch( self.ui, self.repo, head ) for head in heads |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
812 | if (not self.repo[head].extra().get( "close", False ))] |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
813 | elif (openclosed == "closed") : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
814 | for branch_fullname, heads in self.repo.branchmap().items() : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
815 | all_branches += [Branch( self.ui, self.repo, head ) for head in heads |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
816 | if (self.repo[head].extra().get( "close", False ))] |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
817 | else : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
818 | for branch_fullname, heads in self.repo.branchmap().items() : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
819 | all_branches += [Branch( self.ui, self.repo, head ) for head in heads] |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
820 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
821 | return sorted( [e for e in all_branches if (e in self)] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
822 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
823 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
824 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
825 | class Branch( object ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
826 | def __init__( self, ui, repo, rev = None ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
827 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
828 | Create a C{Branch} object with the given C{rev}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
829 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
830 | self.ui = ui |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
831 | self.repo = repo |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
832 | self.ctx = repo[rev] # `repo[rev]' is slow when there are tens of thousands of named branches. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
833 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
834 | self._fullname = str( self.ctx.branch() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
835 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
836 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
837 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
838 | def __str__( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
839 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
840 | Return the fullname of this branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
841 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
842 | return self._fullname |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
843 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
844 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
845 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
846 | def __cmp__( self, rhs ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
847 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
848 | Compare two C{Branch} object by comparing their fullnames. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
849 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
850 | if (rhs is None) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
851 | return 1 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
852 | lhs = self._fullname |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
853 | rhs = rhs ._fullname |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
854 | return -1 if (lhs < rhs) else (1 if (lhs > rhs) else 0) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
855 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
856 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
857 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
858 | def fullname( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
859 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
860 | Return the fullname of this branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
861 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
862 | return self._fullname |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
863 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
864 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
865 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
866 | def basename( self, stream = None, should_quote = False ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
867 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
868 | Return the basename relative to the C{stream}. If C{stream} is C{None}, return the shortest possible basename (will |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
869 | not contain any '/'s). |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
870 | Return the string "trunk" if this branch is the trunk of the C{stream}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
871 | |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
872 | @type stream: C{Stream} or C{None} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
873 | @param stream: Stream to which the basename is relative |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
874 | @type should_quote: C{bool} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
875 | @param should_quote: The returned string will be wrapped with single quotes ' if this parameter's value is true. |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
876 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
877 | if (stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
878 | if (self._fullname == stream._trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
879 | return "trunk" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
880 | ret = self._fullname[len( stream.prefix() ):] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
881 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
882 | ret = self._fullname.rsplit( '/', 1 )[-1] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
883 | if (should_quote) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
884 | ret = "'%s'" % ret |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
885 | return ret |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
886 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
887 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
888 | |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
889 | def rev_node( self ) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
890 | """ |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
891 | Return a string showing this branch's head's revision number and short node ID in the format of "<rev>:<node-ID>", |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
892 | e.g., "9:db14bf692069". |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
893 | """ |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
894 | return "%s:%s" % (self.ctx.rev(), short( self.ctx.node() ),) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
895 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
896 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
897 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
898 | def is_closed( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
899 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
900 | Return true if this branch is closed; or false if it is open. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
901 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
902 | extra = self.ctx.extra() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
903 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
904 | return extra["close"] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
905 | except KeyError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
906 | return False |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
907 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
908 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
909 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
910 | def is_open( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
911 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
912 | Return true if this branch is open; or false if it is closed. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
913 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
914 | return not self.is_closed() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
915 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
916 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
917 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
918 | def is_develop_trunk( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
919 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
920 | Return true if this branch is the trunk of C{<develop>}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
921 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
922 | return STREAM["develop"]._trunk == self._fullname |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
923 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
924 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
925 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
926 | def is_master_trunk( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
927 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
928 | Return true if this branch is the trunk of C{<master>}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
929 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
930 | return STREAM["master"]._trunk == self._fullname |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
931 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
932 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
933 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
934 | def is_trunk( self, stream ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
935 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
936 | Return true if this branch is the trunk of the C{stream}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
937 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
938 | return stream._trunk == self._fullname |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
939 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
940 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
941 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
942 | def stream( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
943 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
944 | Return the stream that this branch belongs to. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
945 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
946 | name = self._fullname |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
947 | for stream in STREAM.values() : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
948 | if (name == stream._trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
949 | return stream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
950 | if (name.startswith( stream.prefix() )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
951 | name = name.replace( stream.prefix(), stream.name() + '/' ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
952 | break |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
953 | return Stream.gen( self.ui, self.repo, name.rsplit( '/', 1 )[0] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
954 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
955 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
956 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
957 | commands = Commands() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
958 | STREAM = {} # key = stream name, value = `Stream` object. Will be set by `Flow.__init__`. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
959 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
960 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
961 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
962 | class Flow( object ) : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
963 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
964 | ACTION_NAME = ["start", "finish", "push", "publish", "pull", "list", "log", "abort", "promote", "rebase", "rename",] |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
965 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
966 | def __init__( self, ui, repo, init = False ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
967 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
968 | Construct a C{Flow} instance that will execute the workflow. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
969 | Construction will fail if the C{flow} extension has not been initialized for the repository. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
970 | A warning message will be issued if the repository has uncommitted changes. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
971 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
972 | @type init: C{boolean} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
973 | @param init: If true, a C{Flow} object will be constructed for initialization of hgflow. Such constructed object does |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
974 | not supply all functionalities and is only meant to execute the `hg flow init` command. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
975 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
976 | self.ui = ui |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
977 | self.repo = repo |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
978 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
979 | self.autoshelve = False |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
980 | self.warn_uncommitted = True |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
981 | self.msg_prefix = "flow: " |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
982 | self.version_prefix = "v" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
983 | self.orig_workspace = Branch( ui, repo ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
984 | self.curr_workspace = self.orig_workspace # May be changed whenever `hg update` command is executed. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
985 | self.orig_dir = os.getcwd() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
986 | self._dryrun_shelve = set() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
987 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
988 | if (init) : return |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
989 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
990 | config_fname = os.path.join( self.repo.root, CONFIG_BASENAME ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
991 | if (os.path.isfile( config_fname )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
992 | cfg = config.config() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
993 | cfg.read( config_fname ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
994 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
995 | master = cfg.get( CONFIG_SECTION_BRANCHNAME, "master" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
996 | develop = cfg.get( CONFIG_SECTION_BRANCHNAME, "develop" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
997 | feature = cfg.get( CONFIG_SECTION_BRANCHNAME, "feature" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
998 | release = cfg.get( CONFIG_SECTION_BRANCHNAME, "release" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
999 | hotfix = cfg.get( CONFIG_SECTION_BRANCHNAME, "hotfix" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1000 | support = cfg.get( CONFIG_SECTION_BRANCHNAME, "support" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1001 | except Exception, e : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1002 | self._error( str( e ) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1003 | self._error( "Flow has not been initialized properly for this repository." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1004 | self._note ( "You can use command `hg flow init -f` to reinitialize for this repository.", via_quiet = True ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1005 | sys.exit( 1 ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1006 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1007 | old_config_fname = os.path.join( self.repo.root, OLD_CONFIG_BASENAME ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1008 | if (os.path.isfile( old_config_fname )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1009 | cfg = config.config() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1010 | cfg.read( old_config_fname ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1011 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1012 | master = cfg.get( CONFIG_SECTION_BRANCHNAME, "master" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1013 | develop = cfg.get( CONFIG_SECTION_BRANCHNAME, "develop" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1014 | feature = cfg.get( CONFIG_SECTION_BRANCHNAME, "feature" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1015 | release = cfg.get( CONFIG_SECTION_BRANCHNAME, "release" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1016 | hotfix = cfg.get( CONFIG_SECTION_BRANCHNAME, "hotfix" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1017 | support = cfg.get( CONFIG_SECTION_BRANCHNAME, "support" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1018 | except Exception, e : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1019 | self._error( str( e ) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1020 | self._error( "Flow has not been initialized properly for this repository." ) |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1021 | self._note ( "You can use command `hg flow init -f` to reinitialize for this repository.", |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1022 | via_quiet = True ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1023 | sys.exit( 1 ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1024 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1025 | self._error( "Flow has not been initialized for this repository: %s file is missing." % CONFIG_BASENAME ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1026 | self._note ( "You can use command `hg flow init` to initialize for this repository.", via_quiet = True ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1027 | sys.exit( 1 ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1028 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1029 | global STREAM |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1030 | STREAM["master" ] = Stream( ui, repo, "master", trunk = master ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1031 | STREAM["develop"] = Stream( ui, repo, "develop", trunk = develop ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1032 | STREAM["feature"] = Stream( ui, repo, "feature", prefix = feature, source = STREAM["develop"] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1033 | STREAM["release"] = Stream( ui, repo, "release", prefix = release, source = STREAM["develop"] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1034 | STREAM["hotfix" ] = Stream( ui, repo, "hotfix", prefix = hotfix, source = STREAM["master" ] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1035 | STREAM["support"] = Stream( ui, repo, "support", prefix = support, source = STREAM["master" ], destin = [] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1036 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1037 | STREAM["develop"]._destin.append( STREAM["release"] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1038 | STREAM["release"]._destin.append( STREAM["master" ] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1039 | STREAM["hotfix" ]._destin.append( STREAM["develop"] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1040 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1041 | if (ui.has_section( "hgflow" )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1042 | self._warn( "The [hgflow] section in hg configuration file is deprecated." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1043 | self._warn( "Please replace the section name from [hgflow] to [flow]." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1044 | self.autoshelve = ui.configbool( "hgflow", "autoshelve", self.autoshelve ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1045 | self.warn_uncommitted = ui.configbool( "hgflow", "warn_uncommitted", self.warn_uncommitted ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1046 | if (ui.has_section( "flow" )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1047 | self.autoshelve = ui.configbool( "flow", "autoshelve", self.autoshelve ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1048 | self.warn_uncommitted = ui.configbool( "flow", "warn_uncommitted", self.warn_uncommitted ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1049 | self.msg_prefix = ui.config ( "flow", "prefix", self.msg_prefix ).strip( STRIP_CHARS ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1050 | self.version_prefix = ui.config ( "flow", "version_prefix", self.version_prefix ).strip( STRIP_CHARS ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1051 | if (self._has_uncommitted_changes() and self.warn_uncommitted) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1052 | self._warn( "Your workspace has uncommitted changes." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1053 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1054 | # We'd better temporarily change the current directory to the root of the repository at the beginning. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1055 | # This is to avoid the problem that the CWD might be gone after switching to a different branch. (Issue#14) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1056 | # We will change it back to the original directory when the hgflow command exits. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1057 | os.chdir( self.repo.root ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1058 | # __init__ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1059 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1060 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1061 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1062 | def __getattr__( self, name ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1063 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1064 | Execute mercurial command of name C{name[1:]}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1065 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1066 | @type name: C{str} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1067 | @param name: Should be a mercurial command name prefixed with one underscore. For example, to call C{commit} command, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1068 | use C{self._commit}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1069 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1070 | if (name[0] == "_") : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1071 | cmd = getattr( commands, name[1:] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1072 | def func( *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1073 | cmd( self.ui, self.repo, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1074 | return func |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1075 | raise AttributeError( "%s instance has no attribute '%s'" % (self.__class__, name,) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1076 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1077 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1078 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1079 | def _update( self, rev, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1080 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1081 | Intercept the call to `hg update` command. We need to keep track of the branch of the workspace. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1082 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1083 | @type rev: C{str} or C{mercurial.changectx} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1084 | @param rev: Revision to which the workspace will update |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1085 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1086 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1087 | old_workspace_ctx = self.curr_workspace.ctx |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1088 | self.curr_workspace = rev if (isinstance( rev, Branch )) else Branch( self.ui, self.repo, rev ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1089 | except error.RepoLookupError, e : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1090 | if (commands.dryrun()) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1091 | commands.update( self.ui, self.repo, rev, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1092 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1093 | raise e |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1094 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1095 | if (old_workspace_ctx != self.curr_workspace.ctx) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1096 | commands.update( self.ui, self.repo, rev, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1097 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1098 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1099 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1100 | def _print( self, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1101 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1102 | Thin wrapper of the global C{_print} function |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1103 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1104 | _print( self.ui, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1105 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1106 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1107 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1108 | def _warn( self, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1109 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1110 | Thin wrapper of the global C{_warn} function |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1111 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1112 | _warn( self.ui, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1113 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1114 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1115 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1116 | def _error( self, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1117 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1118 | Thin wrapper of the global C{_error} function |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1119 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1120 | _error( self.ui, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1121 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1122 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1123 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1124 | def _note( self, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1125 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1126 | Thin wrapper of the global C{_note} function |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1127 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1128 | _note( self.ui, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1129 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1130 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1131 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1132 | def _check_rebase( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1133 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1134 | Check if 'rebase' extension is activated. If not, raise an 'AbortFlow' exception. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1135 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1136 | @raise AbortFlow: When 'rebase' extension is not found |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1137 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1138 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1139 | extensions.find( "rebase" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1140 | except KeyError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1141 | raise AbortFlow( "Cannot rebase without 'rebase' extension." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1142 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1143 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1144 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1145 | def _check_mq( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1146 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1147 | Check if 'mq' extension is activated. If not, raise an 'AbortFlow' exception. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1148 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1149 | @raise AbortFlow: When 'mq' extension is not found |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1150 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1151 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1152 | extensions.find( "mq" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1153 | except KeyError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1154 | raise AbortFlow( "Cannot shelve/unshelve changes without 'mq' extension." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1155 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1156 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1157 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1158 | def _check_strip( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1159 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1160 | The 'strip' command comes with the 'mq' extension. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1161 | Check if 'mq' extension is activated. If not, raise an 'AbortFlow' exception. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1162 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1163 | @raise AbortFlow: When 'mq' extension is not found |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1164 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1165 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1166 | extensions.find( "mq" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1167 | except KeyError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1168 | raise AbortFlow( "Cannot use 'strip' command without 'mq' extension." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1169 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1170 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1171 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1172 | def _is_shelved( self, branch ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1173 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1174 | Return true if the given branch has been shelved. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1175 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1176 | @type branch: C{Branch} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1177 | @param branch: Branch to test if it has shelved changes |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1178 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1179 | shelve_name = "flow/" + branch.fullname() + ".pch" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1180 | patch_fname = self.repo.join( "patches/" + shelve_name ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1181 | return os.path.isfile( patch_fname ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1182 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1183 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1184 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1185 | def _shelve( self, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1186 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1187 | Shelve workspace if C{self.autoshelve} is C{True}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1188 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1189 | This function utilizes the C{mq} extension to achieve shelving. Bascially, it calls the following C{mq} commands: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1190 | C{hg qnew <patchname> --currentuser --currentdate -m "Shelved changes"} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1191 | C{hg qpop} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1192 | where <patchname> follows the pattern: flow/<branch_fullname>.pch |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1193 | The two commands will give us a patch file that later will be used to unshelve the change. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1194 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1195 | if (self.autoshelve or kwarg.get( "force" )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1196 | if (self._has_uncommitted_changes()) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1197 | shelve_name = "flow/" + self.curr_workspace.fullname() + ".pch" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1198 | if (commands.dryrun()) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1199 | # For dry run, adds the name of the shelved item into `self._dryrun_shelve'. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1200 | # This is for generating correct dry run history for the unshelving operation. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1201 | self._dryrun_shelve.add( shelve_name ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1202 | self._check_mq() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1203 | self._qnew( shelve_name, currentuser = True, currentdate = True, message = "Shelved changes" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1204 | self._qpop() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1205 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1206 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1207 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1208 | def _unshelve( self, basename = None, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1209 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1210 | Unshelve the previously shelved changes to the workspace if C{self.autoshelve} is C{True}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1211 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1212 | This function needs the C{mq} extension to achieve unshelving. Bascially, it calls the following commands: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1213 | C{hg import <patch_filename> --no-commit} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1214 | C{hg qdelete <patchname>} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1215 | where <patchname> follows the pattern: flow/<branch_fullname>.pch, which was previously created by flow's shelving. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1216 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1217 | @type basename: C{str} |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1218 | @param basename: Basename of the path of the shelved patch file. Default is the name of current workspace branch. |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1219 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1220 | if (self.autoshelve or kwarg.get( "force" )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1221 | basename = basename if (basename) else self.curr_workspace.fullname() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1222 | shelve_name = "flow/" + basename + ".pch" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1223 | patch_fname = self.repo.join( "patches/" + shelve_name ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1224 | if (os.path.isfile( patch_fname ) or (shelve_name in self._dryrun_shelve)) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1225 | self._check_mq() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1226 | self._import_( patch_fname, no_commit = True, base = "", strip = 1 ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1227 | self._qdelete( shelve_name ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1228 | if (commands.dryrun()) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1229 | self._dryrun_shelve.discard( shelve_name ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1230 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1231 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1232 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1233 | def _has_uncommitted_changes( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1234 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1235 | Return true if any tracked file is modified, or added, or removed, or deleted. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1236 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1237 | return any( self.repo.status() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1238 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1239 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1240 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1241 | def _branches( self, openclosed = "open" ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1242 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1243 | Return a list of branches. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1244 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1245 | @type openclosed: C{str}, "open", "closed", and "all" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1246 | @param openclosed: If C{"open"}, return all open branches; if C{"closed"}, return all closed branches; if C{"all"}, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1247 | return all branches. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1248 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1249 | if (openclosed not in ["open", "closed", "all",]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1250 | raise ValueError( "Invalid value for openclosed parameter: %s" % openclosed ) |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1251 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1252 | all_branches = [] |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1253 | if (openclosed == "open") : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1254 | for branch_fullname, heads in self.repo.branchmap().items() : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1255 | all_branches += [Branch( self.ui, self.repo, head ) for head in heads |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1256 | if (not self.repo[head].extra().get( "close", False ))] |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1257 | elif (openclosed == "closed") : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1258 | for branch_fullname, heads in self.repo.branchmap().items() : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1259 | all_branches += [Branch( self.ui, self.repo, head ) for head in heads |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1260 | if (self.repo[head].extra().get( "close", False ))] |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1261 | else : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1262 | for branch_fullname, heads in self.repo.branchmap().items() : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1263 | all_branches += [Branch( self.ui, self.repo, head ) for head in heads] |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1264 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1265 | return all_branches |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1266 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1267 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1268 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1269 | def _find_branch( self, fullname ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1270 | """ |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1271 | Try to find a branch of name: C{fullname}. If it exists, return a C{Branch} object of this branch and a boolean value |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1272 | indicating if it's open (C{True}) or closed (C{False}). If it does not exists, return C{(None, None)}. |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1273 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1274 | @type fullname: C{str} |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1275 | @param fullname: Fullname of the branch to find |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1276 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1277 | try : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1278 | branch = Branch( self.ui, self.repo, fullname ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1279 | return branch, branch.is_open() |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1280 | except error.RepoLookupError : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1281 | return None, None |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1282 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1283 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1284 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1285 | def latest_master_tags( self ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1286 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1287 | Return the latest tag of C{<master>} branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1288 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1289 | trunk = STREAM["master"].trunk() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1290 | trunk_fullname = trunk.fullname() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1291 | master_context = trunk.ctx |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1292 | while (master_context) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1293 | tags = master_context.tags() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1294 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1295 | tags.remove( "tip" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1296 | except ValueError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1297 | pass |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1298 | if (tags) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1299 | return tags |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1300 | parents = master_context.parents() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1301 | master_context = None |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1302 | for e in parents : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1303 | if (trunk_fullname == e.branch()) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1304 | master_context = e |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1305 | break |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1306 | return [] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1307 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1308 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1309 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1310 | def _create_branch( self, fullname, message, from_branch = None, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1311 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1312 | Create a new branch and commit the change. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1313 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1314 | @type fullname: C{str} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1315 | @param fullname: Fullname of the new branch |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1316 | @type message: C{str} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1317 | @param message: Commit message |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1318 | @type from_branch: C{Branch} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1319 | @param from_branch: Parent branch of the new branch |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1320 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1321 | if (from_branch and self.curr_workspace != from_branch) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1322 | self._update( from_branch ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1323 | self._branch( fullname ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1324 | self._commit( message = message, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1325 | if (commands.dryrun()) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1326 | # Makes a fake new branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1327 | self.curr_workspace = Branch( self.ui, self.repo ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1328 | self.curr_workspace._fullname = fullname |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1329 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1330 | self.curr_workspace = Branch( self.ui, self.repo, fullname ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1331 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1332 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1333 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1334 | def _action_start( self, stream, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1335 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1336 | Conduct the I{start} action for the given stream. A new branch in the stream will be created. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1337 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1338 | @type stream: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1339 | @param stream: Stream where you want to start a new branch |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1340 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1341 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1342 | basename = arg[1] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1343 | except IndexError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1344 | raise AbortFlow( "You must specify a name for the new branch to start." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1345 | |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1346 | rev = kwarg.pop( "rev", None ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1347 | msg = kwarg.pop( "message", "" ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1348 | dirty = kwarg.pop( "dirty", None ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1349 | fullname = stream.get_fullname( basename ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1350 | br, is_open = self._find_branch( fullname ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1351 | if (br) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1352 | self._error( "A branch named '%s' already exists in %s: '%s'." % (basename, stream, fullname,) ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1353 | if (not is_open) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1354 | self._note( "Branch '%s' is currently closed." % fullname, via_quiet = True ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1355 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1356 | shelvedpatch_basename = self.curr_workspace.fullname() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1357 | if (rev is None) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1358 | from_branch = stream.source().trunk() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1359 | self._shelve( force = dirty ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1360 | self._update( from_branch ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1361 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1362 | from_branch = Branch( self.ui, self.repo, rev ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1363 | if (from_branch._fullname != stream.source()._trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1364 | raise AbortFlow( "Revision %s is not in the source stream of %s." % (rev, stream,) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1365 | self._shelve( force = dirty ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1366 | self._update( rev = rev ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1367 | if (msg) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1368 | msg = "%s\n" % msg |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1369 | self._create_branch( fullname, "%s%sCreated branch '%s'." % (msg, self.msg_prefix, fullname,), **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1370 | if (dirty) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1371 | self._unshelve( shelvedpatch_basename, force = dirty ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1372 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1373 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1374 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1375 | def _action_push( self, stream, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1376 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1377 | Conduct the I{push} action for the given stream. The workspace branch will be pushed to the remote repository. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1378 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1379 | @type stream: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1380 | @param stream: Stream where you want to push the workspace branch |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1381 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1382 | if (self.curr_workspace in stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1383 | self._push( new_branch = True, branch = [self.curr_workspace.fullname(),] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1384 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1385 | raise AbortFlow( "Your workspace is '%s' branch, which is not in %s." % (self.curr_workspace, stream,), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1386 | "To push a %s branch, you must first update to it." % stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1387 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1388 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1389 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1390 | def _action_pull( self, stream, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1391 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1392 | Conduct the I{pull} action for the given stream. The workspace branch will be updated with changes pulled from the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1393 | remote repository. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1394 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1395 | @type stream: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1396 | @param stream: Stream where you want to pull for the workspace branch |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1397 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1398 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1399 | branch = stream.get_fullname( arg[1] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1400 | except IndexError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1401 | branch = self.curr_workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1402 | if (branch not in stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1403 | raise AbortFlow( "Your workspace is '%s' branch, which is not in %s." % (branch, stream,), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1404 | "To pull a %s branch, you must first update to it." % stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1405 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1406 | self._pull( update = True, branch = [branch,] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1407 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1408 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1409 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1410 | def _action_list( self, stream, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1411 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1412 | Print all open branches in the given stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1413 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1414 | @type stream: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1415 | @param stream: Stream of which you want to display open branches |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1416 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1417 | # Lists all open branches in this stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1418 | open_branches = stream.branches() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1419 | trunk = stream.trunk() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1420 | if (trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1421 | tags = "" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1422 | if (stream == STREAM["master"]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1423 | tags = self.latest_master_tags() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1424 | tags = (", latest tags: %s" % ", ".join( tags )) if (tags) else "" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1425 | self._print( "%s trunk: %s%s" % (stream, trunk, tags,) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1426 | if (open_branches) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1427 | self._print( "Open %s branches:" % stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1428 | for e in open_branches : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1429 | marker = "#" if (self._is_shelved( e ) ) else "" |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1430 | marker += "*" if (e == self.curr_workspace) else "" |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1431 | marker += " %s" % e.rev_node() |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1432 | self._print( str( e ) + marker, prefix = " " ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1433 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1434 | self._print( "No open %s branches" % stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1435 | if (kwarg.get( "closed" )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1436 | closed_branches = stream.branches( "closed" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1437 | if (closed_branches) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1438 | self._print( "Closed %s branches:" % stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1439 | closed_branches.sort( lambda x, y : y.ctx.rev() - x.ctx.rev() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1440 | for e in closed_branches : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1441 | self.ui.write( "%-31s" % e.basename( stream ), label = "branches.closed" ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1442 | self.ui.write( " %18s" % e.rev_node(), label = "log.changeset" ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1443 | self.ui.write( " %s\n" % util.datestr( e.ctx.date(), format = "%Y-%m-%d %a %H:%M %1" ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1444 | label = "log.date" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1445 | bn = str( e ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1446 | p1 = e.ctx |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1447 | while (p1.branch() == bn) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1448 | e = p1 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1449 | p1 = e.p1() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1450 | description = e.description() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1451 | msg_prefix = ("flow: ", "hgflow: ", "hg flow,", self.msg_prefix or "#@$(&*^$",) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1452 | if (not (description.startswith( msg_prefix ))) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1453 | lines = [e.strip() for e in description.split( "\n" )] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1454 | self.ui.note( " description: %s\n" % lines[0] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1455 | for line in lines[1:] : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1456 | if (not (line.startswith( msg_prefix ))) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1457 | self.ui.note( " %s\n" % lines[0] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1458 | self.ui.note( "\n" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1459 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1460 | self._print( "No closed %s branches" % stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1461 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1462 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1463 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1464 | def _action_log( self, stream, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1465 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1466 | Show revision history of the specified branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1467 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1468 | @type stream: C{Stream}, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1469 | @param stream: Stream where the specified branch is |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1470 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1471 | # User may specify a file with a relative path name. Since CWD has changed to the repository's root dir when the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1472 | # `Flow' object was constructed, we need to restore the original dir to get the correct path name of the file. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1473 | os.chdir( self.orig_dir ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1474 | filenames = kwarg.pop( "file", [] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1475 | onstream = kwarg.pop( "onstream", False ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1476 | closed = kwarg.pop( "closed", False ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1477 | if (onstream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1478 | filenames.extend( arg[1:] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1479 | branches = stream.branches( "all" if (closed) else "open" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1480 | if (stream._trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1481 | branches.append( stream._trunk ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1482 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1483 | # Case 1: hg flow <stream> log <basename> |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1484 | # - Shows the log of the "<stream>/<basename>" branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1485 | # Case 2: hg flow <stream> log |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1486 | # - Case 2a: <stream> does not have a trunk |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1487 | # - Shows the log of the current workspace, which should be a branch in <stream>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1488 | # - Case 2b: <stream> has a trunk |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1489 | # - Case 2b1: Current workspace is a branch in <stream>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1490 | # - Shows the log of the current workspace. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1491 | # - Case 2b2: Current workspace is not a branch in <stream>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1492 | # - Shows the log of <stream>'s trunk. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1493 | # Case 3: hg flow <stream> log <filename> |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1494 | # - This case can be overriden by Case 1. Namely, if the <filename> happens to be the same as the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1495 | # <basename>, the latter will take precedence. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1496 | # - Case 3a: The current workspace is in <stream> |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1497 | # - Show the log of <filename> in the current workspace branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1498 | # - Case 3b: The current workspace is not in <stream>, and <stream> has a trunk. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1499 | # - Show the log of <filename> in <stream>'s trunk. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1500 | # - Case 3c: The current workspace is not in <stream>, and <stream> has no trunk. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1501 | # - Error |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1502 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1503 | branch = stream.get_branch( arg[1] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1504 | # Case 1 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1505 | except error.RepoLookupError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1506 | filenames.append( arg[1] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1507 | if (self.curr_workspace in stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1508 | # Case 3a |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1509 | branch = self.curr_workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1510 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1511 | branch = stream.trunk() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1512 | if (not branch) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1513 | # Case 3c |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1514 | raise AbortFlow( "Cannot determine branch in %s. Please be more specific." % stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1515 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1516 | # Case 3b |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1517 | # Just be clear that we have covered Case 2b2. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1518 | pass |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1519 | except IndexError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1520 | branch = stream.trunk() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1521 | if (not branch) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1522 | # Case 2a |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1523 | branch = self.curr_workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1524 | if (branch not in stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1525 | raise AbortFlow( "Your workspace is '%s' branch, which is not in %s." % (branch, stream,), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1526 | "To show log of a %s branch, you must also specify its name." % stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1527 | elif (self.curr_workspace in stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1528 | # Case 2b1 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1529 | branch = self.curr_workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1530 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1531 | # Case 2b2 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1532 | # Just be clear that we have covered Case 2b2. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1533 | pass |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1534 | # At this point, `branch` must be existent. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1535 | branches = [branch,] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1536 | |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1537 | opts = {"branch" : branches,} |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1538 | opts.update( kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1539 | self._log( *filenames, **opts ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1540 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1541 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1542 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1543 | def _action_abort( self, stream, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1544 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1545 | Abort the workspace branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1546 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1547 | @type stream: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1548 | @param stream: Stream where the branch which you want to abort is |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1549 | """ |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1550 | arg = arg[1:] |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1551 | msg = kwarg.pop( "message", "" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1552 | should_erase = kwarg.pop( "erase", False ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1553 | onstream = kwarg.pop( "onstream", False ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1554 | curr_workspace = self.curr_workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1555 | if (msg) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1556 | msg = "%s\n" % msg |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1557 | if (curr_workspace.is_develop_trunk()) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1558 | raise AbortFlow( "You cannot abort the <develop> trunk." ) |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1559 | if (arg) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1560 | if (len( arg ) > 1 or curr_workspace.basename() != arg[0]) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1561 | raise AbortFlow( "hgflow intentionally forbids aborting a non-workspace branch." ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1562 | if (onstream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1563 | branches = stream.branches() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1564 | if (stream == STREAM["develop"]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1565 | branches.remove( stream.trunk() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1566 | elif (stream._trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1567 | branches.append( stream.trunk() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1568 | for branch in branches : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1569 | if (should_erase) : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1570 | self._strip( branch, self.repo.revs( "min(branch('%s'))" % branch )[0] ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1571 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1572 | self._update( branch ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1573 | self._commit( close_branch = True, message = "%s%sAborted %s %s." % |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1574 | (msg, self.msg_prefix, stream, branch.basename( stream, should_quote = True ),) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1575 | if (self.curr_workspace != self.orig_workspace and self._orig_workspace not in branches) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1576 | self._update( self.orig_workspace ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1577 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1578 | if (curr_workspace.is_trunk( stream )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1579 | curr_stream = curr_workspace.stream() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1580 | raise AbortFlow( "You cannot abort a trunk.", |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1581 | "To abort '%s' as a branch, use `hg flow %s abort`." % (curr_workspace, curr_stream.name(),) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1582 | ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1583 | if (curr_workspace not in stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1584 | raise AbortFlow( "Your workspace is '%s' branch, which is not in %s." % (curr_workspace, stream,), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1585 | "To abort a %s branch, you must first update to it." % stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1586 | if (should_erase) : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1587 | self._strip( curr_workspace, self.repo.revs( "min(branch('%s'))" % curr_workspace )[0] ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1588 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1589 | self._commit( close_branch = True, message = "%s%sAborted %s '%s'." % |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1590 | (msg, self.msg_prefix, stream, curr_workspace.basename( stream ),) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1591 | self._update( stream.trunk( trace = True ) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1592 | self._unshelve() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1593 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1594 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1595 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1596 | def _action_promote( self, stream, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1597 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1598 | Promote the workspace branch to its destination stream(s). If there are uncommitted changes in the current branch, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1599 | they will be automatically shelved before rebasing and unshelved afterwards. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1600 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1601 | @type stream: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1602 | @param stream: Stream where the branch which you want to rebase is |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1603 | @type rev : C{str} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1604 | @param rev : If provided, promote this revision instead of the head. The specified revision must be in the workspace |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1605 | branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1606 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1607 | rev = kwarg.pop( "rev", None ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1608 | tag_name = kwarg.pop( "tag", None ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1609 | message = kwarg.pop( "message", None ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1610 | message = (message + "\n") if (message) else "" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1611 | orig_workspace = self.curr_workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1612 | has_shelved = False |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1613 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1614 | if (orig_workspace not in stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1615 | raise AbortFlow( "Your workspace is '%s' branch, which is not in %s." % (orig_workspace, stream,), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1616 | "To promote a %s branch, you must first update to it." % stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1617 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1618 | if (rev) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1619 | # Ensures `rev` is in workspace branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1620 | promoted_branch = Branch( self.ui, self.repo, rev ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1621 | promoted_rev = rev |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1622 | promoted_node = promoted_branch.ctx.node() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1623 | if (promoted_branch != orig_workspace) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1624 | raise AbortFlow( "Revision %s is not in workspace branch." % rev ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1625 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1626 | promoted_branch = orig_workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1627 | promoted_rev = orig_workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1628 | promoted_ctx = promoted_branch.ctx |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1629 | promoted_node = promoted_ctx.node() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1630 | # `promoted_node' is `None' if the `promote_ctx' is an instance of `workingctx'. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1631 | while (promoted_node is None) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1632 | promoted_ctx = promoted_ctx._parents[0] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1633 | promoted_node = promoted_ctx.node() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1634 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1635 | if (arg[1:]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1636 | if (not has_shelved) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1637 | self._shelve() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1638 | has_shelved = True |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1639 | for dest in arg[1:] : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1640 | self._update( dest ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1641 | self._merge ( promoted_rev ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1642 | self._commit( message = message + ("%sPromoted %s '%s' (%s) to '%s'." % |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1643 | (self.msg_prefix, stream, promoted_branch.basename( stream ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1644 | short( promoted_node ), dest,)), **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1645 | if (tag_name) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1646 | self._tag( tag_name, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1647 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1648 | destin = [STREAM["master"],] if (STREAM["develop"] == stream) else stream.destin() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1649 | for s in destin : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1650 | if (s == stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1651 | continue |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1652 | trunk = s.trunk() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1653 | if (trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1654 | if (not has_shelved) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1655 | self._shelve() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1656 | has_shelved = True |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1657 | self._update( trunk ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1658 | self._merge ( promoted_rev ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1659 | self._commit( message = message + ("%sPromoted %s '%s' (%s) to '%s'." % |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1660 | (self.msg_prefix, stream, promoted_branch.basename( stream ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1661 | short( promoted_node ), trunk,)), **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1662 | if (tag_name) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1663 | self._tag( tag_name, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1664 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1665 | self._error( "Cannot determine promote destination." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1666 | return |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1667 | if (orig_workspace != self.curr_workspace) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1668 | self._update( orig_workspace ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1669 | self._unshelve() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1670 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1671 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1672 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1673 | def _action_rebase( self, stream, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1674 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1675 | Rebase the workspace branch to its parent branch. If there are uncommitted changes in the current branch, they will be |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1676 | automatically shelved before rebasing and unshelved afterwards. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1677 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1678 | @type stream: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1679 | @param stream: Stream where the branch which you want to rebase is |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1680 | @type dest : C{str} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1681 | @param dest : If provided, use its value as the destination of rebasing. The value must be a changeset of the parent |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1682 | branch, otherwise it will trigger an error. If not provided, use the tip of the parent branch as the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1683 | destination of rebasing. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1684 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1685 | dest = kwarg.get( "dest" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1686 | onstream = kwarg.pop( "onstream", False ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1687 | if (onstream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1688 | if (not dest) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1689 | dest = stream.source().trunk( trace = True ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1690 | branches = stream.branches() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1691 | if (stream == STREAM["develop"]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1692 | branches.remove( stream.trunk() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1693 | elif (stream._trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1694 | branches.append( stream.trunk() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1695 | self._check_rebase() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1696 | self._shelve() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1697 | for branch in branches : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1698 | if (dest != branch) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1699 | self._rebase( base = branch, dest = dest, keepbranches = True ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1700 | self._unshelve() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1701 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1702 | curr_workspace = self.curr_workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1703 | if (not dest) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1704 | dest = stream.trunk( trace = True ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1705 | if (curr_workspace not in stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1706 | raise AbortFlow( "Your workspace is '%s' branch, which is not in %s." % (curr_workspace, stream,), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1707 | "To rebase a %s branch, you must first update to it." % stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1708 | if (curr_workspace.is_develop_trunk()) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1709 | raise AbortFlow( "You cannot rebase the <develop> trunk." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1710 | if (dest == curr_workspace) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1711 | self._warn( "No effects from rebasing a branch to itself" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1712 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1713 | self._check_rebase() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1714 | self._shelve() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1715 | self._rebase( base = curr_workspace, dest = dest, keepbranches = True ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1716 | self._unshelve() |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1717 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1718 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1719 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1720 | def _action_rename( self, stream, *arg, **kwarg ) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1721 | """ |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1722 | Rename the workspace branch to a new basename. If there are uncommitted changes in the current branch, they will be |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1723 | automatically shelved before renaming and unshelved afterwards. |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1724 | Under the hood this action will create a new branch and copy (or graft) all commits in the workspace branch to the new |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1725 | branch and then erase the workspace branch. |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1726 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1727 | @type stream: C{Stream} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1728 | @param stream: Stream where the branch which you want to rename is |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1729 | @type to : C{str} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1730 | @param to : Its value should be the new basename of the workspace branch. |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1731 | """ |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1732 | new_branch_name = kwarg.pop( "to", None ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1733 | curr_workspace = self.curr_workspace |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1734 | if (not new_branch_name) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1735 | raise AbortFlow( "Please specify the new base name of this branch via the `-t` option." ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1736 | if (curr_workspace not in stream) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1737 | raise AbortFlow( "Your workspace is '%s' branch, which is not in %s." % (curr_workspace, stream,), |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1738 | "To rename a %s branch, you must first update to it." % stream ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1739 | if (curr_workspace.is_trunk( stream )) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1740 | raise AbortFlow( "You cannot rename the trunk of %s." % stream ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1741 | if (new_branch_name == curr_workspace.basename( stream )) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1742 | self._warn( "No effects because the supposed new basename turns out to be the same as the current one." ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1743 | else : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1744 | cfn = curr_workspace.fullname() |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1745 | brn = "branch(%s)" % cfn |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1746 | rev = "min(%s)" % brn |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1747 | ctx = self.repo[self.repo.revs( rev )[0]] |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1748 | nfn = stream.get_fullname( new_branch_name ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1749 | msg = ctx.description() |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1750 | msg = msg.replace( cfn, nfn ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1751 | self._shelve() |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1752 | self._update( self.repo.revs( "%s^" % rev )[0] ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1753 | self._create_branch( nfn, msg, user = ctx.user(), date = util.datestr( ctx.date() ) ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1754 | self._graft( curr_workspace, **kwarg ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1755 | self._unshelve( cfn ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1756 | self._strip( curr_workspace, int( ctx ) ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1757 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1758 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1759 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1760 | def _update_workspace( self, stream, branch, verbose = True ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1761 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1762 | Update the workspace to the given branch. Shelving and unshelving will be conducted automatically. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1763 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1764 | @type stream: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1765 | @param stream: Stream where the branch which you are updating the workspace to is |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1766 | @type branch: C{Branch} or C{None} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1767 | @param branch: Branch to update the workspace to. No effects if it is C{None}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1768 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1769 | if (not branch) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1770 | return |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1771 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1772 | if (branch == self.curr_workspace) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1773 | if (verbose) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1774 | self._print( "You are already in %s %s." % (stream, branch.basename( stream, should_quote = True ),) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1775 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1776 | self._print( "Update workspace to %s %s." % (stream, branch.basename( stream, should_quote = True ),) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1777 | self._shelve() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1778 | self._update( branch ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1779 | self._unshelve() |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1780 | self._print( "Parent of working directory: %s" % branch.rev_node() ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1781 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1782 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1783 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1784 | def _action_other( self, stream, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1785 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1786 | If the action is the name of a branch in the given stream, we will update workspace to that branch; otherwise, the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1787 | action is considered as an error. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1788 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1789 | @type stream: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1790 | @param stream: Stream where the branch that we will switch to is |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1791 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1792 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1793 | name = arg[0] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1794 | branch = stream.get_branch( name ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1795 | if (branch.is_closed()) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1796 | self._warn( "%s '%s' has been closed." % (stream, name,) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1797 | self._update_workspace( stream, branch ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1798 | except error.RepoLookupError : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1799 | misspelling = difflib.get_close_matches( name, Flow.ACTION_NAME, 3, 0.7 ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1800 | note = ("Did you mean: %s?" % " or ".join( misspelling )) if (misspelling ) else None |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1801 | note = ("Did you mean: finish or abort?") if ("close" == name) else note |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1802 | if (stream != STREAM["master"]) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1803 | note = ("If you meant to create a new branch called '%s' in %s" % (name, stream,), |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1804 | "try command:", " hg flow %s start %s" % (stream.name(), name,),) if (not note) else note |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1805 | raise AbortFlow( "Invalid action or unknown branch in %s: '%s'" % (stream, name,), note = note ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1806 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1807 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1808 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1809 | def _commit_change( self, opt, commit_hint, is_erasing = False ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1810 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1811 | Commit the changes in the workspace. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1812 | Note that this method can potentially mutate C{opt}. Specifically, it will delete the C{commit} and C{message} keys if |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1813 | they present in C{opt}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1814 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1815 | @type opt: C{dict} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1816 | @param opt: Option dictionary. Recognizable keys are C{commit} and C{message}. The value of C{commit} should be a |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1817 | boolean, indicating whether or not to perform committing. The value of C{message} should be a string, which |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1818 | will be used as the commit message. It is OK for both of the options to be missing. But it would trigger |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1819 | an error if C{message} is given without C{commit} set to true. There is no special treatment on other |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1820 | keys, and they will be passed to the C{hg commit} command as is. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1821 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1822 | @rtype : C{bool} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1823 | @return: Return `True' if committing was successfully done, or `False' if it was not. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1824 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1825 | if (opt.get( "commit" )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1826 | del opt["commit"] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1827 | msg = opt.get( "message" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1828 | if (msg is None) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1829 | opt["force_editor"] = True |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1830 | opt["message"] = "\n\nHG: flow: %s" % commit_hint |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1831 | self._commit( **opt ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1832 | del opt["message"] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1833 | if (msg is None) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1834 | del opt["force_editor"] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1835 | return True |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1836 | elif (opt.get( "message" )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1837 | if (is_erasing) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1838 | del opt["message"] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1839 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1840 | raise AbortFlow( "Cannot use the specified commit message.", "Did you forget to specify the -c option?" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1841 | return False |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1842 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1843 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1844 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1845 | def _action_finish( self, stream, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1846 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1847 | Finish a branch in the given stream. The current workspace must be in the branch to be finished, otherwise an error |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1848 | will be triggered. The default behavior of finish action is the following: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1849 | 1. close the branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1850 | 2. merge the branch to the C{destin} streams. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1851 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1852 | @type stream: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1853 | @param stream: Stream where the branch that we will finish is |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1854 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1855 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1856 | tag_name = arg[1] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1857 | self._warn( "You just specified the <tag-name> using the deprecated syntax:" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1858 | self._warn( " hg flow <stream> finish <tag-name> [<options>]" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1859 | self._warn( "Try using the new syntax to do that in the future: hg flow <stream> finish -t <tag-name>" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1860 | self._warn( "Note that hgflow intentionally forbids finishing a non-workspace branch." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1861 | except IndexError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1862 | tag_name = None |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1863 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1864 | message = kwarg.get( "message", None ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1865 | tag_name = kwarg.pop( "tag", tag_name ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1866 | onstream = kwarg.pop( "onstream", False ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1867 | should_erase = kwarg.pop( "erase", False ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1868 | curr_workspace = self.curr_workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1869 | curr_stream = curr_workspace.stream() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1870 | name = curr_workspace.basename( stream, should_quote = True ) |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1871 | tag_name_orig = tag_name |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1872 | tag_name = tag_name if (tag_name) else (self.version_prefix + name[1:-1]) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1873 | develop_stream = STREAM["develop"] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1874 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1875 | if (should_erase) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1876 | if (onstream ) : raise AbortFlow( "'--erase' cannot be used together with '--onstream'." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1877 | if (message is None) : raise AbortFlow( "'--message' is required when '--erase' is used." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1878 | self._check_strip() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1879 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1880 | if (onstream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1881 | if (stream in [develop_stream, STREAM["support"], STREAM["hotfix"], STREAM["release"],]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1882 | raise AbortFlow( "You cannot finish %s." % stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1883 | branches = stream.branches() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1884 | if (stream._trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1885 | substream = Stream.gen( self.ui, self.repo, stream.name() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1886 | for branch in branches : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1887 | self._update( branch ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1888 | self._action_finish( substream, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1889 | self._update( stream.trunk() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1890 | self._action_finish( stream, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1891 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1892 | for branch in branches : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1893 | self._update( branch ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1894 | self._action_finish( stream, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1895 | return |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1896 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1897 | if (curr_workspace.is_develop_trunk()) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1898 | raise AbortFlow( "You cannot finish the <develop> trunk." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1899 | elif (curr_workspace not in stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1900 | raise AbortFlow( "Your workspace is '%s' branch, which is not in %s." % (curr_workspace, stream,), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1901 | "To finish a %s branch, you must first update to it." % stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1902 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1903 | # Merges the workspace to its `destin` streams. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1904 | destin_with_trunk = [] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1905 | destin_without_trunk = [] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1906 | final_branch = None |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1907 | for s in stream.destin() : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1908 | trunk = s.trunk() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1909 | if (trunk == curr_workspace) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1910 | pass |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1911 | elif (trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1912 | destin_with_trunk.append( s ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1913 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1914 | destin_without_trunk.append( s ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1915 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1916 | if (should_erase) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1917 | if (len( destin_with_trunk + destin_without_trunk ) > 1) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1918 | raise AbortFlow( "'--erase' cannot be applied to branches with multiple merge destinations." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1919 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1920 | # Commits changes (if any) in the current branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1921 | is_commit_done = self._commit_change( kwarg, "Finishing '%s' branch" % curr_workspace, should_erase ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1922 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1923 | # If the commit was done successfully, we don't check against uncommitted changes. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1924 | # This is particularly needed for dry run. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1925 | if (not is_commit_done and self._has_uncommitted_changes()) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1926 | raise AbortFlow( "Cannot finish '%s' branch because it has uncommitted changes." % curr_workspace ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1927 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1928 | # For destin streams without trunks, we need to create a branch in each of these destin streams. |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1929 | # Each newly created branch will be from the current branch and named after the pattern: |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1930 | # <stream-prefix>/<current-branch-basename>. Afterwards, the current branch will be closed. |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1931 | # Note that there is no need to merge the current branch because the new branch is created from it. |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1932 | for s in destin_without_trunk : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1933 | trunk = s.trunk() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1934 | so_name = "" if ("trunk" == curr_workspace.basename( stream )) else ("/" + curr_workspace.basename( stream )) |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1935 | so = Stream ( self.ui, self.repo, stream.name() + so_name, trunk = curr_workspace.fullname() ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1936 | so = Stream.gen( self.ui, self.repo, "%s:%s" % (so.name(), s.name(),), check = True ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1937 | basename = curr_workspace.basename() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1938 | self.action( so, "start", basename ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1939 | final_branch = s.get_fullname( basename ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1940 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1941 | if (destin_with_trunk or destin_without_trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1942 | # If either list is not empty. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1943 | self._update( curr_workspace ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1944 | self._commit( close_branch = True, message = "%sClosed %s %s." % (self.msg_prefix, stream, name,), **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1945 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1946 | # If both lists are empty. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1947 | if (stream == STREAM["support"]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1948 | self._update( curr_workspace ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1949 | self._commit( close_branch = True, message = "%sClosed %s %s." % (self.msg_prefix, stream, name,), **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1950 | final_branch = STREAM["master"].trunk() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1951 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1952 | self._print( "All open branches in %s are finished and merged to its trunk." % stream ) |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1953 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1954 | if (tag_name_orig and (STREAM["master"] not in destin_with_trunk)) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1955 | self._warn( "You specified a tag name, but it has effect only when the workspace branch is merged to <master>." ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1956 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1957 | for s in destin_with_trunk : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1958 | trunk = s.trunk() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1959 | self._update( trunk ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1960 | self._merge ( curr_workspace ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1961 | self._commit( message = "%sMerged %s %s to %s ('%s')." % (self.msg_prefix, stream, name, s, trunk,), **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1962 | if (s == STREAM["master"]) : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1963 | self._tag( tag_name, force = True ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1964 | elif (s in develop_stream and s is not develop_stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1965 | tr_stream = trunk.stream() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1966 | for ss in tr_stream.destin() : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1967 | if (ss == develop_stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1968 | dvtrunk = develop_stream.trunk() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1969 | tr_name = trunk.basename( ss ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1970 | self._update( dvtrunk ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1971 | self._merge ( trunk ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1972 | self._commit( message = "%sMerged <develop/%s:%s> %s to %s ('%s')." % |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1973 | (self.msg_prefix, tr_name, stream.name(), name, ss, dvtrunk,), **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1974 | if (final_branch) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1975 | self._update( final_branch ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1976 | if (should_erase) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1977 | rev = "p1(.)" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1978 | rev = mercurial.scmutil.revsingle( self.repo, rev ).rev() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1979 | self._update( "tip" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1980 | self._update( rev ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1981 | self._revert( rev = "-1", all = True ) |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
1982 | self._strip ( curr_workspace, self.repo.revs( "min(branch('%s'))" % curr_workspace )[0] ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1983 | self._commit( message = message, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1984 | self._unshelve() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1985 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1986 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1987 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1988 | def _execute_action( self, stream, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1989 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1990 | Execute an action on the given stream. If no action is specified, the action will default to I{list} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1991 | (see L{_action_list}). The default behavior of an action is defined by the C{_action_*} methods. Custom action behavior |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1992 | can be given through the C{action_func} parameter. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1993 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1994 | @type stream: C{Stream} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1995 | @param stream: Stream where we will execute the action |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1996 | @type action_func: C{dict} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1997 | @param action_func: Custom action methods. Key (C{str}) is action name, and value is a function that define the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1998 | behavior of the custom action. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
1999 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2000 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2001 | action = arg[0] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2002 | except IndexError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2003 | action = "list" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2004 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2005 | action_func = { |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2006 | "start" : self._action_start, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2007 | "finish" : self._action_finish, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2008 | "push" : self._action_push, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2009 | "publish" : self._action_push, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2010 | "pull" : self._action_pull, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2011 | "list" : self._action_list, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2012 | "log" : self._action_log, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2013 | "abort" : self._action_abort, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2014 | "promote" : self._action_promote, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2015 | "rebase" : self._action_rebase, |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2016 | "rename" : self._action_rename, |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2017 | "other" : self._action_other, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2018 | } |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2019 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2020 | custom_action_func = kwarg.pop( "action_func", {} ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2021 | action_func.update( custom_action_func ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2022 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2023 | return action_func.get( action, self._action_other )( stream, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2024 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2025 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2026 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2027 | def action( self, stream, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2028 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2029 | Execute action on the stream. |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2030 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2031 | @type stream: C{Stream} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2032 | @param stream: Stream where we will execute the action |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2033 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2034 | if (len( arg ) > 0) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2035 | action = arg[0] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2036 | if (stream == STREAM["master"]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2037 | if (action in ["start", "finish", "abort", "rebase",]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2038 | raise AbortFlow( "Invalid action for <master>" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2039 | else : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2040 | trunk = stream.trunk() |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2041 | self._update_workspace( stream, trunk, verbose = False ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2042 | self._execute_action( stream, *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2043 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2044 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2045 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2046 | def print_version( self, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2047 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2048 | Print flow's version and then quit. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2049 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2050 | self._print( "version %s" % VERSION ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2051 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2052 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2053 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2054 | def unshelve( self, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2055 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2056 | Unshelve the previously shelved changes. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2057 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2058 | self.autoshelve = True |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2059 | self._unshelve( *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2060 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2061 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2062 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2063 | def print_open_branches( self, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2064 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2065 | Print open branches in each stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2066 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2067 | The currently active branch will be marked with a * symbol. Branches where there are shelved changes will be marked |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2068 | with a # symbol. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2069 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2070 | self._print( "Currently open branches:" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2071 | curr_workspace = self.curr_workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2072 | stream_names = ["master", "develop", "feature", "release", "hotfix", "support",] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2073 | all_branches = self._branches() |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2074 | name_branches = {} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2075 | for branch in all_branches : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2076 | name_branches.setdefault( branch.fullname(), [] ).append( branch ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2077 | name_branches = sorted( name_branches.items() ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2078 | for sn in stream_names : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2079 | stream = STREAM[sn] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2080 | trunk = stream.trunk() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2081 | open_branches_in_stream = [] |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2082 | for name, heads in name_branches : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2083 | e = heads[0] |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2084 | if (e in stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2085 | open_branches_in_stream.append( e ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2086 | if (trunk is None and not open_branches_in_stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2087 | continue |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2088 | self._print( "%-9s: " % stream, newline = False ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2089 | if (trunk) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2090 | marker = "#" if (self._is_shelved( trunk )) else "" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2091 | marker += "*" if (trunk == curr_workspace ) else "" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2092 | self.ui.write( "%s%s " % (trunk, marker,) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2093 | if (trunk in open_branches_in_stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2094 | # We need this check because the `trunk' could be closed. See Issue#34. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2095 | open_branches_in_stream.remove( trunk ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2096 | if (open_branches_in_stream) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2097 | for e in open_branches_in_stream : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2098 | marker = "#" if (self._is_shelved( e )) else "" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2099 | marker += "*" if (e == curr_workspace ) else "" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2100 | self.ui.write( "%s%s " % (e, marker,) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2101 | self.ui.write( "\n" ) |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2102 | if (sum( [len( heads ) - 1 for name, heads in name_branches] )) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2103 | self._print( "\n", newline = False ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2104 | self._print( "Multihead branches:" ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2105 | for name, heads in name_branches : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2106 | if (len( heads ) > 1) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2107 | self._print( " %s" % name ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2108 | for head in heads : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2109 | self._print( " %s" % head.rev_node() ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2110 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2111 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2112 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2113 | def init( self, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2114 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2115 | Initialize flow. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2116 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2117 | config_fname = os.path.join( self.repo.root, CONFIG_BASENAME ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2118 | master_stream = "default" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2119 | hotfix_stream = "hotfix/" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2120 | develop_stream = "develop" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2121 | feature_stream = "feature/" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2122 | release_stream = "release/" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2123 | support_stream = "support/" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2124 | has_goodconfig = False |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2125 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2126 | # Fetches existing condition |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2127 | if (os.path.isfile( config_fname )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2128 | self._print( "Flow was already initialized for workspace:" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2129 | cfg = config.config() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2130 | cfg.read( config_fname ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2131 | SECTION = CONFIG_SECTION_BRANCHNAME |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2132 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2133 | master_stream = cfg.get( SECTION, "master" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2134 | develop_stream = cfg.get( SECTION, "develop" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2135 | feature_stream = cfg.get( SECTION, "feature" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2136 | release_stream = cfg.get( SECTION, "release" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2137 | hotfix_stream = cfg.get( SECTION, "hotfix" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2138 | support_stream = cfg.get( SECTION, "support" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2139 | has_goodconfig = True |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2140 | except ConfigParser.NoSectionError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2141 | self._error( "Section [%s] not found in configuration file: %s" % (SECTION, config_fname,) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2142 | self._error( "Your configuration file is probably in old format or corrupt." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2143 | except ConfigParser.NoOptionError, e : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2144 | self._error( "%s" % e ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2145 | self._error( "Your configuration file is probably corrupt." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2146 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2147 | if (has_goodconfig) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2148 | self._print( "Repository-specific configuration:" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2149 | self._print( "<master> trunk: '%s'" % master_stream, prefix = " " ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2150 | self._print( "<develop> trunk: '%s'" % develop_stream, prefix = " " ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2151 | self._print( "<feature> branch prefix: '%s'" % feature_stream, prefix = " " ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2152 | self._print( "<release> branch prefix: '%s'" % release_stream, prefix = " " ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2153 | self._print( "<hotfix> branch prefix: '%s'" % hotfix_stream, prefix = " " ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2154 | self._print( "<support> branch prefix: '%s'" % support_stream, prefix = " " ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2155 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2156 | autoshelve = None |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2157 | if (self.ui.has_section( "hgflow" ) or self.ui.has_section( "flow" )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2158 | self._print( "Global configuration:" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2159 | autoshelve = self.ui.configbool( "hgflow", "autoshelve" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2160 | if (self.ui.has_section( "flow" )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2161 | autoshelve = self.ui.configbool( "flow", "autoshelve" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2162 | if (not (autoshelve is None)) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2163 | self._print( "autoshelve: %s" % ("on" if (autoshelve) else "off"), prefix = " " ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2164 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2165 | # Shall we continue if there already exists a configuration file? |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2166 | if (has_goodconfig and not kwarg.get( "force" )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2167 | return |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2168 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2169 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2170 | mq = None |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2171 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2172 | mq = extensions.find( "mq" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2173 | except KeyError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2174 | self._warn( "The 'mq' extension is deactivated. You cannot use some features of flow." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2175 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2176 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2177 | workspace = self.curr_workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2178 | branches = self._branches() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2179 | if (len( branches ) > 1) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2180 | self._warn( "You have the following open branches. Will initialize flow for all of them." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2181 | for branch in branches : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2182 | if (branch == workspace) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2183 | self._warn( " " + branch.fullname() + " (active)" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2184 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2185 | self._warn( " %s" % branch.fullname() ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2186 | |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2187 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2188 | # 'status' method returns a 7-member tuple: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2189 | # 0 modified, 1 added, 2 removed, 3 deleted, 4 unknown(?), 5 ignored, and 6 clean |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2190 | orig_repo_status = self.repo.status()[:4] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2191 | for e in orig_repo_status : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2192 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2193 | e.remove( CONFIG_BASENAME ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2194 | except ValueError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2195 | pass |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2196 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2197 | if (any( orig_repo_status )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2198 | if (len( branches ) > 1 and not mq) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2199 | raise AbortFlow( "Your workspace has uncommitted changes. Cannot initialize flow for all", |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2200 | " open branches. You can either commit the changes or install the 'mq'", |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2201 | " extension, and then try again." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2202 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2203 | def get_input( stream_name, default ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2204 | while (True) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2205 | answer = self.ui.prompt( "Branch name for %s stream: [%s]" % (stream_name, default,), default = default ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2206 | if (answer.find( ':' ) > -1) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2207 | self._error( "Illegal symbol ':' in branch name" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2208 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2209 | return answer |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2210 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2211 | if (not kwarg.get( "default" )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2212 | master_stream = get_input( "master", master_stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2213 | develop_stream = get_input( "develop", develop_stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2214 | feature_stream = get_input( "feature", feature_stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2215 | release_stream = get_input( "release", release_stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2216 | hotfix_stream = get_input( "hotfix", hotfix_stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2217 | support_stream = get_input( "support", support_stream ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2218 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2219 | if (autoshelve is None) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2220 | self._print( """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2221 | When you switch to another branch, flow can automatically shelve uncommitted |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2222 | changes in workpace right before switching. Later when you switch back, flow can |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2223 | automatically unshelve the changes to the workspace. This functionality is |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2224 | called autoshelve. You need the 'mq' extension to use it.""" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2225 | answer = self.ui.prompt( "Do you want to turn it on? [Yes] ", default = "y" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2226 | answer = True if (answer.lower() in ["yes", "y", "",]) else False |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2227 | if (answer) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2228 | self._print( """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2229 | Here is what you need to do: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2230 | To turn it on for only this repository, edit your <repository-root>/.hg/hgrc |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2231 | file by adding the following lines: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2232 | [flow] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2233 | autoshelve = true |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2234 | You can turn it on for all of your repositories by doing the same edition to |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2235 | your $HOME/.hgrc file. To turn it off, just edit the corresponding file and |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2236 | replace 'true' with 'false'. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2237 | """ ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2238 | self.ui.prompt( _("Press Enter to continue initialization...") ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2239 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2240 | # Creates configuration. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2241 | cfg_contents = ["[%s]" % CONFIG_SECTION_BRANCHNAME, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2242 | "master = %s" % master_stream, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2243 | "develop = %s" % develop_stream, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2244 | "feature = %s" % feature_stream, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2245 | "release = %s" % release_stream, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2246 | "hotfix = %s" % hotfix_stream, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2247 | "support = %s" % support_stream,] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2248 | def write_config() : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2249 | # Writes the configuration in the current branch. |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2250 | if (not commands.dryrun()) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2251 | with open( config_fname, "w" ) as fh : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2252 | print >> fh, "\n".join( cfg_contents ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2253 | repo_status = self.repo.status( unknown = True ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2254 | if (CONFIG_BASENAME in repo_status[0]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2255 | self._commit( config_fname, message = "flow initialization: Modified configuration file." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2256 | elif (CONFIG_BASENAME in repo_status[4]) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2257 | self._add ( config_fname ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2258 | self._commit( config_fname, message = "flow initialization: Added configuration file." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2259 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2260 | write_config() |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2261 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2262 | master_trunk, is_open = self._find_branch( master_stream ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2263 | if (master_trunk and not is_open) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2264 | self._warn( "Branch \"%s\" is currently closed." % master_stream ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2265 | self._warn( "Will reopen and use it as <master> trunk." ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2266 | branches.append( master_trunk ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2267 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2268 | develop_trunk, is_open = self._find_branch( develop_stream ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2269 | if (develop_trunk and not is_open) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2270 | self._warn( "Branch \"%s\" is currently closed." % develop_stream ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2271 | self._warn( "Will reopen and use it as <develop> trunk." ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2272 | branches.append( develop_trunk ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2273 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2274 | # Writes the configuration in all the other branches. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2275 | self.autoshelve = True |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2276 | self._shelve() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2277 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2278 | if (len( branches ) > 1) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2279 | for branch in branches : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2280 | if (branch == workspace) : continue |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2281 | self._update( branch ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2282 | write_config() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2283 | self._update( workspace ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2284 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2285 | # Creates 'master' and 'develop' streams if they don't yet exist. |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2286 | if (master_trunk is None) : |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2287 | self._create_branch( master_stream, "flow initialization: Created <master> trunk: %s." % master_stream ) |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2288 | if (develop_trunk is None) : |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2289 | self._create_branch( develop_stream, "flow initialization: Created <develop> trunk: %s." % develop_stream ) |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2290 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2291 | self._update( workspace ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2292 | self._unshelve() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2293 | |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2294 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2295 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2296 | def upgrade( self, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2297 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2298 | Upgrade older version to the latest version. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2299 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2300 | self._print( "Upgrade flow's configuration file from v0.9.4 (or older) to v0.9.5 (or latter)." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2301 | self._print( "Renaming file '%s' to '%s' in all open branches..." % (OLD_CONFIG_BASENAME, CONFIG_BASENAME,) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2302 | config_fname = os.path.join( self.repo.root, CONFIG_BASENAME ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2303 | old_config_fname = os.path.join( self.repo.root, OLD_CONFIG_BASENAME ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2304 | workspace = self.curr_workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2305 | for branch in self._branches() : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2306 | self._print( " Branch '%s'..." % branch ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2307 | self._update( branch ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2308 | if (os.path.isfile( old_config_fname )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2309 | self._rename( old_config_fname, config_fname, force = True ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2310 | self._commit( message = "flow upgrade: Renamed flow's configuration file from '%s' to '%s'." % |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2311 | (OLD_CONFIG_BASENAME, CONFIG_BASENAME,) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2312 | self._update( workspace ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2313 | self._print( "Upgrading done" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2314 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2315 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2316 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2317 | def flow_cmd( ui, repo, cmd = None, *arg, **kwarg ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2318 | """Flow is a Mercurial extension to support the generalized Driessen's branching model. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2319 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2320 | actions: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2321 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2322 | - start Open a new branch in the stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2323 | - finish Close workspace branch and merge it to destination stream(s). |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2324 | - push Push workspace branch to the remote repository. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2325 | - publish Same as `push` |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2326 | - pull Pull from the remote repository and update workspace branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2327 | - list List all open branches in the stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2328 | - log Show revision history of branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2329 | - promote Merge workspace to other branches. (not closing any branches.) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2330 | - rebase Rebase workspace branch to its parent branch. |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2331 | - rename Rename workspace branch to a new basename. |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2332 | - abort Abort branch. Close branch without merging. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2333 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2334 | If no action is specified by user, the action will default to `list`. If a |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2335 | branch name (instead of action) is given after the stream name, Flow will |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2336 | switch the current workspace to the branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2337 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2338 | commands: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2339 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2340 | - init Initialize flow. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2341 | - unshelve Unshelve the previously shelved changes for workspace branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2342 | - upgrade Upgrade the configuration file to v0.9.5 or later. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2343 | - help Show help for a specific topic. Example: `hg flow help @help` |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2344 | - version Show flow's version number. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2345 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2346 | # Supresses bookmarks, otherwise if the name of a bookmark happens to be the same as a named branch, hg will use the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2347 | # bookmark's revision. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2348 | repo._bookmarks = {} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2349 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2350 | flow = Flow( ui, repo, cmd in ["init", "upgrade", "help",] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2351 | func = { |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2352 | "init" : flow.init, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2353 | "upgrade" : flow.upgrade, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2354 | "unshelve" : flow.unshelve, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2355 | "help" : Help( ui, repo ).print_help, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2356 | "version" : flow.print_version, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2357 | None : flow.print_open_branches, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2358 | } |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2359 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2360 | commands.use_quiet_channel( kwarg.get( "history" ) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2361 | commands.dryrun ( kwarg.get( "dry_run" ) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2362 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2363 | if (kwarg.get( "dry_run" )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2364 | _print( ui, "This is a dry run." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2365 | commands.use_quiet_channel( True ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2366 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2367 | # Registers common options (such as "user"). |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2368 | common_opts = {} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2369 | for e in ["user",] : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2370 | v = kwarg.get( e ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2371 | if (v) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2372 | common_opts[e] = v |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2373 | commands.reg_common_options( common_opts ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2374 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2375 | # - Up to this point, `cmd' is a name of command or stream, or `None'. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2376 | # - We assign `stream' to be a stream name (or `None') and `cmd' to be a name of command or action. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2377 | # - When `arg' is a 0-tuple, `cmd' should be "list" as the default action. We use `arg + ("list",)' to ensure we can get |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2378 | # the first element. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2379 | stream, cmd = (None, cmd) if (cmd in func) else (cmd, (arg + ("list",))[0] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2380 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2381 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2382 | # Constructs a `Stream' objects. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2383 | # This will also check the validity of the part of user's input that is supposed to specify a stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2384 | if (isinstance( stream, str )) : |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2385 | stream = Stream.gen( ui, repo, stream, check = True ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2386 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2387 | # Checks the options for all commands and actions. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2388 | kwarg = _getopt( ui, cmd, kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2389 | stamp = kwarg.pop( "stamp", None ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2390 | if (stamp) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2391 | def stamp_commit_message( opts ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2392 | msg = opts["message"] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2393 | if (0 > msg.lower().find( stamp.lower() )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2394 | msg += " %s" % stamp |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2395 | opts["message"] = msg |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2396 | return opts |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2397 | commands.reg_option_mutator( "commit", stamp_commit_message ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2398 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2399 | func = func.get( cmd, lambda *arg, **kwarg : flow.action( stream, *arg, **kwarg ) ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2400 | func( *arg, **kwarg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2401 | except AbortFlow, e : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2402 | errmsg = e.error_message() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2403 | _error( ui, *errmsg ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2404 | if (getattr( e, "note", None )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2405 | _note( ui, *((e.note,) if (isinstance( e.note, str )) else e.note), via_quiet = True ) |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2406 | elif (errmsg[0].startswith( "Stream not found" )) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2407 | misspelling = difflib.get_close_matches( stream, ["init", "upgrade", "unshelve", "help", "version",], 3, 0.7 ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2408 | note = ("Did you mean the command: %s?" % " or ".join( misspelling )) if (misspelling ) else None |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2409 | note = ("Did you mean the command: init?") if ("install" == stream) else note |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2410 | note = ("Did you mean the command: upgrade?") if ("update" == stream) else note |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2411 | if (note) : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2412 | _note( ui, note, via_quiet = True ) |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2413 | |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2414 | if (ui.tracebackflag) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2415 | if (hasattr( e, "traceback" )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2416 | ei = e.traceback |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2417 | sys.excepthook( ei[0], ei[1], ei[2] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2418 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2419 | ei = sys.exc_info() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2420 | sys.excepthook( ei[0], ei[1], ei[2] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2421 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2422 | commands.print_history() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2423 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2424 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2425 | os.chdir( flow.orig_dir ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2426 | except : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2427 | _print( ui, "The original dir is gone in file system (probably due to updating branch)." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2428 | _print( ui, "You are now in the root dir of the repository." ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2429 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2430 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2431 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2432 | # On Windows, a topic should be wrapped with quotes. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2433 | if ("nt" == os.name) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2434 | flow_cmd.__doc__ = flow_cmd.__doc__.replace( "help @help", 'help "@help"' ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2435 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2436 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2437 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2438 | class Help( object ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2439 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2440 | Online help system |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2441 | We define all help topics within this class. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2442 | We support text effects on help message. See C{colortable} for predefined effects as C{flow.help.*}. To make it easy to use |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2443 | text effects, we invented a primitive markdown syntax. For now, we support only the C{flow.help.code}, which will be |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2444 | applied to text wrapped with '{{{' and '}}}'. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2445 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2446 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2447 | SHORT_USAGE = """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2448 | flow: a Mercurial workflow extension |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2449 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2450 | Usage: {{{hg flow {<stream> [<action> [<arg>...]] | <command>} [<option>...]}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2451 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2452 | """ + flow_cmd.__doc__ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2453 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2454 | TOPIC = { |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2455 | "@deprecated" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2456 | The following item has been deprecated in this release and will be removed in |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2457 | the future: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2458 | * [hgflow] The '[hgflow]' section name in hg's configuration file has been |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2459 | renamed to '[flow]'. |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2460 | * Syntax: hg flow <stream> finish {{{<tag-name>}}} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2461 | Replacement syntax: hg flow <stream> finish {{{-t <tag-name>}}} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2462 | Any positional arguments for `finish` will be considered as |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2463 | error. |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2464 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2465 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2466 | "@examples" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2467 | {{{> hg flow}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2468 | flow: Currently open branches: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2469 | flow: <master> : default |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2470 | flow: <develop>: develop develop/0.9# |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2471 | flow: <feature>: feature/help* |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2472 | # Show open branches in all streams. The '*' marker indicates the branch which |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2473 | # the workspace is in, and the '#' marker indicates there are shelved changes |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2474 | # in the branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2475 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2476 | {{{> hg flow feature finish --history}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2477 | # Finish the current <feature> branch, and print the history of primitive hg |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2478 | # commands used by the workflow. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2479 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2480 | {{{> hg flow develop/0.9:feature start new_v0.9_feature}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2481 | # Start a new feature branch from the 'develop/0.9' branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2482 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2483 | {{{> hg flow develop/0.9:feature finish --verbose}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2484 | flow: note: Hg command history: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2485 | flow: note: hg commit --message "flow: Closed <feature> 'help'." --close-branch |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2486 | flow: note: hg update develop/0.9 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2487 | flow: note: hg merge feature/help |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2488 | flow: note: hg commit --message "flow: Merged <feature> 'help' to <develop/0.9> ('develop/0.9')." |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2489 | flow: note: hg update develop |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2490 | flow: note: hg merge develop/0.9 |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2491 | flow: note: hg commit --message "flow: Merged <develop/0.9:feature> 'help' to <develop> ('develop')." |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2492 | # Finish the workspace <feature> branch, merging it to 'develop/0.9', which is |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2493 | # in turn merged to <develop>'s trunk. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2494 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2495 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2496 | "@master" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2497 | Master stream contains 1 and only 1 branch that has only and all production |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2498 | revisions (i.e., official releases). New revisions in <master> are created when |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2499 | a <release> or <hotfix> branch merges into <master>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2500 | The following actions can be applied to <master>: push, publish, pull, list, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2501 | and log. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2502 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2503 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2504 | "@develop" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2505 | Develop stream contains all changes made for future releases. <release> and |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2506 | <feature> branches are started from <develop> and will be merged to <develop> |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2507 | when finished. Since version 0.9, user can create branches in <develop>. A |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2508 | <develop> branch can be used as the source branch to start <release> and |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2509 | <feature> branches. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2510 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2511 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2512 | "@feature" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2513 | Feature stream contains branches where new features for future releases are |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2514 | developed. Branches in <feature> are created from either <develop> or an |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2515 | existing <feature> branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2516 | All actions can be applied to <feature> branches. When a <feature> branch is |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2517 | finished, it will normally be merged into <develop>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2518 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2519 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2520 | "@release" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2521 | Release stream contains branches of release candidates. Code in <release> branch |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2522 | will usually be tested and bug-fixed. Once a <release> branch is graduated from |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2523 | the testing and bug-fixing process, it will be merged to both <master> and |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2524 | <develop>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2525 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2526 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2527 | "@hotfix" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2528 | Hotfix stream contains branches for fixing bugs in <master>. <hotfix> branches |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2529 | are started from <master> and once they are finished will be merged to both |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2530 | <master> and <develop>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2531 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2532 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2533 | "@support" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2534 | Support stream contains branches for supporting a previous release. <support> |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2535 | branches are started from <master> and will never be merged to anywhere. When |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2536 | finished, they will be simply closed. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2537 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2538 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2539 | "@start" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2540 | Start a new branch in stream. <feature> and <release> branches are started from |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2541 | <develop>. <hotfix> and <support> branches are started from <master>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2542 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2543 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2544 | {{{hg flow <stream> start <name> [<option>...]}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2545 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2546 | options: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2547 | -r --rev REV Revision to start a new branch from. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2548 | -m --message TEXT Record TEXT as commit message when opening new branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2549 | -p --stamp TEXT Append TEXT to all commit messages. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2550 | -d --date DATE Record the specified DATE as commit date. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2551 | -u --user USER Use specified USER as committer. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2552 | --dirty Start a new branch from current dirty workspace branch and |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2553 | move all uncommitted changes to the new branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2554 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2555 | The new branch is named after <stream-prefix>/<name>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2556 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2557 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2558 | "@finish" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2559 | Finishing a branch in stream means to close the branch and merge the branch to |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2560 | destination stream(s). <feature> branches will be merged to <develop>, and |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2561 | <release> and <hotfix> branches will be merged to both <develop> and <master>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2562 | <support> branches will not be merged to anywhere, and they will only be closed. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2563 | Note that merging to a non-trunk <develop> branch will cause the <develop> |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2564 | branch to be merged into the <develop> trunk. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2565 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2566 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2567 | {{{hg flow <stream> finish [<option>...]}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2568 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2569 | The workspace branch will be finished. Hgflow intentionally forbids finishing |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2570 | a branch other than the workspace one, which forces user to update to and |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2571 | check the branch before finishing it. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2572 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2573 | The workspace branch must be in the specified <stream>. When the workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2574 | branch is merged into <master>, a new tag will be added to the corresponding |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2575 | snapshot in the <master> trunk. User can use the '-t' option to specify the tag |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2576 | name; if not specified, the tag name will be derived automatically from the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2577 | name of the workspace branch by replacing the stream prefix with the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2578 | `version_prefix`. The '-t' option has no effect if the workspace branch is not |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2579 | merged into <master>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2580 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2581 | options: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2582 | -c --commit Commit changes before closing the branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2583 | -m --message TEXT Record TEXT as commit message. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2584 | -p --stamp TEXT Append TEXT to all commit messages. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2585 | -t --tag NAME Tag the snapshot in the <master> trunk with NAME. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2586 | -d --date DATE Record the specified DATE as commit date. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2587 | -u --user USER Use specified USER as committer. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2588 | -e --erase Erase branch after it is merged successfully. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2589 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2590 | N.B.: RE. '--erase': A branch cannot be erased if it has been previously merged |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2591 | to other branches, creating nodes that are not erased together with the branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2592 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2593 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2594 | "@push" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2595 | Push the workspace branch to the remote repository. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2596 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2597 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2598 | {{{hg flow <stream> push}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2599 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2600 | alternative syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2601 | {{{hg flow <stream> publish}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2602 | The two syntaxes are completely equivalent. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2603 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2604 | The workspace branch must be in <stream>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2605 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2606 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2607 | "@publish" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2608 | Push the workspace branch to the remote repository. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2609 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2610 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2611 | {{{hg flow <stream> publish}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2612 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2613 | alternative syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2614 | {{{hg flow <stream> push}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2615 | The two syntaxes are completely equivalent. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2616 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2617 | The workspace branch must be in <stream>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2618 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2619 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2620 | "@pull" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2621 | Pull a branch named after <stream-prefix>/<name> from the remote repository and |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2622 | update the workspace. If <name> is not specified, it defaults to the workspace |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2623 | branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2624 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2625 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2626 | {{{hg flow <stream> pull [<name>]}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2627 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2628 | The pulled branch must be in <stream>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2629 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2630 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2631 | "@list" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2632 | List all open branches in <stream>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2633 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2634 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2635 | {{{hg flow <stream> list}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2636 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2637 | alternative syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2638 | {{{hg flow <stream>}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2639 | If <stream> has trunk (e.g., <develop> and <master>), this syntax will update |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2640 | the workspace to the trunk besides listing all open branches in <stream>. If |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2641 | <stream> does not have trunk (e.g., <feature>, <release>, <hotfix>, and |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2642 | <support>), this syntax is completely equivalent to the other one (i.e., only |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2643 | list all open branches in the stream). |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2644 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2645 | option: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2646 | -c --closed Show open and closed branches in <stream>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2647 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2648 | example: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2649 | {{{> hg flow hotfix list}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2650 | flow: Open <hotfix> branches: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2651 | flow: hotfix/0.9.6# |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2652 | flow: hotfix/0.9.6/init_-d_option* |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2653 | # List all currently open branches in <hotfix>. The '*' marker indicates the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2654 | # branch which the workspace is in, and the '#' marker indicates that there are |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2655 | # shelved changes for the branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2656 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2657 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2658 | "@log" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2659 | Show revision history of the specified branch, which must be in <stream>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2660 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2661 | {{{hg flow <stream> log [<basename>]}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2662 | where <basename> is of the branch name, e.g., if a branch's name is |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2663 | 'feature/colored_help', its basename relative to <feature> (assuming the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2664 | branch name prefix is 'feature/') is 'colored_help'. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2665 | If <basename> is missing, it will default to the workspace branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2666 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2667 | Show revision history of a single file in the workspace branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2668 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2669 | {{{hg flow <stream> log <filename>}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2670 | If <filename> happens to be the same as the basename of a branch in <stream>, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2671 | it will be recognized as the basename. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2672 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2673 | alternative syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2674 | {{{hg flow <stream> log -F <filename>}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2675 | Use this syntax to avoid the potential ambiguity with the prior syntax. Also, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2676 | you can specify multiple file names to show revision history of these files. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2677 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2678 | Show revision history of specified files in a designated branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2679 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2680 | {{{hg flow <stream> log <basename> -F <filename>}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2681 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2682 | options: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2683 | -F --file FILE [+] File to show history of. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2684 | -d --date DATE Show revisions matching date spec. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2685 | -u --user USER Show revisions committed by USER. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2686 | -k --keyword TEXT Do case-insensitive search for a given text. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2687 | -p --patch Show patch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2688 | -g --git Use git extended diff format to show patch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2689 | -l --limit VALUE Limit number of changesets displayed. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2690 | -c --closed Show closed branches when used together with -s option. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2691 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2692 | [+] marked option can be specified multiple times. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2693 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2694 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2695 | "@abort" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2696 | Aborting the workspace branch can be done in two ways: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2697 | 1. The default way is simply marking the branch as closed so that it will not |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2698 | show up when you list alive branches, but all changesets in the branch |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2699 | remain in the repository and you cannot reuse the branch's name for a |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2700 | different branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2701 | 2. The other way is erasing the branch, in other words, completely deleting the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2702 | branch and all changesets in it from the repository. This way is |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2703 | devastating, but you can clear unneeded changesets and reuse the branch's |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2704 | name. To abort a branch in this way, you just add the {{{-e}}} option. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2705 | N.B.: A branch cannot be erased if you have previously merged it to other |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2706 | branches that remain in the repository. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2707 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2708 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2709 | {{{hg flow <stream> abort [-m <TEXT>] [-e]}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2710 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2711 | options: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2712 | -m --message TEXT Record TEXT as commit message when closing branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2713 | -p --stamp TEXT Append TEXT to all commit messages. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2714 | -e --erase Abort branch and erase it. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2715 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2716 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2717 | "@promote" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2718 | Merge the workspace branch to destination branches. The destination branches, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2719 | if omitted, will default to the trunk of the destination stream. The destination |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2720 | streams of the basic streams are listed as follows: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2721 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2722 | stream destination |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2723 | ------------+----------------------- |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2724 | <feature> <develop> |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2725 | <develop> <master> |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2726 | <release> <develop> & <master> |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2727 | <hotfix> <develop> & <master> |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2728 | <master> n/a |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2729 | <support> n/a |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2730 | natural stream-trunk |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2731 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2732 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2733 | {{{hg flow <stream> promote [<destination-branch-full-name>...] [<option>...]}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2734 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2735 | The workspace branch must be in <stream>. If the `-r` option is omitted, its |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2736 | value will default to the head of the workspace branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2737 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2738 | options: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2739 | -r --rev REV Revision to promote to other branches. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2740 | -m --message TEXT Record TEXT as commit message when promoting branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2741 | -p --stamp TEXT Append TEXT to all commit messages. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2742 | -t --tag NAME Tag the merging changeset with NAME |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2743 | -d --date DATE Record the specified DATE as commit date. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2744 | -u --user USER Use specified USER as committer. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2745 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2746 | examples: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2747 | {{{> hg flow develop promote -t v0.2.0}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2748 | # Immediately release <develop> trunk's tip into <master>, bypassing <release>. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2749 | # What this command exactly does is to promote the <develop> trunk into |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2750 | # <master> (<master> is <develop>'s default promotion destination, so you don't |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2751 | # have to spell it out in the command), and then label the <master> snapshot |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2752 | # with "v0.2.0". |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2753 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2754 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2755 | "@rebase" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2756 | Rebase the workspace branch to the specified revision. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2757 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2758 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2759 | {{{hg flow <stream> rebase [-d <rev>]}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2760 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2761 | option: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2762 | -p --stamp TEXT Append TEXT to all commit messages. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2763 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2764 | The workspace branch must be in <stream>. If the destination revision is not |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2765 | specified, it will default to the source branch of the workspace branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2766 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2767 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2768 | "@version" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2769 | Show version of the flow extension. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2770 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2771 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2772 | {{{hg flow version}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2773 | """, |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2774 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2775 | "@rename" : """ |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2776 | Rename the workspace branch to a new basename. Under the hood, this action |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2777 | will create a new branch with the new basename and copy/graft the commits in |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2778 | the workspace branch to the new branch, and then erase the workspace branch. |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2779 | All the user, date, and commit-message information will be copied to the |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2780 | new branch. |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2781 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2782 | N.B.: The workspace branch should be a simple linear branch. This means: |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2783 | (1) It has not merged to other branches; |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2784 | (2) It has no subbranches; |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2785 | (3) No other branches has merged to this branch. |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2786 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2787 | syntax: |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2788 | {{{hg flow <stream> rename [-t <basename>]}}} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2789 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2790 | option: |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2791 | -t --to NAME Rename the basename of the workspace branch to NAME. |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2792 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2793 | The workspace branch must be in <stream>. |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2794 | """, |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2795 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2796 | "@version" : """ |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2797 | Show version of the flow extension. |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2798 | |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2799 | syntax: |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2800 | {{{hg flow version}}} |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2801 | """, |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2802 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2803 | "@init" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2804 | Initialize the flow extension for the repository. The configuration file: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2805 | {{{.hgflow}}} will be written in the root dir of the repository. The file will be |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2806 | tracked by hg. If you have multiple open branches, the file should be present |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2807 | and synchronized in all of them -- init command will do this for you |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2808 | automatically. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2809 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2810 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2811 | {{{hg flow init [<option>...]}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2812 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2813 | options: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2814 | -f --force Force reinitializing flow. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2815 | -u --user USER Use specified USER as committer. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2816 | -p --stamp TEXT Append TEXT to all commit messages. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2817 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2818 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2819 | "@upgrade" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2820 | Upgrade the configuration file from v0.9.4 (or older) to v0.9.5 or later. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2821 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2822 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2823 | {{{hg flow upgrade}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2824 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2825 | options: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2826 | -u --user USER Use specified USER as committer. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2827 | -p --stamp TEXT Append TEXT to all commit messages. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2828 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2829 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2830 | "@unshelve" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2831 | Unshelve previously shelved changes by hgflow. Sometimes, unshelving is not |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2832 | automatically executed because workflow is terminated prematurelly. In such |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2833 | situations, you can always use the unshelve command to manually restore the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2834 | shelved changes. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2835 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2836 | syntax: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2837 | {{{hg flow unshelve}}} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2838 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2839 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2840 | "@terms" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2841 | Concepts: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2842 | - stream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2843 | The entire set of branches of the same type. Stream is not branch, it is a |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2844 | set of branches. In general, a stream can contain any number (including zero) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2845 | of branches. The master stream is, however, special in that it contains 1 and |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2846 | only 1 branch. The develop stream contains at least one branch. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2847 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2848 | - basic streams |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2849 | Refers to the master, develop, feature, release, hotfix, and support streams |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2850 | as predefined in Driessen's model. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2851 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2852 | - natural streams |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2853 | Refers to a set of branches that diverged from and will merge into the same |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2854 | branch. The set of branches plus the branch that they diverged from form a |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2855 | natural stream. The branch that all the other branches in the same natural |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2856 | stream diverged from and will merge into is the trunk of the natural stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2857 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2858 | - trunk |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2859 | Trunk is a special branch. A stream can optionally have a trunk, but only one |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2860 | trunk at most. For example, master and develop streams each has a trunk, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2861 | whereas feature, release, hotfix, and support streams don't. And all natural |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2862 | streams each has a trunk. If a stream has a trunk, all branches in the stream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2863 | normally should diverge from the trunk and later merge to the trunk when they |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2864 | are finished. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2865 | Trunk is a relative concept. A trunk of a stream may be a regular branch of |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2866 | another stream. (The former stream will be called a substream of the latter.) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2867 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2868 | - source |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2869 | Source is an attribute of stream. The source of a stream refers to the stream |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2870 | where branches in the current stream are created from. A stream's source can |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2871 | be the stream itself. But this is not always the case, for example, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2872 | the sources of release and feature streams are the develop stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2873 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2874 | - destin |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2875 | Destin is another attribute of stream. The destin of a stream refers to the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2876 | stream(s) where branches in the current stream will merge to. A stream's |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2877 | destin can be the stream itself. But this is not always the case, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2878 | for example, the destin of release is the develop and the master streams. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2879 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2880 | - fullname |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2881 | Branch name as recognized by the SCM, e.g., feature/enhance_log. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2882 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2883 | - basename |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2884 | Branch name recognized by flow, but not necessarily by SCM, e.g., |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2885 | enhanced_log (with prefix 'feature/' dropped). |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2886 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2887 | - flow action |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2888 | Refer to action on a specified stream, e.g., hg flow feature start, where |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2889 | 'start' is an action. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2890 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2891 | - flow command |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2892 | Commands don't act on a stream, e.g., hg flow unshelve, where 'unshelve' |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2893 | is a command. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2894 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2895 | - hg command |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2896 | Refer to commands not from flow extension. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2897 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2898 | - workflow |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2899 | Refer to the process of executing a sequence of hg commands. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2900 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2901 | - history |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2902 | Refer to a sequence of executed hg commands. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2903 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2904 | Notations |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2905 | - <stream> |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2906 | Examples: <feature>, <hotfix>. These denote the corresponding streams. When |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2907 | you refer to a stream, e.g., feature stream, use '<feature>' (or more |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2908 | verbosely 'feature stream'), instead of '<feature> stream', because |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2909 | '<feature>' already means stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2910 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2911 | - <stream> branch |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2912 | Example: a <feature> branch. This phrase refers a branch in <feature>. Do not |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2913 | use 'a feature branch' to mean a branch in <feature> because the word |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2914 | 'feature' there should take its usual meaning as in English, which doesn't |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2915 | necessarily mean the feature stream. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2916 | """, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2917 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2918 | "@help" : """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2919 | Show online help and then quit. An argument can be optionally given after the |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2920 | 'help' command to specify a particular help topic. Detailed online help is |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2921 | available for the following topics: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2922 | @all - Show detailed help for all supported topics. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2923 | @<stream> - Show help about a particular stream, e.g., {{{@feature}}}, {{{@master}}}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2924 | @<action> - Show help about an action, e.g., {{{@finish,}}} {{{@log}}}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2925 | @<command> - Show help about a command, e.g., {{{@help}}}, {{{@unshelve}}}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2926 | @terms - Show explanations of terminologies used in hgflow. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2927 | @examples - Show a few command examples. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2928 | @deprecated - Show a list of deprecated features.%s""" % \ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2929 | ("\nOn Windows platform, a topic should be wrapped with quotes, e.g., {{{\"@finish\"}}}." if ("nt" == os.name) else ""), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2930 | } |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2931 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2932 | def __init__( self, ui, repo ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2933 | self.ui = ui |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2934 | self.repo = repo |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2935 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2936 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2937 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2938 | def _print( self, s ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2939 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2940 | Print text with predefined effects. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2941 | @type s: C{str} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2942 | @param s: String to be printed |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2943 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2944 | import re |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2945 | code_pattern = re.compile( "{{{.*?}}}" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2946 | last_span = (0, 0,) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2947 | for match in code_pattern.finditer( s ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2948 | span = match.span() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2949 | self.ui.write( s[last_span[1]:span[0]] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2950 | self.ui.write( s[span[0] + 3:span[1] - 3], label = "flow.help.code" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2951 | last_span = span |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2952 | self.ui.write( s[last_span[1]:] ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2953 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2954 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2955 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2956 | def print_help( self, topic = None, *arg, **opts ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2957 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2958 | Print help information. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2959 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2960 | @type topic : C{str} or C{None} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2961 | @param topic : Help topic |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2962 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2963 | if (topic is None) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2964 | self._print( self.SHORT_USAGE ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2965 | elif (topic == "@all") : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2966 | doc = self.TOPIC.items() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2967 | doc.sort() |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2968 | for t, help in doc : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2969 | self.ui.write( "%s" % t, label = "flow.help.topic" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2970 | self._print( "%s\n" % help ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2971 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2972 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2973 | help_content = self.TOPIC[topic] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2974 | self.ui.write( "%s" % topic, label = "flow.help.topic" ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2975 | self._print( "%s\n" % help_content ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2976 | except KeyError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2977 | _error( self.ui, "Unknown topic: %s" % topic ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2978 | if (("@" + topic) in self.TOPIC or topic == "all") : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2979 | _error( self.ui, "Did you mean '@%s'?" % topic ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2980 | _print( self.ui, """Supported topics are the following: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2981 | @all - Show detailed help for all supported topics. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2982 | @<stream> - Show help about a particular stream, e.g., @feature, @master. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2983 | @<action> - Show help about an action, e.g., @finish, @log. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2984 | @<command> - Show help about a command, e.g., @help, @unshelve. |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
2985 | @terms - Show explanations of terminologies used in hgflow. |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2986 | @examples - Show a few command examples. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2987 | @deprecated - Show a list of deprecated features. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2988 | """ ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2989 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2990 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2991 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2992 | OPT_FILTER = { |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2993 | "init" : ("force", "user", "stamp", "default",), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2994 | "upgrade" : ("user", "stamp",), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2995 | "start" : ("rev", "message", "stamp", "date", "user", "dirty",), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2996 | "finish" : ("commit", "message", "stamp", "tag", "date", "user", "erase", "onstream",), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2997 | "list" : ("closed",), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2998 | "log" : ("file", "date", "user", "keyword", "patch", "git", "limit", "graph", "closed", "onstream",), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
2999 | "abort" : ("erase", "message", "stamp", "onstream",), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3000 | "promote" : ("rev", "message", "stamp", "tag", "date", "user", "onstream",), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3001 | "rebase" : ("dest", "onstream", "stamp",), |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
3002 | "rename" : ("to",), |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3003 | } |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3004 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3005 | OPT_CONFLICT = { |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3006 | "dest" : ("-d", '', ), # (short-form-of-option, default-value,) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3007 | "date" : ("-d", '', ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3008 | "default" : ("-d", False,), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3009 | "closed" : ("-c", False,), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3010 | "commit" : ("-c", False,), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3011 | "stamp" : ("-p", '' ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3012 | "patch" : ("-p", False ), |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
3013 | "tag" : ("-t", '' ), |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
3014 | "to" : ("-t", '' ), |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3015 | } |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3016 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3017 | def _getopt( ui, key, opt ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3018 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3019 | Return user-specified options. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3020 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3021 | We cannot separate options for different subcommands because of the design of the C{cmdtable}. So ambiguity exists for some |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3022 | options. For example, the C{-d} option, it means C{dest} for C{rebase} and C{date} for C{finish}. For either of the two |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3023 | actions, the value of the C{-d} option could be saved in C{dest} or C{date}. In general, we don't know which one. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3024 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3025 | We have to do a bit of parsing to resolve potential ambiguity. This function is here for that purpose. C{opt} is the raw |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3026 | option C{dict} from C{hg}. We will reparse it a bit for a particular command or action given by C{key}. The function |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3027 | returns a C{dict} that contains the option's name and its value. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3028 | N.B.: |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3029 | (1) If the value of an option evaluates to false, the option will be absent in the returned C{dict} object. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3030 | (2) This function will mutate and return C{opt}. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3031 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3032 | @type ui: C{mercurial.ui} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3033 | @param ui: Mercurial user interface object |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3034 | @type key: C{str} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3035 | @param key: Command or action for which you are getting the options |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3036 | @type opt: C{dict} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3037 | @param opt: Raw options |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3038 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3039 | @raise AbortFlow: AbortFlow exception will be raised if there is option error. |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3040 | """ |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3041 | ret = {} |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3042 | rec_short = [] # A list of recoginized short options |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3043 | for e in OPT_FILTER.get( key, [] ) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3044 | if (opt.get( e )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3045 | ret[e] = opt[e] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3046 | elif (e in OPT_CONFLICT) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3047 | short_opt, default_value = OPT_CONFLICT[e] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3048 | argv = sys.argv |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3049 | if (short_opt in argv) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3050 | rec_short.append( short_opt ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3051 | if (isinstance( default_value, str )) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3052 | index = argv.index( short_opt ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3053 | try : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3054 | ret[e] = argv[index + 1] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3055 | except IndexError : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3056 | raise AbortFlow( "Value not found for %s option." % short_opt ) |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3057 | else : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3058 | ret[e] = not default_value |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3059 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3060 | bad_opt = [e for e in opt if (e not in (["history", "dry_run"] + ret.keys()) and opt[e])] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3061 | bad_opt = [e for e in bad_opt if (e in sys.argv) or (OPT_CONFLICT.get( e, [0,] )[0] not in rec_short)] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3062 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3063 | if (bad_opt) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3064 | bad_opt = [e.replace( "_", "-" ) for e in bad_opt] |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3065 | if (key is None) : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3066 | raise AbortFlow( "Unrecognized option%s for `hg flow`: %s." % |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3067 | ("" if (len( bad_opt ) == 1) else "s", "--" + (", --".join( bad_opt )),), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3068 | note = "`hg flow` should take no options." ) |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
3069 | elif (key in Flow.ACTION_NAME) : |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3070 | raise AbortFlow( "Unrecognized option%s for `%s`: %s." % |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3071 | ("" if (len( bad_opt ) == 1) else "s", key, "--" + (", --".join( bad_opt )),), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3072 | note = "Execute `hg flow help @%s` to see available options for `%s`." % (key, key,) ) |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
3073 | else : |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
3074 | raise AbortFlow( "Unrecognized option%s: %s." % |
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
3075 | ("" if (len( bad_opt ) == 1) else "s", "--" + (", --".join( bad_opt )),) ) |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3076 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3077 | return ret |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3078 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3079 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3080 | |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3081 | cmdtable = { |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3082 | "flow" : |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3083 | (flow_cmd, |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3084 | [("", "history", False, _("Print history of hg commands used in this workflow."), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3085 | ("", "dry-run", None, _("Do not perform actions, just print history."), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3086 | ("", "dirty", False, _("Start a new branch from a dirty workspace, and move all" |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3087 | " uncommitted changes to the new branch. [start]"), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3088 | ("c", "closed", False, _("Show normal and closed branches in stream. [list, log]"), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3089 | ("c", "commit", False, _("Commit changes before closing the branch. [finish]"), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3090 | ("d", "default", False, _("Initialize flow with default configuration. [init]"), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3091 | ("d", "date", '', _("Record the specified date as commit date. [start, finish, promote]"), _('DATE'),), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3092 | ("d", "date", '', _("Show revisions matching date spec. [log]"), _('DATE'),), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3093 | ("d", "dest", '', _("Destination changeset of rebasing. [rebase]"), _('REV' ),), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3094 | ("e", "erase", False, _("Erase branch after it is merged or aborted successfully. [finish, abort]"), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3095 | ("F", "file", [], _("File to show history of. [log]"), _('FILE'),), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3096 | ("f", "force", False, _("Force reinitializing flow. [init]"), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3097 | ("g", "git", False, _("Use git extended diff format to show patch. [log]"), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3098 | ("k", "keyword", '', _("Do case-insensitive search for a given text. [log]"), _('TEXT'),), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3099 | ("l", "limit", '', _("Limit number of changesets displayed. [log]"), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3100 | ("m", "message", '', _("Record TEXT as commit message. [start, finish, promote, abort]"), _('TEXT'),), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3101 | ("p", "stamp", '', _("Append TEXT to all commit messages. [init, upgrade, start, finish," |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3102 | " promote, rebase, abort]"), _('TEXT'),), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3103 | ("p", "patch", False, _("Show patch. [log]"), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3104 | ("r", "rev", '', _("Revision to start a new branch from. [start]"), _('REV'), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3105 | ("r", "rev", '', _("Revision to promote to other branches. [promote]"), _('REV'), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3106 | ("s", "onstream", False, _("Act on stream. [finish, rebase, log, abort]"), ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3107 | ("t", "tag", '', _("Tag the merging changeset with NAME. [promote]"), _('NAME'),), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3108 | ("t", "tag", '', _("Tag the <master> trunk with NAME after merging. [finish]"), _('NAME'),), |
253
a1accbd675a0
Update hgflow to 0316d61 (v0.9.8.1~)
Meredith Howard <mhoward@roomag.org>
parents:
8
diff
changeset
|
3109 | ("t", "to", '', _("Rename the branch to NAME. [rename]"), _('NAME'),), |
8
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3110 | ("u", "user", '', _("Use specified user as committer. [init, upgrade, start, finish," |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3111 | " promote]"), _('USER'),), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3112 | ("u", "user", '', _("Show revisions committed by specified user. [log]"), _('USER'),), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3113 | ], |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3114 | "hg flow {<stream> [<action> [<arg>]] | <command>} [<option>...]", |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3115 | ), |
ba72a71f23e6
Add mercurial config and hgflow extension
Meredith Howard <mhoward@roomag.org>
parents:
diff
changeset
|
3116 | } |