Mercurial > repos > other > linux
annotate prompt.py @ 64:39b07c5f8785
Add Git and Mercurial support to command prompt
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Tue, 25 Apr 2017 11:42:15 +0100 |
parents | |
children | 38843a80f378 |
rev | line source |
---|---|
64
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
2 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
3 '''get repository information for use in a shell prompt |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
4 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
5 Take a string, parse any special variables inside, and output the result. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
6 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
7 Useful mostly for putting information about the current repository into |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
8 a shell prompt. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
9 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
10 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
11 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
12 Taken from https://bitbucket.org/sjl/hg-prompt/src @ 5334581 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
13 ''' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
14 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
15 from __future__ import with_statement |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
16 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
17 import re |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
18 import os |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
19 import subprocess |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
20 from datetime import datetime, timedelta |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
21 from contextlib import closing |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
22 from os import path |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
23 from mercurial import extensions, commands, cmdutil, help |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
24 from mercurial.i18n import _ |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
25 from mercurial.node import hex, short |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
26 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
27 cmdtable = {} |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
28 command = cmdutil.command(cmdtable) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
29 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
30 # `revrange' has been moved into module `scmutil' since v1.9. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
31 try : |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
32 from mercurial import scmutil |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
33 revrange = scmutil.revrange |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
34 except : |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
35 revrange = cmdutil.revrange |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
36 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
37 CACHE_PATH = ".hg/prompt/cache" |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
38 CACHE_TIMEOUT = timedelta(minutes=15) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
39 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
40 FILTER_ARG = re.compile(r'\|.+\((.*)\)') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
41 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
42 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
43 def _cache_remote(repo, kind): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
44 cache = path.join(repo.root, CACHE_PATH, kind) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
45 c_tmp = cache + '.temp' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
46 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
47 popenargs = ['hg', kind, '--quiet'] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
48 remote_path = repo.ui.config('prompt', 'remote') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
49 if remote_path is not None: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
50 popenargs.append(remote_path) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
51 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
52 null_path = 'NUL:' if subprocess.mswindows else '/dev/null' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
53 with open(null_path, 'w') as null_fp: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
54 with open(c_tmp, 'w') as stdout_fp: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
55 exit_code = subprocess.call(popenargs, stdout=stdout_fp, stderr=null_fp) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
56 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
57 if exit_code not in (0, 1): # (changesets_found, changesets_not_found) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
58 msg = "hg-prompt error: " |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
59 if remote_path: # Failure likely due to bad remote. Is 255 a valid check? |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
60 msg += "Can't access remote '%s'" % remote_path |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
61 else: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
62 msg += "Error attempting 'hg %s'" % kind |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
63 print msg |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
64 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
65 os.rename(c_tmp, cache) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
66 return |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
67 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
68 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
69 def _with_groups(groups, out): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
70 out_groups = [groups[0]] + [groups[-1]] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
71 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
72 if any(out_groups) and not all(out_groups): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
73 print 'Error parsing prompt string. Mismatched braces?' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
74 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
75 out = out.replace('%', '%%') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
76 return ("%s" + out + "%s") % (out_groups[0][:-1] if out_groups[0] else '', |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
77 out_groups[1][1:] if out_groups[1] else '') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
78 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
79 def _get_filter(name, g): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
80 '''Return the filter with the given name, or None if it was not used.''' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
81 matching_filters = filter(lambda s: s and s.startswith('|%s' % name), g) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
82 if not matching_filters: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
83 return None |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
84 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
85 # Later filters will override earlier ones, for now. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
86 f = matching_filters[-1] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
87 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
88 return f |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
89 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
90 def _get_filter_arg(f): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
91 if not f: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
92 return None |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
93 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
94 args = FILTER_ARG.match(f).groups() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
95 if args: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
96 return args[0] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
97 else: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
98 return None |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
99 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
100 @command('prompt', |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
101 [('', 'angle-brackets', None, 'use angle brackets (<>) for keywords'), |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
102 ('', 'cache-incoming', None, 'used internally by hg-prompt'), |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
103 ('', 'cache-outgoing', None, 'used internally by hg-prompt')], |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
104 'hg prompt STRING') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
105 def prompt(ui, repo, fs='', **opts): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
106 '''get repository information for use in a shell prompt |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
107 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
108 Take a string and output it for use in a shell prompt. You can use |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
109 keywords in curly braces:: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
110 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
111 $ hg prompt "currently on {branch}" |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
112 currently on default |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
113 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
114 You can also use an extended form of any keyword:: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
115 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
116 {optional text here{keyword}more optional text} |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
117 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
118 This will expand the inner {keyword} and output it along with the extra |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
119 text only if the {keyword} expands successfully. This is useful if you |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
120 have a keyword that may not always apply to the current state and you |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
121 have some text that you would like to see only if it is appropriate:: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
122 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
123 $ hg prompt "currently at {bookmark}" |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
124 currently at |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
125 $ hg prompt "{currently at {bookmark}}" |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
126 $ hg bookmark my-bookmark |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
127 $ hg prompt "{currently at {bookmark}}" |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
128 currently at my-bookmark |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
129 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
130 See 'hg help prompt-keywords' for a list of available keywords. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
131 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
132 The format string may also be defined in an hgrc file:: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
133 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
134 [prompt] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
135 template = {currently at {bookmark}} |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
136 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
137 This is used when no format string is passed on the command line. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
138 ''' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
139 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
140 def _basename(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
141 return _with_groups(m.groups(), path.basename(repo.root)) if repo.root else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
142 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
143 def _bookmark(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
144 try: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
145 book = extensions.find('bookmarks').current(repo) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
146 except AttributeError: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
147 book = getattr(repo, '_bookmarkcurrent', None) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
148 except KeyError: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
149 book = getattr(repo, '_bookmarkcurrent', None) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
150 if book is None: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
151 book = getattr(repo, '_activebookmark', None) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
152 if book: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
153 cur = repo['.'].node() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
154 if repo._bookmarks[book] == cur: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
155 return _with_groups(m.groups(), book) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
156 else: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
157 return '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
158 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
159 def _branch(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
160 g = m.groups() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
161 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
162 branch = repo.dirstate.branch() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
163 quiet = _get_filter('quiet', g) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
164 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
165 out = branch if (not quiet) or (branch != 'default') else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
166 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
167 return _with_groups(g, out) if out else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
168 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
169 def _closed(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
170 g = m.groups() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
171 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
172 quiet = _get_filter('quiet', g) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
173 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
174 p = repo[None].parents()[0] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
175 pn = p.node() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
176 branch = repo.dirstate.branch() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
177 closed = (p.extra().get('close') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
178 and pn in repo.branchheads(branch, closed=True)) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
179 out = 'X' if (not quiet) and closed else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
180 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
181 return _with_groups(g, out) if out else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
182 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
183 def _count(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
184 g = m.groups() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
185 query = [g[1][1:]] if g[1] else ['all()'] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
186 return _with_groups(g, str(len(revrange(repo, query)))) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
187 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
188 def _node(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
189 g = m.groups() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
190 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
191 parents = repo[None].parents() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
192 p = 0 if '|merge' not in g else 1 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
193 p = p if len(parents) > p else None |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
194 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
195 format = short if '|short' in g else hex |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
196 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
197 node = format(parents[p].node()) if p is not None else None |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
198 return _with_groups(g, str(node)) if node else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
199 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
200 def _patch(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
201 g = m.groups() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
202 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
203 try: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
204 extensions.find('mq') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
205 except KeyError: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
206 return '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
207 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
208 q = repo.mq |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
209 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
210 if _get_filter('quiet', g) and not len(q.series): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
211 return '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
212 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
213 if _get_filter('topindex', g): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
214 if len(q.applied): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
215 out = str(len(q.applied) - 1) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
216 else: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
217 out = '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
218 elif _get_filter('applied', g): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
219 out = str(len(q.applied)) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
220 elif _get_filter('unapplied', g): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
221 out = str(len(q.unapplied(repo))) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
222 elif _get_filter('count', g): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
223 out = str(len(q.series)) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
224 else: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
225 out = q.applied[-1].name if q.applied else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
226 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
227 return _with_groups(g, out) if out else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
228 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
229 def _patches(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
230 g = m.groups() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
231 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
232 try: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
233 extensions.find('mq') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
234 except KeyError: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
235 return '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
236 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
237 join_filter = _get_filter('join', g) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
238 join_filter_arg = _get_filter_arg(join_filter) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
239 sep = join_filter_arg if join_filter else ' -> ' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
240 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
241 patches = repo.mq.series |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
242 applied = [p.name for p in repo.mq.applied] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
243 unapplied = filter(lambda p: p not in applied, patches) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
244 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
245 if _get_filter('hide_applied', g): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
246 patches = filter(lambda p: p not in applied, patches) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
247 if _get_filter('hide_unapplied', g): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
248 patches = filter(lambda p: p not in unapplied, patches) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
249 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
250 if _get_filter('reverse', g): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
251 patches = reversed(patches) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
252 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
253 pre_applied_filter = _get_filter('pre_applied', g) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
254 pre_applied_filter_arg = _get_filter_arg(pre_applied_filter) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
255 post_applied_filter = _get_filter('post_applied', g) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
256 post_applied_filter_arg = _get_filter_arg(post_applied_filter) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
257 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
258 pre_unapplied_filter = _get_filter('pre_unapplied', g) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
259 pre_unapplied_filter_arg = _get_filter_arg(pre_unapplied_filter) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
260 post_unapplied_filter = _get_filter('post_unapplied', g) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
261 post_unapplied_filter_arg = _get_filter_arg(post_unapplied_filter) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
262 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
263 for n, patch in enumerate(patches): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
264 if patch in applied: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
265 if pre_applied_filter: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
266 patches[n] = pre_applied_filter_arg + patches[n] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
267 if post_applied_filter: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
268 patches[n] = patches[n] + post_applied_filter_arg |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
269 elif patch in unapplied: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
270 if pre_unapplied_filter: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
271 patches[n] = pre_unapplied_filter_arg + patches[n] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
272 if post_unapplied_filter: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
273 patches[n] = patches[n] + post_unapplied_filter_arg |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
274 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
275 return _with_groups(g, sep.join(patches)) if patches else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
276 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
277 def _queue(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
278 g = m.groups() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
279 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
280 try: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
281 extensions.find('mq') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
282 except KeyError: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
283 return '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
284 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
285 q = repo.mq |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
286 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
287 out = os.path.basename(q.path) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
288 if out == 'patches' and not os.path.isdir(q.path): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
289 out = '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
290 elif out.startswith('patches-'): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
291 out = out[8:] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
292 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
293 return _with_groups(g, out) if out else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
294 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
295 def _remote(kind): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
296 def _r(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
297 g = m.groups() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
298 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
299 cache_dir = path.join(repo.root, CACHE_PATH) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
300 cache = path.join(cache_dir, kind) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
301 if not path.isdir(cache_dir): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
302 os.makedirs(cache_dir) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
303 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
304 cache_exists = path.isfile(cache) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
305 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
306 cache_time = (datetime.fromtimestamp(os.stat(cache).st_mtime) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
307 if cache_exists else None) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
308 if not cache_exists or cache_time < datetime.now() - CACHE_TIMEOUT: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
309 if not cache_exists: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
310 open(cache, 'w').close() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
311 subprocess.Popen(['hg', 'prompt', '--cache-%s' % kind]) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
312 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
313 if cache_exists: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
314 with open(cache) as c: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
315 count = len(c.readlines()) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
316 if g[1] and count > 0: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
317 return _with_groups(g, str(count)) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
318 elif g[2]: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
319 return _with_groups(g, '0') if not count else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
320 else: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
321 return _with_groups(g, '') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
322 else: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
323 return '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
324 return _r |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
325 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
326 def _rev(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
327 g = m.groups() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
328 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
329 parents = repo[None].parents() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
330 parent = 0 if '|merge' not in g else 1 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
331 parent = parent if len(parents) > parent else None |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
332 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
333 rev = parents[parent].rev() if parent is not None else -1 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
334 return _with_groups(g, str(rev)) if rev >= 0 else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
335 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
336 def _root(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
337 return _with_groups(m.groups(), repo.root) if repo.root else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
338 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
339 def _status(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
340 g = m.groups() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
341 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
342 st = repo.status(unknown=True)[:5] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
343 modified = any(st[:4]) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
344 unknown = len(st[-1]) > 0 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
345 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
346 flag = '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
347 if '|modified' not in g and '|unknown' not in g: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
348 flag = '!' if modified else '?' if unknown else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
349 else: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
350 if '|modified' in g: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
351 flag += '!' if modified else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
352 if '|unknown' in g: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
353 flag += '?' if unknown else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
354 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
355 return _with_groups(g, flag) if flag else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
356 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
357 def _tags(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
358 g = m.groups() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
359 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
360 sep = g[2][1:] if g[2] else ' ' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
361 tags = repo[None].tags() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
362 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
363 quiet = _get_filter('quiet', g) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
364 if quiet: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
365 tags = filter(lambda tag: tag != 'tip', tags) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
366 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
367 return _with_groups(g, sep.join(tags)) if tags else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
368 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
369 def _task(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
370 try: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
371 task = extensions.find('tasks').current(repo) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
372 return _with_groups(m.groups(), task) if task else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
373 except KeyError: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
374 return '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
375 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
376 def _tip(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
377 g = m.groups() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
378 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
379 format = short if '|short' in g else hex |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
380 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
381 tip = repo[len(repo) - 1] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
382 rev = tip.rev() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
383 tip = format(tip.node()) if '|node' in g else tip.rev() |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
384 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
385 return _with_groups(g, str(tip)) if rev >= 0 else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
386 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
387 def _update(m): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
388 current_rev = repo[None].parents()[0] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
389 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
390 # Get the tip of the branch for the current branch |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
391 try: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
392 heads = repo.branchmap()[current_rev.branch()] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
393 tip = heads[-1] |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
394 except (KeyError, IndexError): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
395 # We are in an empty repository. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
396 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
397 return '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
398 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
399 for head in reversed(heads): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
400 if not repo[head].closesbranch(): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
401 tip = head |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
402 break |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
403 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
404 return _with_groups(m.groups(), '^') if current_rev.children() else '' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
405 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
406 if opts.get("angle_brackets"): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
407 tag_start = r'\<([^><]*?\<)?' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
408 tag_end = r'(\>[^><]*?)?>' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
409 brackets = '<>' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
410 else: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
411 tag_start = r'\{([^{}]*?\{)?' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
412 tag_end = r'(\}[^{}]*?)?\}' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
413 brackets = '{}' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
414 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
415 patterns = { |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
416 'bookmark': _bookmark, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
417 'branch(\|quiet)?': _branch, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
418 'closed(\|quiet)?': _closed, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
419 'count(\|[^%s]*?)?' % brackets[-1]: _count, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
420 'node(?:' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
421 '(\|short)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
422 '|(\|merge)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
423 ')*': _node, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
424 'patch(?:' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
425 '(\|topindex)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
426 '|(\|applied)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
427 '|(\|unapplied)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
428 '|(\|count)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
429 '|(\|quiet)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
430 ')*': _patch, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
431 'patches(?:' + |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
432 '(\|join\([^%s]*?\))' % brackets[-1] + |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
433 '|(\|reverse)' + |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
434 '|(\|hide_applied)' + |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
435 '|(\|hide_unapplied)' + |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
436 '|(\|pre_applied\([^%s]*?\))' % brackets[-1] + |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
437 '|(\|post_applied\([^%s]*?\))' % brackets[-1] + |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
438 '|(\|pre_unapplied\([^%s]*?\))' % brackets[-1] + |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
439 '|(\|post_unapplied\([^%s]*?\))' % brackets[-1] + |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
440 ')*': _patches, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
441 'queue': _queue, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
442 'rev(\|merge)?': _rev, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
443 'root': _root, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
444 'root\|basename': _basename, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
445 'status(?:' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
446 '(\|modified)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
447 '|(\|unknown)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
448 ')*': _status, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
449 'tags(?:' + |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
450 '(\|quiet)' + |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
451 '|(\|[^%s]*?)' % brackets[-1] + |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
452 ')*': _tags, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
453 'task': _task, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
454 'tip(?:' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
455 '(\|node)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
456 '|(\|short)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
457 ')*': _tip, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
458 'update': _update, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
459 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
460 'incoming(?:' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
461 '(\|count)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
462 '|(\|zero)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
463 ')*': _remote('incoming'), |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
464 'outgoing(?:' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
465 '(\|count)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
466 '|(\|zero)' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
467 ')*': _remote('outgoing') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
468 } |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
469 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
470 if opts.get("cache_incoming"): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
471 _cache_remote(repo, 'incoming') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
472 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
473 if opts.get("cache_outgoing"): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
474 _cache_remote(repo, 'outgoing') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
475 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
476 if not fs: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
477 fs = repo.ui.config("prompt", "template", "") |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
478 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
479 for tag, repl in patterns.items(): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
480 fs = re.sub(tag_start + tag + tag_end, repl, fs) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
481 ui.status(fs) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
482 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
483 def _pull_with_cache(orig, ui, repo, *args, **opts): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
484 """Wrap the pull command to delete the incoming cache as well.""" |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
485 res = orig(ui, repo, *args, **opts) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
486 cache = path.join(repo.root, CACHE_PATH, 'incoming') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
487 if path.isfile(cache): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
488 os.remove(cache) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
489 return res |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
490 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
491 def _push_with_cache(orig, ui, repo, *args, **opts): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
492 """Wrap the push command to delete the outgoing cache as well.""" |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
493 res = orig(ui, repo, *args, **opts) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
494 cache = path.join(repo.root, CACHE_PATH, 'outgoing') |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
495 if path.isfile(cache): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
496 os.remove(cache) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
497 return res |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
498 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
499 def uisetup(ui): |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
500 extensions.wrapcommand(commands.table, 'pull', _pull_with_cache) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
501 extensions.wrapcommand(commands.table, 'push', _push_with_cache) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
502 try: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
503 extensions.wrapcommand(extensions.find("fetch").cmdtable, 'fetch', _pull_with_cache) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
504 except KeyError: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
505 pass |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
506 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
507 help.helptable += ( |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
508 (['prompt-keywords'], _('Keywords supported by hg-prompt'), |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
509 lambda _: r'''hg-prompt currently supports a number of keywords. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
510 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
511 Some keywords support filters. Filters can be chained when it makes |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
512 sense to do so. When in doubt, try it! |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
513 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
514 bookmark |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
515 Display the current bookmark (requires the bookmarks extension). |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
516 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
517 branch |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
518 Display the current branch. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
519 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
520 |quiet |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
521 Display the current branch only if it is not the default branch. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
522 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
523 closed |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
524 Display `X` if working on a closed branch (i.e. committing now would reopen |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
525 the branch). |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
526 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
527 count |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
528 Display the number of revisions in the given revset (the revset `all()` |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
529 will be used if none is given). |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
530 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
531 See `hg help revsets` for more information. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
532 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
533 |REVSET |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
534 The revset to count. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
535 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
536 incoming |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
537 Display nothing, but if the default path contains incoming changesets the |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
538 extra text will be expanded. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
539 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
540 For example: `{incoming changes{incoming}}` will expand to |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
541 `incoming changes` if there are changes, otherwise nothing. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
542 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
543 Checking for incoming changesets is an expensive operation, so `hg-prompt` |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
544 will cache the results in `.hg/prompt/cache/` and refresh them every 15 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
545 minutes. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
546 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
547 |count |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
548 Display the number of incoming changesets (if greater than 0). |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
549 |zero |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
550 Display 0 if there are no incoming changesets. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
551 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
552 node |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
553 Display the (full) changeset hash of the current parent. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
554 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
555 |short |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
556 Display the hash as the short, 12-character form. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
557 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
558 |merge |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
559 Display the hash of the changeset you're merging with. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
560 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
561 outgoing |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
562 Display nothing, but if the current repository contains outgoing |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
563 changesets (to default) the extra text will be expanded. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
564 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
565 For example: `{outgoing changes{outgoing}}` will expand to |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
566 `outgoing changes` if there are changes, otherwise nothing. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
567 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
568 Checking for outgoing changesets is an expensive operation, so `hg-prompt` |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
569 will cache the results in `.hg/prompt/cache/` and refresh them every 15 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
570 minutes. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
571 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
572 |count |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
573 Display the number of outgoing changesets (if greater than 0). |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
574 |zero |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
575 Display 0 if there are no incoming changesets. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
576 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
577 patch |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
578 Display the topmost currently-applied patch (requires the mq |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
579 extension). |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
580 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
581 |count |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
582 Display the number of patches in the queue. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
583 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
584 |topindex |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
585 Display (zero-based) index of the topmost applied patch in the series |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
586 list (as displayed by :hg:`qtop -v`), or the empty string if no patch |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
587 is applied. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
588 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
589 |applied |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
590 Display the number of currently applied patches in the queue. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
591 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
592 |unapplied |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
593 Display the number of currently unapplied patches in the queue. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
594 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
595 |quiet |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
596 Display a number only if there are any patches in the queue. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
597 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
598 patches |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
599 Display a list of the current patches in the queue. It will look like |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
600 this: |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
601 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
602 :::console |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
603 $ hg prompt '{patches}' |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
604 bottom-patch -> middle-patch -> top-patch |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
605 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
606 |reverse |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
607 Display the patches in reverse order (i.e. topmost first). |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
608 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
609 |hide_applied |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
610 Do not display applied patches. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
611 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
612 |hide_unapplied |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
613 Do not display unapplied patches. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
614 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
615 |join(SEP) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
616 Display SEP between each patch, instead of the default ` -> `. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
617 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
618 |pre_applied(STRING) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
619 Display STRING immediately before each applied patch. Useful for |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
620 adding color codes. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
621 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
622 |post_applied(STRING) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
623 Display STRING immediately after each applied patch. Useful for |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
624 resetting color codes. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
625 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
626 |pre_unapplied(STRING) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
627 Display STRING immediately before each unapplied patch. Useful for |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
628 adding color codes. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
629 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
630 |post_unapplied(STRING) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
631 Display STRING immediately after each unapplied patch. Useful for |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
632 resetting color codes. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
633 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
634 queue |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
635 Display the name of the current MQ queue. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
636 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
637 rev |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
638 Display the repository-local changeset number of the current parent. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
639 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
640 |merge |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
641 Display the repository-local changeset number of the changeset you're |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
642 merging with. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
643 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
644 root |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
645 Display the full path to the root of the current repository, without a |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
646 trailing slash. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
647 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
648 |basename |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
649 Display the directory name of the root of the current repository. For |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
650 example, if the repository is in `/home/u/myrepo` then this keyword |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
651 would expand to `myrepo`. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
652 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
653 status |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
654 Display `!` if the repository has any changed/added/removed files, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
655 otherwise `?` if it has any untracked (but not ignored) files, otherwise |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
656 nothing. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
657 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
658 |modified |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
659 Display `!` if the current repository contains files that have been |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
660 modified, added, removed, or deleted, otherwise nothing. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
661 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
662 |unknown |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
663 Display `?` if the current repository contains untracked files, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
664 otherwise nothing. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
665 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
666 tags |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
667 Display the tags of the current parent, separated by a space. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
668 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
669 |quiet |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
670 Display the tags of the current parent, excluding the tag "tip". |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
671 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
672 |SEP |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
673 Display the tags of the current parent, separated by `SEP`. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
674 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
675 task |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
676 Display the current task (requires the tasks extension). |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
677 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
678 tip |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
679 Display the repository-local changeset number of the current tip. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
680 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
681 |node |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
682 Display the (full) changeset hash of the current tip. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
683 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
684 |short |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
685 Display a short form of the changeset hash of the current tip (must be |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
686 used with the **|node** filter) |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
687 |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
688 update |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
689 Display `^` if the current parent is not the tip of the current branch, |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
690 otherwise nothing. In effect, this lets you see if running `hg update` |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
691 would do something. |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
692 '''), |
39b07c5f8785
Add Git and Mercurial support to command prompt
IBBoard <dev@ibboard.co.uk>
parents:
diff
changeset
|
693 ) |