Mercurial > python-hglib
annotate hglib/client.py @ 200:7da1dad166b5
client: ignore close() on non-open clients (issue5751)
Closing a client twice currently triggers a rather confusing exception.
Instead, follow the convention set by Python's file objects, and ignore close()
commands on non-open clients.
author | Gábor Stefanik <gabor.stefanik@nng.com> |
---|---|
date | Mon, 12 Feb 2018 14:54:09 +0100 |
parents | 6949fc164439 |
children | 67398bbf788d |
rev | line source |
---|---|
175
c16e2087660f
client: remove unused imports
Gregory Szorc <gregory.szorc@gmail.com>
parents:
171
diff
changeset
|
1 import struct, re, datetime |
148
c1b966866ed7
hglib: make all imports absolute (issue4520)
Brett Cannon <brett@python.org>
parents:
147
diff
changeset
|
2 import hglib |
c1b966866ed7
hglib: make all imports absolute (issue4520)
Brett Cannon <brett@python.org>
parents:
147
diff
changeset
|
3 from hglib import error, util, templates, merge, context |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
4 |
154
11202c85737e
hglib: make sure hgclient.diff() works with bytes (issue4520)
Brett Cannon <brett@python.org>
parents:
148
diff
changeset
|
5 from hglib.util import b, cmdbuilder, BytesIO, strtobytes |
4 | 6 |
90
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
7 class revision(tuple): |
99
2b36619ec0a0
client: add date field to revision
Idan Kamara <idankk86@gmail.com>
parents:
98
diff
changeset
|
8 def __new__(cls, rev, node, tags, branch, author, desc, date): |
2b36619ec0a0
client: add date field to revision
Idan Kamara <idankk86@gmail.com>
parents:
98
diff
changeset
|
9 return tuple.__new__(cls, (rev, node, tags, branch, author, desc, date)) |
90
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
10 |
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
11 @property |
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
12 def rev(self): |
98 | 13 return self[0] |
90
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
14 |
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
15 @property |
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
16 def node(self): |
98 | 17 return self[1] |
90
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
18 |
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
19 @property |
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
20 def tags(self): |
98 | 21 return self[2] |
90
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
22 |
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
23 @property |
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
24 def branch(self): |
98 | 25 return self[3] |
90
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
26 |
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
27 @property |
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
28 def author(self): |
98 | 29 return self[4] |
90
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
30 |
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
31 @property |
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
32 def desc(self): |
98 | 33 return self[5] |
90
b894c2222dff
client: replace usage of namedtuple for python 2.4 compatibility
Idan Kamara <idankk86@gmail.com>
parents:
89
diff
changeset
|
34 |
99
2b36619ec0a0
client: add date field to revision
Idan Kamara <idankk86@gmail.com>
parents:
98
diff
changeset
|
35 @property |
2b36619ec0a0
client: add date field to revision
Idan Kamara <idankk86@gmail.com>
parents:
98
diff
changeset
|
36 def date(self): |
2b36619ec0a0
client: add date field to revision
Idan Kamara <idankk86@gmail.com>
parents:
98
diff
changeset
|
37 return self[6] |
2b36619ec0a0
client: add date field to revision
Idan Kamara <idankk86@gmail.com>
parents:
98
diff
changeset
|
38 |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
39 class hgclient(object): |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
40 inputfmt = '>I' |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
41 outputfmt = '>cI' |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
42 outputfmtsize = struct.calcsize(outputfmt) |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
43 retfmt = '>i' |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
44 |
91
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
45 def __init__(self, path, encoding, configs, connect=True): |
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
46 self._args = [hglib.HGPATH, 'serve', '--cmdserver', 'pipe', |
44
3a661f63107e
client: tell the server we're interactive
Idan Kamara <idankk86@gmail.com>
parents:
43
diff
changeset
|
47 '--config', 'ui.interactive=True'] |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
48 if path: |
194
22767a1e61ac
client: make it robust for weird repository path
Yuya Nishihara <yuya@tcha.org>
parents:
192
diff
changeset
|
49 # perhaps path shouldn't be a unicode string, but accepted for |
22767a1e61ac
client: make it robust for weird repository path
Yuya Nishihara <yuya@tcha.org>
parents:
192
diff
changeset
|
50 # backward compatibility. |
22767a1e61ac
client: make it robust for weird repository path
Yuya Nishihara <yuya@tcha.org>
parents:
192
diff
changeset
|
51 if isinstance(path, str): |
22767a1e61ac
client: make it robust for weird repository path
Yuya Nishihara <yuya@tcha.org>
parents:
192
diff
changeset
|
52 # py2: bytes + bytes, py3: unicode + unicode |
22767a1e61ac
client: make it robust for weird repository path
Yuya Nishihara <yuya@tcha.org>
parents:
192
diff
changeset
|
53 self._args += ['-R' + path] |
22767a1e61ac
client: make it robust for weird repository path
Yuya Nishihara <yuya@tcha.org>
parents:
192
diff
changeset
|
54 else: |
22767a1e61ac
client: make it robust for weird repository path
Yuya Nishihara <yuya@tcha.org>
parents:
192
diff
changeset
|
55 # py2: (ascii) bytes + unicode, py3: bytes + bytes |
22767a1e61ac
client: make it robust for weird repository path
Yuya Nishihara <yuya@tcha.org>
parents:
192
diff
changeset
|
56 self._args += [b('-R') + path] |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
57 if configs: |
194
22767a1e61ac
client: make it robust for weird repository path
Yuya Nishihara <yuya@tcha.org>
parents:
192
diff
changeset
|
58 # don't use "--config=<value>" form for hg 1.9 compatibility |
132
9ecb271600fc
client: fix passing multiple config settings
Julien Cristau <julien.cristau@logilab.fr>
parents:
127
diff
changeset
|
59 for config in configs: |
9ecb271600fc
client: fix passing multiple config settings
Julien Cristau <julien.cristau@logilab.fr>
parents:
127
diff
changeset
|
60 self._args += ['--config', config] |
105
86ff8611a8fa
client: always set HGPLAIN=1 (issue3502)
Siddharth Agarwal <sid0@fb.com>
parents:
100
diff
changeset
|
61 self._env = {'HGPLAIN': '1'} |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
62 if encoding: |
91
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
63 self._env['HGENCODING'] = encoding |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
64 |
91
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
65 self.server = None |
41
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
66 self._version = None |
133 | 67 # include the hidden changesets if True |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
68 self.hidden = None |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
69 |
180
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
70 self._cbout = None |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
71 self._cberr = None |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
72 self._cbprompt = None |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
73 |
91
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
74 if connect: |
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
75 self.open() |
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
76 |
179
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
77 self._protocoltracefn = None |
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
78 |
180
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
79 def setcbout(self, cbout): |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
80 """ |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
81 cbout is a function that will be called with the stdout data of |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
82 the command as it runs. Call with None to stop getting call backs. |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
83 """ |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
84 self._cbout = cbout |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
85 |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
86 def setcberr(self, cberr): |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
87 """ |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
88 cberr is a function that will be called with the stderr data of |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
89 the command as it runs.Call with None to stop getting call backs. |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
90 """ |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
91 self._cberr = cberr |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
92 |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
93 def setcbprompt(self, cbprompt): |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
94 """ |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
95 cbprompt is used to reply to prompts by the server |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
96 It receives the max number of bytes to return and the |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
97 contents of stdout received so far. |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
98 |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
99 Call with None to stop getting call backs. |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
100 |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
101 cbprompt is never called from merge() or import_() |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
102 which already handle the prompt. |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
103 """ |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
104 self._cbprompt = cbprompt |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
105 |
179
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
106 def setprotocoltrace(self, tracefn=None): |
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
107 """ |
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
108 if tracefn is None no trace calls will be made. |
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
109 Otherwise tracefn is call as tracefn( direction, channel, data ) |
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
110 direction is 'r' for read from server and 'w' for write to server |
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
111 channel is always None when direction is 'w' |
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
112 and the channel-identified when the direction is 'r' |
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
113 """ |
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
114 self._protocoltracefn = tracefn |
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
115 |
89
351d2799f145
client: added context manager protocol methods
Jeff Laughlin <jmlaughlin@integrated-informatics.com>
parents:
87
diff
changeset
|
116 def __enter__(self): |
127
53387d1e620b
client: connect to repo if necessary when using "with" statement
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
125
diff
changeset
|
117 if self.server is None: |
53387d1e620b
client: connect to repo if necessary when using "with" statement
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
125
diff
changeset
|
118 self.open() |
89
351d2799f145
client: added context manager protocol methods
Jeff Laughlin <jmlaughlin@integrated-informatics.com>
parents:
87
diff
changeset
|
119 return self |
351d2799f145
client: added context manager protocol methods
Jeff Laughlin <jmlaughlin@integrated-informatics.com>
parents:
87
diff
changeset
|
120 |
351d2799f145
client: added context manager protocol methods
Jeff Laughlin <jmlaughlin@integrated-informatics.com>
parents:
87
diff
changeset
|
121 def __exit__(self, exc_type, exc_val, exc_tb): |
351d2799f145
client: added context manager protocol methods
Jeff Laughlin <jmlaughlin@integrated-informatics.com>
parents:
87
diff
changeset
|
122 self.close() |
351d2799f145
client: added context manager protocol methods
Jeff Laughlin <jmlaughlin@integrated-informatics.com>
parents:
87
diff
changeset
|
123 |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
124 def _readhello(self): |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
125 """ read the hello message the server sends when started """ |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
126 ch, msg = self._readchannel() |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
127 assert ch == b('o') |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
128 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
129 msg = msg.split(b('\n')) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
130 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
131 self.capabilities = msg[0][len(b('capabilities: ')):] |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
132 if not self.capabilities: |
134 | 133 raise error.ResponseError( |
134 "bad hello message: expected 'capabilities: '" | |
135 ", got %r" % msg[0]) | |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
136 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
137 self.capabilities = set(self.capabilities.split()) |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
138 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
139 # at the very least the server should be able to run commands |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
140 assert b('runcommand') in self.capabilities |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
141 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
142 self._encoding = msg[1][len(b('encoding: ')):] |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
143 if not self._encoding: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
144 raise error.ResponseError("bad hello message: expected 'encoding: '" |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
145 ", got %r" % msg[1]) |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
146 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
147 def _readchannel(self): |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
148 data = self.server.stdout.read(hgclient.outputfmtsize) |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
149 if not data: |
196
c586d02f7cda
_readchannel: if a read failure is due to a broken server, report that
Augie Fackler <raf@durin42.com>
parents:
195
diff
changeset
|
150 ret, serr = self._close() |
c586d02f7cda
_readchannel: if a read failure is due to a broken server, report that
Augie Fackler <raf@durin42.com>
parents:
195
diff
changeset
|
151 if ret != 0: |
c586d02f7cda
_readchannel: if a read failure is due to a broken server, report that
Augie Fackler <raf@durin42.com>
parents:
195
diff
changeset
|
152 raise error.ServerError('server exited with status %d: %s' |
c586d02f7cda
_readchannel: if a read failure is due to a broken server, report that
Augie Fackler <raf@durin42.com>
parents:
195
diff
changeset
|
153 % (ret, serr.strip())) |
191
6987d6cd420c
client: raise ResponseError in _readchannel()
Gábor Stefanik <gabor.stefanik@nng.com>
parents:
190
diff
changeset
|
154 raise error.ResponseError('no response received from server') |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
155 channel, length = struct.unpack(hgclient.outputfmt, data) |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
156 if channel in b('IL'): |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
157 return channel, length |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
158 else: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
159 return channel, self.server.stdout.read(length) |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
160 |
100
dd63d69a5ebf
client: make _parserevs a static method
Idan Kamara <idankk86@gmail.com>
parents:
99
diff
changeset
|
161 @staticmethod |
dd63d69a5ebf
client: make _parserevs a static method
Idan Kamara <idankk86@gmail.com>
parents:
99
diff
changeset
|
162 def _parserevs(splitted): |
134 | 163 '''splitted is a list of fields according to our rev.style, where |
164 each 6 fields compose one revision. | |
165 ''' | |
99
2b36619ec0a0
client: add date field to revision
Idan Kamara <idankk86@gmail.com>
parents:
98
diff
changeset
|
166 revs = [] |
2b36619ec0a0
client: add date field to revision
Idan Kamara <idankk86@gmail.com>
parents:
98
diff
changeset
|
167 for rev in util.grouper(7, splitted): |
2b36619ec0a0
client: add date field to revision
Idan Kamara <idankk86@gmail.com>
parents:
98
diff
changeset
|
168 # truncate the timezone and convert to a local datetime |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
169 posixtime = float(rev[6].split(b('.'), 1)[0]) |
99
2b36619ec0a0
client: add date field to revision
Idan Kamara <idankk86@gmail.com>
parents:
98
diff
changeset
|
170 dt = datetime.datetime.fromtimestamp(posixtime) |
134 | 171 revs.append(revision(rev[0], rev[1], rev[2], rev[3], |
172 rev[4], rev[5], dt)) | |
99
2b36619ec0a0
client: add date field to revision
Idan Kamara <idankk86@gmail.com>
parents:
98
diff
changeset
|
173 return revs |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
174 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
175 def runcommand(self, args, inchannels, outchannels): |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
176 def writeblock(data): |
179
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
177 if self._protocoltracefn is not None: |
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
178 self._protocoltracefn('w', None, data) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
179 self.server.stdin.write(struct.pack(self.inputfmt, len(data))) |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
180 self.server.stdin.write(data) |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
181 self.server.stdin.flush() |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
182 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
183 if not self.server: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
184 raise ValueError("server not connected") |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
185 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
186 self.server.stdin.write(b('runcommand\n')) |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
187 writeblock(b('\0').join(args)) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
188 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
189 while True: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
190 channel, data = self._readchannel() |
179
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
191 if self._protocoltracefn is not None: |
c4c0efb37187
protocol: add the abilty to trace the protocol between the client and server
Barry A. Scott <barry@barrys-emacs.org>
parents:
178
diff
changeset
|
192 self._protocoltracefn('r', channel, data) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
193 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
194 # input channels |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
195 if channel in inchannels: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
196 writeblock(inchannels[channel](data)) |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
197 # output channels |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
198 elif channel in outchannels: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
199 outchannels[channel](data) |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
200 # result channel, command finished |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
201 elif channel == b('r'): |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
202 return struct.unpack(hgclient.retfmt, data)[0] |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
203 # a channel that we don't know and can't ignore |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
204 elif channel.isupper(): |
189
8054e925d9c7
client: kill the server on unrecoverable communication errors (issue5516)
Gábor Stefanik <gabor.stefanik@nng.com>
parents:
188
diff
changeset
|
205 self.close() |
134 | 206 raise error.ResponseError( |
207 "unexpected data on required channel '%s'" % channel) | |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
208 # optional channel |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
209 else: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
210 pass |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
211 |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
212 def rawcommand(self, args, eh=None, prompt=None, input=None): |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
213 """ |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
214 args is the cmdline (usually built using util.cmdbuilder) |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
215 |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
216 eh is an error handler that is passed the return code, stdout and stderr |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
217 If no eh is given, we raise a CommandError if ret != 0 |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
218 |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
219 prompt is used to reply to prompts by the server |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
220 It receives the max number of bytes to return and the contents of stdout |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
221 received so far |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
222 |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
223 input is used to reply to bulk data requests by the server |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
224 It receives the max number of bytes to return |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
225 """ |
145
f3c430afa598
hglib: abstract out use of cStringIO.StringIO (issue4520)
Brett Cannon <brett@python.org>
parents:
142
diff
changeset
|
226 out, err = BytesIO(), BytesIO() |
180
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
227 outchannels = {} |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
228 if self._cbout is None: |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
229 outchannels[b('o')] = out.write |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
230 else: |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
231 def out_handler(data): |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
232 out.write(data) |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
233 self._cbout(data) |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
234 outchannels[b('o')] = out_handler |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
235 if self._cberr is None: |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
236 outchannels[b('e')] = err.write |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
237 else: |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
238 def err_handler(data): |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
239 err.write(data) |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
240 self._cberr(data) |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
241 outchannels[b('e')] = err_handler |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
242 |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
243 inchannels = {} |
180
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
244 if prompt is None: |
ff6efc1ab9e4
protocol: allow hglib user to get call backs for prompts, output and errors
Barry A. Scott <barry@barrys-emacs.org>
parents:
179
diff
changeset
|
245 prompt = self._cbprompt |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
246 if prompt is not None: |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
247 def func(size): |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
248 reply = prompt(size, out.getvalue()) |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
249 return reply |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
250 inchannels[b('L')] = func |
188
5609a21fe39a
client: fail gracefully on unexpected prompts (issue5516)
Gábor Stefanik <gabor.stefanik@nng.com>
parents:
187
diff
changeset
|
251 else: |
5609a21fe39a
client: fail gracefully on unexpected prompts (issue5516)
Gábor Stefanik <gabor.stefanik@nng.com>
parents:
187
diff
changeset
|
252 inchannels[b('L')] = lambda _: '' |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
253 if input is not None: |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
254 inchannels[b('I')] = input |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
255 |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
256 ret = self.runcommand(args, inchannels, outchannels) |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
257 out, err = out.getvalue(), err.getvalue() |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
258 |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
259 if ret: |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
260 if eh is None: |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
261 raise error.CommandError(args, ret, out, err) |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
262 else: |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
263 return eh(ret, out, err) |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
264 return out |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
265 |
91
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
266 def open(self): |
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
267 if self.server is not None: |
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
268 raise ValueError('server already open') |
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
269 |
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
270 self.server = util.popen(self._args, self._env) |
169
e6589149b2c8
client: include stderr message in ServerError on initial communication failure
Yuya Nishihara <yuya@tcha.org>
parents:
168
diff
changeset
|
271 try: |
e6589149b2c8
client: include stderr message in ServerError on initial communication failure
Yuya Nishihara <yuya@tcha.org>
parents:
168
diff
changeset
|
272 self._readhello() |
190
f38bc0569671
client: don't swallow ResponseError inside open()
Gábor Stefanik <gabor.stefanik@nng.com>
parents:
189
diff
changeset
|
273 except error.ResponseError: |
197
6949fc164439
hgclient: look for an open server before closing it in ResponseError block
Augie Fackler <raf@durin42.com>
parents:
196
diff
changeset
|
274 if self.server is not None: |
6949fc164439
hgclient: look for an open server before closing it in ResponseError block
Augie Fackler <raf@durin42.com>
parents:
196
diff
changeset
|
275 self._close() |
190
f38bc0569671
client: don't swallow ResponseError inside open()
Gábor Stefanik <gabor.stefanik@nng.com>
parents:
189
diff
changeset
|
276 raise |
169
e6589149b2c8
client: include stderr message in ServerError on initial communication failure
Yuya Nishihara <yuya@tcha.org>
parents:
168
diff
changeset
|
277 except error.ServerError: |
196
c586d02f7cda
_readchannel: if a read failure is due to a broken server, report that
Augie Fackler <raf@durin42.com>
parents:
195
diff
changeset
|
278 if self.server is None: |
c586d02f7cda
_readchannel: if a read failure is due to a broken server, report that
Augie Fackler <raf@durin42.com>
parents:
195
diff
changeset
|
279 # server is already closed, hopefully the ServerError |
c586d02f7cda
_readchannel: if a read failure is due to a broken server, report that
Augie Fackler <raf@durin42.com>
parents:
195
diff
changeset
|
280 # we got has enough information. |
c586d02f7cda
_readchannel: if a read failure is due to a broken server, report that
Augie Fackler <raf@durin42.com>
parents:
195
diff
changeset
|
281 raise |
169
e6589149b2c8
client: include stderr message in ServerError on initial communication failure
Yuya Nishihara <yuya@tcha.org>
parents:
168
diff
changeset
|
282 ret, serr = self._close() |
e6589149b2c8
client: include stderr message in ServerError on initial communication failure
Yuya Nishihara <yuya@tcha.org>
parents:
168
diff
changeset
|
283 raise error.ServerError('server exited with status %d: %s' |
e6589149b2c8
client: include stderr message in ServerError on initial communication failure
Yuya Nishihara <yuya@tcha.org>
parents:
168
diff
changeset
|
284 % (ret, serr.strip())) |
91
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
285 return self |
0383fc37102b
client: refactor opening of the cmd server to an open method
Idan Kamara <idankk86@gmail.com>
parents:
90
diff
changeset
|
286 |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
287 def close(self): |
134 | 288 """Closes the command server instance and waits for it to exit, |
289 returns the exit code. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
290 |
134 | 291 Attempting to call any function afterwards that needs to |
292 communicate with the server will raise a ValueError. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
293 """ |
200
7da1dad166b5
client: ignore close() on non-open clients (issue5751)
Gábor Stefanik <gabor.stefanik@nng.com>
parents:
197
diff
changeset
|
294 if not self.server: |
7da1dad166b5
client: ignore close() on non-open clients (issue5751)
Gábor Stefanik <gabor.stefanik@nng.com>
parents:
197
diff
changeset
|
295 return 0 |
168
d71bd813c9d7
client: use subprocess.communicate() to shut down server process
Yuya Nishihara <yuya@tcha.org>
parents:
167
diff
changeset
|
296 return self._close()[0] |
167
f22f3ff3cfae
client: extract stub to read server's stderr on close()
Yuya Nishihara <yuya@tcha.org>
parents:
154
diff
changeset
|
297 |
f22f3ff3cfae
client: extract stub to read server's stderr on close()
Yuya Nishihara <yuya@tcha.org>
parents:
154
diff
changeset
|
298 def _close(self): |
168
d71bd813c9d7
client: use subprocess.communicate() to shut down server process
Yuya Nishihara <yuya@tcha.org>
parents:
167
diff
changeset
|
299 _sout, serr = self.server.communicate() |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
300 ret = self.server.returncode |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
301 self.server = None |
168
d71bd813c9d7
client: use subprocess.communicate() to shut down server process
Yuya Nishihara <yuya@tcha.org>
parents:
167
diff
changeset
|
302 return ret, serr |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
303 |
28 | 304 def add(self, files=[], dryrun=False, subrepos=False, include=None, |
305 exclude=None): | |
306 """ | |
307 Add the specified files on the next commit. | |
308 If no files are given, add all files to the repository. | |
309 | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
310 dryrun - do no perform actions |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
311 subrepos - recurse into subrepositories |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
312 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
313 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
314 |
28 | 315 Return whether all given files were added. |
316 """ | |
317 if not isinstance(files, list): | |
318 files = [files] | |
319 | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
320 args = cmdbuilder(b('add'), n=dryrun, S=subrepos, I=include, X=exclude, |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
321 *files) |
28 | 322 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
323 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
324 self.rawcommand(args, eh=eh) |
28 | 325 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
326 return bool(eh) |
28 | 327 |
48
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
328 def addremove(self, files=[], similarity=None, dryrun=False, include=None, |
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
329 exclude=None): |
134 | 330 """Add all new files and remove all missing files from the repository. |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
331 |
134 | 332 New files are ignored if they match any of the patterns in |
333 ".hgignore". As with add, these changes take effect at the | |
334 next commit. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
335 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
336 similarity - used to detect renamed files. With a parameter |
134 | 337 greater than 0, this compares every removed file with every |
338 added file and records those similar enough as renames. This | |
339 option takes a percentage between 0 (disabled) and 100 (files | |
340 must be identical) as its parameter. Detecting renamed files | |
341 this way can be expensive. After using this option, "hg status | |
342 -C" can be used to check which files were identified as moved | |
343 or renamed. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
344 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
345 dryrun - do no perform actions |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
346 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
347 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
348 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
349 Return True if all files are successfully added. |
134 | 350 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
351 """ |
48
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
352 if not isinstance(files, list): |
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
353 files = [files] |
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
354 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
355 args = cmdbuilder(b('addremove'), s=similarity, n=dryrun, I=include, |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
356 X=exclude, *files) |
48
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
357 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
358 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
359 self.rawcommand(args, eh=eh) |
48
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
360 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
361 return bool(eh) |
48
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
362 |
52
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
363 def annotate(self, files, rev=None, nofollow=False, text=False, user=False, |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
364 file=False, date=False, number=False, changeset=False, |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
365 line=False, verbose=False, include=None, exclude=None): |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
366 """ |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
367 Show changeset information by line for each file in files. |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
368 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
369 rev - annotate the specified revision |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
370 nofollow - don't follow copies and renames |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
371 text - treat all files as text |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
372 user - list the author (long with -v) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
373 file - list the filename |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
374 date - list the date |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
375 number - list the revision number (default) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
376 changeset - list the changeset |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
377 line - show line number at the first appearance |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
378 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
379 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
380 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
381 Yields a (info, contents) tuple for each line in a file. Info is a space |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
382 separated string according to the given options. |
52
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
383 """ |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
384 if not isinstance(files, list): |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
385 files = [files] |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
386 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
387 args = cmdbuilder(b('annotate'), r=rev, no_follow=nofollow, a=text, |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
388 u=user, f=file, d=date, n=number, c=changeset, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
389 l=line, v=verbose, I=include, X=exclude, |
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
390 hidden=self.hidden, *files) |
52
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
391 |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
392 out = self.rawcommand(args) |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
393 |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
394 for line in out.splitlines(): |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
395 yield tuple(line.split(b(': '), 1)) |
52
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
396 |
53
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
397 def archive(self, dest, rev=None, nodecode=False, prefix=None, type=None, |
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
398 subrepos=False, include=None, exclude=None): |
134 | 399 """Create an unversioned archive of a repository revision. |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
400 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
401 The exact name of the destination archive or directory is given using a |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
402 format string; see export for details. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
403 |
134 | 404 Each member added to an archive file has a directory prefix |
405 prepended. Use prefix to specify a format string for the | |
406 prefix. The default is the basename of the archive, with | |
407 suffixes removed. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
408 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
409 dest - destination path |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
410 rev - revision to distribute. The revision used is the parent of the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
411 working directory if one isn't given. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
412 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
413 nodecode - do not pass files through decoders |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
414 prefix - directory prefix for files in archive |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
415 type - type of distribution to create. The archive type is automatically |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
416 detected based on file extension if one isn't given. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
417 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
418 Valid types are: |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
419 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
420 "files" a directory full of files (default) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
421 "tar" tar archive, uncompressed |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
422 "tbz2" tar archive, compressed using bzip2 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
423 "tgz" tar archive, compressed using gzip |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
424 "uzip" zip archive, uncompressed |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
425 "zip" zip archive, compressed using deflate |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
426 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
427 subrepos - recurse into subrepositories |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
428 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
429 exclude - exclude names matching the given patterns |
134 | 430 |
53
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
431 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
432 args = cmdbuilder(b('archive'), dest, r=rev, |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
433 no_decode=nodecode, p=prefix, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
434 t=type, S=subrepos, I=include, X=exclude, |
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
435 hidden=self.hidden) |
53
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
436 |
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
437 self.rawcommand(args) |
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
438 |
22
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
439 def backout(self, rev, merge=False, parent=None, tool=None, message=None, |
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
440 logfile=None, date=None, user=None): |
134 | 441 """Prepare a new changeset with the effect of rev undone in the current |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
442 working directory. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
443 |
134 | 444 If rev is the parent of the working directory, then this new |
445 changeset is committed automatically. Otherwise, hg needs to | |
446 merge the changes and the merged result is left uncommitted. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
447 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
448 rev - revision to backout |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
449 merge - merge with old dirstate parent after backout |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
450 parent - parent to choose when backing out merge |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
451 tool - specify merge tool |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
452 message - use text as commit message |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
453 logfile - read commit message from file |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
454 date - record the specified date as commit date |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
455 user - record the specified user as committer |
134 | 456 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
457 """ |
22
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
458 if message and logfile: |
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
459 raise ValueError("cannot specify both a message and a logfile") |
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
460 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
461 args = cmdbuilder(b('backout'), r=rev, merge=merge, parent=parent, |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
462 t=tool, m=message, l=logfile, d=date, u=user, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
463 hidden=self.hidden) |
22
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
464 |
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
465 self.rawcommand(args) |
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
466 |
134 | 467 def bookmark(self, name, rev=None, force=False, delete=False, |
468 inactive=False, rename=None): | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
469 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
470 Set a bookmark on the working directory's parent revision or rev, |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
471 with the given name. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
472 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
473 name - bookmark name |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
474 rev - revision to bookmark |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
475 force - bookmark even if another bookmark with the same name exists |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
476 delete - delete the given bookmark |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
477 inactive - do not mark the new bookmark active |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
478 rename - rename the bookmark given by rename to name |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
479 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
480 args = cmdbuilder(b('bookmark'), name, r=rev, f=force, d=delete, |
23
223e463c25e0
client: add bookmark command
Idan Kamara <idankk86@gmail.com>
parents:
22
diff
changeset
|
481 i=inactive, m=rename) |
223e463c25e0
client: add bookmark command
Idan Kamara <idankk86@gmail.com>
parents:
22
diff
changeset
|
482 |
223e463c25e0
client: add bookmark command
Idan Kamara <idankk86@gmail.com>
parents:
22
diff
changeset
|
483 self.rawcommand(args) |
223e463c25e0
client: add bookmark command
Idan Kamara <idankk86@gmail.com>
parents:
22
diff
changeset
|
484 |
24
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
485 def bookmarks(self): |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
486 """ |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
487 Return the bookmarks as a list of (name, rev, node) and the index of the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
488 current one. |
24
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
489 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
490 If there isn't a current one, -1 is returned as the index. |
24
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
491 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
492 args = cmdbuilder(b('bookmarks'), hidden=self.hidden) |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
493 out = self.rawcommand(args) |
24
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
494 |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
495 bms = [] |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
496 current = -1 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
497 if out.rstrip() != b('no bookmarks set'): |
24
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
498 for line in out.splitlines(): |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
499 iscurrent, line = line[0:3], line[3:] |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
500 if b('*') in iscurrent: |
24
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
501 current = len(bms) |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
502 name, line = line.split(b(' '), 1) |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
503 rev, node = line.split(b(':')) |
24
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
504 bms.append((name, int(rev), node)) |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
505 return bms, current |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
506 |
11
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
507 def branch(self, name=None, clean=False, force=False): |
134 | 508 """When name isn't given, return the current branch name. Otherwise |
509 set the working directory branch name (the branch will not | |
510 exist in the repository until the next commit). Standard | |
511 practice recommends that primary development take place on the | |
512 'default' branch. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
513 |
134 | 514 When clean is True, reset and return the working directory |
515 branch to that of the parent of the working directory, | |
516 negating a previous branch change. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
517 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
518 name - new branch name |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
519 clean - reset branch name to parent branch name |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
520 force - set branch name even if it shadows an existing branch |
134 | 521 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
522 """ |
11
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
523 if name and clean: |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
524 raise ValueError('cannot use both name and clean') |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
525 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
526 args = cmdbuilder(b('branch'), name, f=force, C=clean) |
11
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
527 out = self.rawcommand(args).rstrip() |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
528 |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
529 if name: |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
530 return name |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
531 elif not clean: |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
532 return out |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
533 else: |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
534 # len('reset working directory to branch ') == 34 |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
535 return out[34:] |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
536 |
12
c2a9b716cd80
client: rewrite branches(), return a list of (branchname, rev, node)
Idan Kamara <idankk86@gmail.com>
parents:
11
diff
changeset
|
537 def branches(self, active=False, closed=False): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
538 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
539 Returns the repository's named branches as a list of (name, rev, node). |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
540 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
541 active - show only branches that have unmerged heads |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
542 closed - show normal and closed branches |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
543 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
544 args = cmdbuilder(b('branches'), a=active, c=closed, hidden=self.hidden) |
12
c2a9b716cd80
client: rewrite branches(), return a list of (branchname, rev, node)
Idan Kamara <idankk86@gmail.com>
parents:
11
diff
changeset
|
545 out = self.rawcommand(args) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
546 |
12
c2a9b716cd80
client: rewrite branches(), return a list of (branchname, rev, node)
Idan Kamara <idankk86@gmail.com>
parents:
11
diff
changeset
|
547 branches = [] |
c2a9b716cd80
client: rewrite branches(), return a list of (branchname, rev, node)
Idan Kamara <idankk86@gmail.com>
parents:
11
diff
changeset
|
548 for line in out.rstrip().splitlines(): |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
549 namerev, node = line.rsplit(b(':'), 1) |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
550 name, rev = namerev.rsplit(b(' '), 1) |
79
ca5f8f43e585
branches: more robust parsing strategy
Matt Mackall <mpm@selenic.com>
parents:
72
diff
changeset
|
551 name = name.rstrip() |
12
c2a9b716cd80
client: rewrite branches(), return a list of (branchname, rev, node)
Idan Kamara <idankk86@gmail.com>
parents:
11
diff
changeset
|
552 node = node.split()[0] # get rid of ' (inactive)' |
c2a9b716cd80
client: rewrite branches(), return a list of (branchname, rev, node)
Idan Kamara <idankk86@gmail.com>
parents:
11
diff
changeset
|
553 branches.append((name, int(rev), node)) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
554 return branches |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
555 |
54 | 556 def bundle(self, file, destrepo=None, rev=[], branch=[], base=[], all=False, |
134 | 557 force=False, type=None, ssh=None, remotecmd=None, |
558 insecure=False): | |
559 """Generate a compressed changegroup file collecting changesets not | |
560 known to be in another repository. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
561 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
562 If destrepo isn't given, then hg assumes the destination will have all |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
563 the nodes you specify with base. To create a bundle containing all |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
564 changesets, use all (or set base to 'null'). |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
565 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
566 file - destination file name |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
567 destrepo - repository to look for changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
568 rev - a changeset intended to be added to the destination |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
569 branch - a specific branch you would like to bundle |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
570 base - a base changeset assumed to be available at the destination |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
571 all - bundle all changesets in the repository |
134 | 572 type - bundle compression type to use, available compression |
573 methods are: none, bzip2, and gzip (default: bzip2) | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
574 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
575 force - run even when the destrepo is unrelated |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
576 ssh - specify ssh command to use |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
577 remotecmd - specify hg command to run on the remote side |
134 | 578 insecure - do not verify server certificate (ignoring |
579 web.cacerts config) | |
54 | 580 |
581 Return True if a bundle was created, False if no changes were found. | |
134 | 582 |
54 | 583 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
584 args = cmdbuilder(b('bundle'), file, destrepo, f=force, r=rev, b=branch, |
54 | 585 base=base, a=all, t=type, e=ssh, remotecmd=remotecmd, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
586 insecure=insecure, hidden=self.hidden) |
54 | 587 |
588 eh = util.reterrorhandler(args) | |
589 self.rawcommand(args, eh=eh) | |
590 | |
591 return bool(eh) | |
592 | |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
593 def cat(self, files, rev=None, output=None): |
134 | 594 """Return a string containing the specified files as they were at the |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
595 given revision. If no revision is given, the parent of the working |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
596 directory is used, or tip if no revision is checked out. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
597 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
598 If output is given, writes the contents to the specified file. |
134 | 599 The name of the file is given using a format string. The |
600 formatting rules are the same as for the export command, with | |
601 the following additions: | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
602 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
603 "%s" basename of file being printed |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
604 "%d" dirname of file being printed, or '.' if in repository root |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
605 "%p" root-relative path name of file being printed |
134 | 606 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
607 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
608 args = cmdbuilder(b('cat'), r=rev, o=output, hidden=self.hidden, *files) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
609 out = self.rawcommand(args) |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
610 |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
611 if not output: |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
612 return out |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
613 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
614 def clone(self, source=b('.'), dest=None, branch=None, updaterev=None, |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
615 revrange=None): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
616 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
617 Create a copy of an existing repository specified by source in a new |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
618 directory dest. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
619 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
620 If dest isn't specified, it defaults to the basename of source. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
621 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
622 branch - clone only the specified branch |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
623 updaterev - revision, tag or branch to check out |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
624 revrange - include the specified changeset |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
625 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
626 args = cmdbuilder(b('clone'), source, dest, b=branch, |
134 | 627 u=updaterev, r=revrange) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
628 self.rawcommand(args) |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
629 |
178
77a5fded9f45
init: add init() to hgclient to allow progress to be reported
Barry A. Scott <barry@barrys-emacs.org>
parents:
176
diff
changeset
|
630 def init(self, dest, ssh=None, remotecmd=None, insecure=False): |
77a5fded9f45
init: add init() to hgclient to allow progress to be reported
Barry A. Scott <barry@barrys-emacs.org>
parents:
176
diff
changeset
|
631 args = util.cmdbuilder('init', dest, e=ssh, remotecmd=remotecmd, |
77a5fded9f45
init: add init() to hgclient to allow progress to be reported
Barry A. Scott <barry@barrys-emacs.org>
parents:
176
diff
changeset
|
632 insecure=insecure) |
77a5fded9f45
init: add init() to hgclient to allow progress to be reported
Barry A. Scott <barry@barrys-emacs.org>
parents:
176
diff
changeset
|
633 self.rawcommand(args) |
77a5fded9f45
init: add init() to hgclient to allow progress to be reported
Barry A. Scott <barry@barrys-emacs.org>
parents:
176
diff
changeset
|
634 |
134 | 635 def commit(self, message=None, logfile=None, addremove=False, |
636 closebranch=False, date=None, user=None, include=None, | |
136
dc63978871ed
client: add support for 'hg commit --amend'
David Douard <david.douard@logilab.fr>
parents:
134
diff
changeset
|
637 exclude=None, amend=False): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
638 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
639 Commit changes reported by status into the repository. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
640 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
641 message - the commit message |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
642 logfile - read commit message from file |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
643 addremove - mark new/missing files as added/removed before committing |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
644 closebranch - mark a branch as closed, hiding it from the branch list |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
645 date - record the specified date as commit date |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
646 user - record the specified user as committer |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
647 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
648 exclude - exclude names matching the given patterns |
136
dc63978871ed
client: add support for 'hg commit --amend'
David Douard <david.douard@logilab.fr>
parents:
134
diff
changeset
|
649 amend - amend the parent of the working dir |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
650 """ |
136
dc63978871ed
client: add support for 'hg commit --amend'
David Douard <david.douard@logilab.fr>
parents:
134
diff
changeset
|
651 if amend and message is None and logfile is None: |
dc63978871ed
client: add support for 'hg commit --amend'
David Douard <david.douard@logilab.fr>
parents:
134
diff
changeset
|
652 # retrieve current commit message |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
653 message = self.log(b('.'))[0][5] |
136
dc63978871ed
client: add support for 'hg commit --amend'
David Douard <david.douard@logilab.fr>
parents:
134
diff
changeset
|
654 if message is None and logfile is None and not amend: |
16
943aff89b068
client: add missing options to commit()
Idan Kamara <idankk86@gmail.com>
parents:
15
diff
changeset
|
655 raise ValueError("must provide at least a message or a logfile") |
943aff89b068
client: add missing options to commit()
Idan Kamara <idankk86@gmail.com>
parents:
15
diff
changeset
|
656 elif message and logfile: |
943aff89b068
client: add missing options to commit()
Idan Kamara <idankk86@gmail.com>
parents:
15
diff
changeset
|
657 raise ValueError("cannot specify both a message and a logfile") |
943aff89b068
client: add missing options to commit()
Idan Kamara <idankk86@gmail.com>
parents:
15
diff
changeset
|
658 |
14
e0d21c9db20b
client: use --debug when committing to get the new node info
Idan Kamara <idankk86@gmail.com>
parents:
13
diff
changeset
|
659 # --debug will print the committed cset |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
660 args = cmdbuilder(b('commit'), debug=True, m=message, A=addremove, |
16
943aff89b068
client: add missing options to commit()
Idan Kamara <idankk86@gmail.com>
parents:
15
diff
changeset
|
661 close_branch=closebranch, d=date, u=user, l=logfile, |
136
dc63978871ed
client: add support for 'hg commit --amend'
David Douard <david.douard@logilab.fr>
parents:
134
diff
changeset
|
662 I=include, X=exclude, amend=amend) |
14
e0d21c9db20b
client: use --debug when committing to get the new node info
Idan Kamara <idankk86@gmail.com>
parents:
13
diff
changeset
|
663 out = self.rawcommand(args) |
171
2725547a5f92
commit: allow rev and node to be anywhere in the output
Idan Kamara <idankk86@gmail.com>
parents:
169
diff
changeset
|
664 m = re.search(b(r'^committed changeset (\d+):([0-9a-f]+)'), out, |
2725547a5f92
commit: allow rev and node to be anywhere in the output
Idan Kamara <idankk86@gmail.com>
parents:
169
diff
changeset
|
665 re.MULTILINE) |
2725547a5f92
commit: allow rev and node to be anywhere in the output
Idan Kamara <idankk86@gmail.com>
parents:
169
diff
changeset
|
666 if not m: |
181
cdb5a320d2bf
client: wrap long lines at 80 chars
Yuya Nishihara <yuya@tcha.org>
parents:
180
diff
changeset
|
667 raise ValueError('revision and node not found in hg output: %r' |
cdb5a320d2bf
client: wrap long lines at 80 chars
Yuya Nishihara <yuya@tcha.org>
parents:
180
diff
changeset
|
668 % out) |
171
2725547a5f92
commit: allow rev and node to be anywhere in the output
Idan Kamara <idankk86@gmail.com>
parents:
169
diff
changeset
|
669 rev, node = m.groups() |
2725547a5f92
commit: allow rev and node to be anywhere in the output
Idan Kamara <idankk86@gmail.com>
parents:
169
diff
changeset
|
670 return int(rev), node |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
671 |
21 | 672 def config(self, names=[], untrusted=False, showsource=False): |
134 | 673 """Return a list of (section, key, value) config settings from all |
674 hgrc files | |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
675 |
21 | 676 When showsource is specified, return (source, section, key, value) where |
677 source is of the form filename:[line] | |
134 | 678 |
21 | 679 """ |
680 def splitline(s): | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
681 k, value = s.rstrip().split(b('='), 1) |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
682 section, key = k.split(b('.'), 1) |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
683 return section, key, value |
21 | 684 |
685 if not isinstance(names, list): | |
686 names = [names] | |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
687 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
688 args = cmdbuilder(b('showconfig'), u=untrusted, debug=showsource, |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
689 *names) |
21 | 690 out = self.rawcommand(args) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
691 |
21 | 692 conf = [] |
693 if showsource: | |
195
7c37f08d303d
config: un-break showconfig wrapper when environment variables are used
Augie Fackler <raf@durin42.com>
parents:
194
diff
changeset
|
694 out = util.skiplines(out, (b('read config from: '), |
7c37f08d303d
config: un-break showconfig wrapper when environment variables are used
Augie Fackler <raf@durin42.com>
parents:
194
diff
changeset
|
695 b('set config by: '))) |
21 | 696 for line in out.splitlines(): |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
697 m = re.match(b(r"(.+?:(?:\d+:)?) (.*)"), line) |
21 | 698 t = splitline(m.group(2)) |
699 conf.append((m.group(1)[:-1], t[0], t[1], t[2])) | |
700 else: | |
701 for line in out.splitlines(): | |
702 conf.append(splitline(line)) | |
703 | |
704 return conf | |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
705 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
706 @property |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
707 def encoding(self): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
708 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
709 Return the server's encoding (as reported in the hello message). |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
710 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
711 if not b('getencoding') in self.capabilities: |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
712 raise CapabilityError('getencoding') |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
713 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
714 if not self._encoding: |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
715 self.server.stdin.write(b('getencoding\n')) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
716 self._encoding = self._readfromchannel('r') |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
717 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
718 return self._encoding |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
719 |
29 | 720 def copy(self, source, dest, after=False, force=False, dryrun=False, |
721 include=None, exclude=None): | |
134 | 722 """Mark dest as having copies of source files. If dest is a |
723 directory, copies are put in that directory. If dest is a | |
724 file, then source must be a string. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
725 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
726 Returns True on success, False if errors are encountered. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
727 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
728 source - a file or a list of files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
729 dest - a destination file or directory |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
730 after - record a copy that has already occurred |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
731 force - forcibly copy over an existing managed file |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
732 dryrun - do not perform actions, just print output |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
733 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
734 exclude - exclude names matching the given patterns |
134 | 735 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
736 """ |
29 | 737 if not isinstance(source, list): |
738 source = [source] | |
739 | |
740 source.append(dest) | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
741 args = cmdbuilder(b('copy'), A=after, f=force, n=dryrun, |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
742 I=include, X=exclude, *source) |
29 | 743 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
744 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
745 self.rawcommand(args, eh=eh) |
29 | 746 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
747 return bool(eh) |
29 | 748 |
61
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
749 def diff(self, files=[], revs=[], change=None, text=False, |
134 | 750 git=False, nodates=False, showfunction=False, |
751 reverse=False, ignoreallspace=False, | |
752 ignorespacechange=False, ignoreblanklines=False, | |
753 unified=None, stat=False, subrepos=False, include=None, | |
754 exclude=None): | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
755 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
756 Return differences between revisions for the specified files. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
757 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
758 revs - a revision or a list of two revisions to diff |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
759 change - change made by revision |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
760 text - treat all files as text |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
761 git - use git extended diff format |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
762 nodates - omit dates from diff headers |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
763 showfunction - show which function each change is in |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
764 reverse - produce a diff that undoes the changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
765 ignoreallspace - ignore white space when comparing lines |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
766 ignorespacechange - ignore changes in the amount of white space |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
767 ignoreblanklines - ignore changes whose lines are all blank |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
768 unified - number of lines of context to show |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
769 stat - output diffstat-style summary of changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
770 subrepos - recurse into subrepositories |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
771 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
772 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
773 """ |
61
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
774 if change and revs: |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
775 raise ValueError('cannot specify both change and rev') |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
776 |
154
11202c85737e
hglib: make sure hgclient.diff() works with bytes (issue4520)
Brett Cannon <brett@python.org>
parents:
148
diff
changeset
|
777 args = cmdbuilder(b('diff'), r=list(map(strtobytes, revs)), c=change, |
61
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
778 a=text, g=git, nodates=nodates, |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
779 p=showfunction, reverse=reverse, |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
780 w=ignoreallspace, b=ignorespacechange, |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
781 B=ignoreblanklines, U=unified, stat=stat, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
782 S=subrepos, I=include, X=exclude, hidden=self.hidden, |
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
783 *files) |
61
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
784 |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
785 return self.rawcommand(args) |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
786 |
134 | 787 def export(self, revs, output=None, switchparent=False, |
788 text=False, git=False, nodates=False): | |
789 """Return the header and diffs for one or more changesets. When | |
790 output is given, dumps to file. The name of the file is given | |
791 using a format string. The formatting rules are as follows: | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
792 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
793 "%%" literal "%" character |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
794 "%H" changeset hash (40 hexadecimal digits) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
795 "%N" number of patches being generated |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
796 "%R" changeset revision number |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
797 "%b" basename of the exporting repository |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
798 "%h" short-form changeset hash (12 hexadecimal digits) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
799 "%n" zero-padded sequence number, starting at 1 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
800 "%r" zero-padded changeset revision number |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
801 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
802 output - print output to file with formatted name |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
803 switchparent - diff against the second parent |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
804 rev - a revision or list of revisions to export |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
805 text - treat all files as text |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
806 git - use git extended diff format |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
807 nodates - omit dates from diff headers |
134 | 808 |
55 | 809 """ |
810 if not isinstance(revs, list): | |
811 revs = [revs] | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
812 args = cmdbuilder(b('export'), o=output, switch_parent=switchparent, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
813 a=text, g=git, nodates=nodates, hidden=self.hidden, |
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
814 *revs) |
55 | 815 |
816 out = self.rawcommand(args) | |
817 | |
818 if output is None: | |
819 return out | |
820 | |
31 | 821 def forget(self, files, include=None, exclude=None): |
134 | 822 """Mark the specified files so they will no longer be tracked after |
823 the next commit. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
824 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
825 This only removes files from the current branch, not from the entire |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
826 project history, and it does not delete them from the working directory. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
827 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
828 Returns True on success. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
829 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
830 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
831 exclude - exclude names matching the given patterns |
134 | 832 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
833 """ |
31 | 834 if not isinstance(files, list): |
835 files = [files] | |
836 | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
837 args = cmdbuilder(b('forget'), I=include, X=exclude, *files) |
31 | 838 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
839 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
840 self.rawcommand(args, eh=eh) |
31 | 841 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
842 return bool(eh) |
31 | 843 |
56 | 844 def grep(self, pattern, files=[], all=False, text=False, follow=False, |
845 ignorecase=False, fileswithmatches=False, line=False, user=False, | |
846 date=False, include=None, exclude=None): | |
134 | 847 """Search for a pattern in specified files and revisions. |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
848 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
849 This behaves differently than Unix grep. It only accepts Python/Perl |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
850 regexps. It searches repository history, not the working directory. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
851 It always prints the revision number in which a match appears. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
852 |
134 | 853 Yields (filename, revision, [line, [match status, [user, |
854 [date, [match]]]]]) per match depending on the given options. | |
56 | 855 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
856 all - print all revisions that match |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
857 text - treat all files as text |
134 | 858 follow - follow changeset history, or file history across |
859 copies and renames | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
860 ignorecase - ignore case when matching |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
861 fileswithmatches - return only filenames and revisions that match |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
862 line - return line numbers in the result tuple |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
863 user - return the author in the result tuple |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
864 date - return the date in the result tuple |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
865 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
866 exclude - exclude names matching the given patterns |
134 | 867 |
56 | 868 """ |
869 if not isinstance(files, list): | |
870 files = [files] | |
871 | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
872 args = cmdbuilder(b('grep'), all=all, a=text, f=follow, i=ignorecase, |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
873 l=fileswithmatches, n=line, u=user, d=date, |
192
7a84a8656679
client: do not append an option to a list of arguments
Yuya Nishihara <yuya@tcha.org>
parents:
191
diff
changeset
|
874 I=include, X=exclude, hidden=self.hidden, print0=True, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
875 *[pattern] + files) |
56 | 876 |
877 def eh(ret, out, err): | |
878 if ret != 1: | |
879 raise error.CommandError(args, ret, out, err) | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
880 return b('') |
56 | 881 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
882 out = self.rawcommand(args, eh=eh).split(b('\0')) |
56 | 883 |
884 fieldcount = 3 | |
885 if user: | |
886 fieldcount += 1 | |
887 if date: | |
888 fieldcount += 1 | |
889 if line: | |
890 fieldcount += 1 | |
891 if all: | |
892 fieldcount += 1 | |
893 if fileswithmatches: | |
894 fieldcount -= 1 | |
895 | |
896 return util.grouper(fieldcount, out) | |
897 | |
57 | 898 def heads(self, rev=[], startrev=[], topological=False, closed=False): |
134 | 899 """Return a list of current repository heads or branch heads. |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
900 |
134 | 901 rev - return only branch heads on the branches associated with |
902 the specified changesets. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
903 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
904 startrev - return only heads which are descendants of the given revs. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
905 topological - named branch mechanics will be ignored and only changesets |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
906 without children will be shown. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
907 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
908 closed - normal and closed branch heads. |
134 | 909 |
57 | 910 """ |
911 if not isinstance(rev, list): | |
912 rev = [rev] | |
913 | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
914 args = cmdbuilder(b('heads'), r=startrev, t=topological, c=closed, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
915 template=templates.changeset, hidden=self.hidden, |
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
916 *rev) |
57 | 917 |
918 def eh(ret, out, err): | |
919 if ret != 1: | |
920 raise error.CommandError(args, ret, out, err) | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
921 return b('') |
57 | 922 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
923 out = self.rawcommand(args, eh=eh).split(b('\0'))[:-1] |
57 | 924 return self._parserevs(out) |
925 | |
38
32f6a2bbf63e
client: add identify command
Idan Kamara <idankk86@gmail.com>
parents:
37
diff
changeset
|
926 def identify(self, rev=None, source=None, num=False, id=False, branch=False, |
32f6a2bbf63e
client: add identify command
Idan Kamara <idankk86@gmail.com>
parents:
37
diff
changeset
|
927 tags=False, bookmarks=False): |
134 | 928 """Return a summary string identifying the repository state at rev |
929 using one or two parent hash identifiers, followed by a "+" if | |
930 the working directory has uncommitted changes, the branch name | |
931 (if not default), a list of tags, and a list of bookmarks. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
932 |
134 | 933 When rev is not given, return a summary string of the current |
934 state of the repository. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
935 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
936 Specifying source as a repository root or Mercurial bundle will cause |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
937 lookup to operate on that repository/bundle. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
938 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
939 num - show local revision number |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
940 id - show global revision id |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
941 branch - show branch |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
942 tags - show tags |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
943 bookmarks - show bookmarks |
134 | 944 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
945 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
946 args = cmdbuilder(b('identify'), source, r=rev, n=num, i=id, |
134 | 947 b=branch, t=tags, B=bookmarks, |
948 hidden=self.hidden) | |
38
32f6a2bbf63e
client: add identify command
Idan Kamara <idankk86@gmail.com>
parents:
37
diff
changeset
|
949 |
32f6a2bbf63e
client: add identify command
Idan Kamara <idankk86@gmail.com>
parents:
37
diff
changeset
|
950 return self.rawcommand(args) |
32f6a2bbf63e
client: add identify command
Idan Kamara <idankk86@gmail.com>
parents:
37
diff
changeset
|
951 |
13
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
952 def import_(self, patches, strip=None, force=False, nocommit=False, |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
953 bypass=False, exact=False, importbranch=False, message=None, |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
954 date=None, user=None, similarity=None): |
134 | 955 """Import the specified patches which can be a list of file names or a |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
956 file-like object and commit them individually (unless nocommit is |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
957 specified). |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
958 |
134 | 959 strip - directory strip option for patch. This has the same |
960 meaning as the corresponding patch option (default: 1) | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
961 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
962 force - skip check for outstanding uncommitted changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
963 nocommit - don't commit, just update the working directory |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
964 bypass - apply patch without touching the working directory |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
965 exact - apply patch to the nodes from which it was generated |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
966 importbranch - use any branch information in patch (implied by exact) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
967 message - the commit message |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
968 date - record the specified date as commit date |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
969 user - record the specified user as committer |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
970 similarity - guess renamed files by similarity (0<=s<=100) |
134 | 971 |
13
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
972 """ |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
973 if hasattr(patches, 'read') and hasattr(patches, 'readline'): |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
974 patch = patches |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
975 |
13
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
976 def readline(size, output): |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
977 return patch.readline(size) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
978 |
13
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
979 stdin = True |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
980 patches = () |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
981 prompt = readline |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
982 input = patch.read |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
983 else: |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
984 stdin = False |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
985 prompt = None |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
986 input = None |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
987 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
988 args = cmdbuilder(b('import'), strip=strip, force=force, |
96
9746227239e0
client: fix import --no-commit flag (issue3206)
Idan Kamara <idankk86@gmail.com>
parents:
95
diff
changeset
|
989 no_commit=nocommit, bypass=bypass, exact=exact, |
97
705e601e6085
client: fix import --import-branch flag
Idan Kamara <idankk86@gmail.com>
parents:
96
diff
changeset
|
990 import_branch=importbranch, message=message, |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
991 date=date, user=user, similarity=similarity, _=stdin, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
992 *patches) |
13
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
993 |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
994 self.rawcommand(args, prompt=prompt, input=input) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
995 |
25
85ae94b98324
client: add missing options to incoming
Idan Kamara <idankk86@gmail.com>
parents:
24
diff
changeset
|
996 def incoming(self, revrange=None, path=None, force=False, newest=False, |
85ae94b98324
client: add missing options to incoming
Idan Kamara <idankk86@gmail.com>
parents:
24
diff
changeset
|
997 bundle=None, bookmarks=False, branch=None, limit=None, |
85ae94b98324
client: add missing options to incoming
Idan Kamara <idankk86@gmail.com>
parents:
24
diff
changeset
|
998 nomerges=False, subrepos=False): |
134 | 999 """Return new changesets found in the specified path or the default pull |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1000 location. |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1001 |
134 | 1002 When bookmarks=True, return a list of (name, node) of incoming |
1003 bookmarks. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1004 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1005 revrange - a remote changeset or list of changesets intended to be added |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1006 force - run even if remote repository is unrelated |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1007 newest - show newest record first |
134 | 1008 bundle - avoid downloading the changesets twice and store the |
1009 bundles into the specified file. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1010 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1011 bookmarks - compare bookmarks (this changes the return value) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1012 branch - a specific branch you would like to pull |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1013 limit - limit number of changes returned |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1014 nomerges - do not show merges |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1015 ssh - specify ssh command to use |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1016 remotecmd - specify hg command to run on the remote side |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1017 insecure- do not verify server certificate (ignoring web.cacerts config) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1018 subrepos - recurse into subrepositories |
134 | 1019 |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1020 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1021 args = cmdbuilder(b('incoming'), path, |
25
85ae94b98324
client: add missing options to incoming
Idan Kamara <idankk86@gmail.com>
parents:
24
diff
changeset
|
1022 template=templates.changeset, r=revrange, |
85ae94b98324
client: add missing options to incoming
Idan Kamara <idankk86@gmail.com>
parents:
24
diff
changeset
|
1023 f=force, n=newest, bundle=bundle, |
134 | 1024 B=bookmarks, b=branch, l=limit, M=nomerges, |
1025 S=subrepos) | |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1026 |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1027 def eh(ret, out, err): |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1028 if ret != 1: |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1029 raise error.CommandError(args, ret, out, err) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1030 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1031 out = self.rawcommand(args, eh=eh) |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1032 if not out: |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1033 return [] |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1034 |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1035 out = util.eatlines(out, 2) |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1036 if bookmarks: |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1037 bms = [] |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1038 for line in out.splitlines(): |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1039 bms.append(tuple(line.split())) |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1040 return bms |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1041 else: |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1042 out = out.split(b('\0'))[:-1] |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1043 return self._parserevs(out) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1044 |
134 | 1045 def log(self, revrange=None, files=[], follow=False, |
1046 followfirst=False, date=None, copies=False, keyword=None, | |
1047 removed=False, onlymerges=False, user=None, branch=None, | |
1048 prune=None, hidden=None, limit=None, nomerges=False, | |
1049 include=None, exclude=None): | |
1050 """Return the revision history of the specified files or the entire | |
1051 project. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1052 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1053 File history is shown without following rename or copy history of files. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1054 Use follow with a filename to follow history across renames and copies. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1055 follow without a filename will only show ancestors or descendants of the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1056 starting revision. followfirst only follows the first parent of merge |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1057 revisions. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1058 |
134 | 1059 If revrange isn't specified, the default is "tip:0" unless |
1060 follow is set, in which case the working directory parent is | |
1061 used as the starting revision. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1062 |
134 | 1063 The returned changeset is a named tuple with the following |
1064 string fields: | |
1065 | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1066 - rev |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1067 - node |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1068 - tags (space delimited) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1069 - branch |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1070 - author |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1071 - desc |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1072 |
134 | 1073 follow - follow changeset history, or file history across |
1074 copies and renames | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1075 followfirst - only follow the first parent of merge changesets |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1076 date - show revisions matching date spec |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1077 copies - show copied files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1078 keyword - do case-insensitive search for a given text |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1079 removed - include revisions where files were removed |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1080 onlymerges - show only merges |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1081 user - revisions committed by user |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1082 branch - show changesets within the given named branch |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1083 prune - do not display revision or any of its ancestors |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1084 hidden - show hidden changesets |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1085 limit - limit number of changes displayed |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1086 nomerges - do not show merges |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1087 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1088 exclude - exclude names matching the given patterns |
134 | 1089 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1090 """ |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
1091 if hidden is None: |
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
1092 hidden = self.hidden |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1093 args = cmdbuilder(b('log'), template=templates.changeset, |
17
b68c444d42bb
client: add missing options to log()
Idan Kamara <idankk86@gmail.com>
parents:
16
diff
changeset
|
1094 r=revrange, f=follow, follow_first=followfirst, |
b68c444d42bb
client: add missing options to log()
Idan Kamara <idankk86@gmail.com>
parents:
16
diff
changeset
|
1095 d=date, C=copies, k=keyword, removed=removed, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
1096 m=onlymerges, u=user, b=branch, P=prune, |
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
1097 l=limit, M=nomerges, I=include, X=exclude, |
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
1098 hidden=hidden, *files) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1099 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1100 out = self.rawcommand(args) |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1101 out = out.split(b('\0'))[:-1] |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1102 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1103 return self._parserevs(out) |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1104 |
64
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1105 def manifest(self, rev=None, all=False): |
134 | 1106 """Yields (nodeid, permission, executable, symlink, file path) tuples |
1107 for version controlled files for the given revision. If no | |
1108 revision is given, the first parent of the working directory | |
1109 is used, or the null revision if no revision is checked out. | |
64
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1110 |
134 | 1111 When all is True, all files from all revisions are yielded |
1112 (just the name). This includes deleted and renamed files. | |
1113 | |
64
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1114 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1115 args = cmdbuilder(b('manifest'), r=rev, all=all, debug=True, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
1116 hidden=self.hidden) |
64
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1117 |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1118 out = self.rawcommand(args) |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1119 |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1120 if all: |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1121 for line in out.splitlines(): |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1122 yield line |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1123 else: |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1124 for line in out.splitlines(): |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1125 node = line[0:40] |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1126 perm = line[41:44] |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1127 symlink = line[45:46] == b('@') |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1128 executable = line[45:46] == b('*') |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1129 yield node, perm, executable, symlink, line[47:] |
64
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
1130 |
46
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
1131 def merge(self, rev=None, force=False, tool=None, cb=merge.handlers.abort): |
134 | 1132 """Merge working directory with rev. If no revision is specified, the |
1133 working directory's parent is a head revision, and the current | |
1134 branch contains exactly one other head, the other head is | |
1135 merged with by default. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1136 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1137 The current working directory is updated with all changes made in the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1138 requested revision since the last common predecessor revision. |
46
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
1139 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1140 Files that changed between either parent are marked as changed for the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1141 next commit and a commit must be performed before any further updates to |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1142 the repository are allowed. The next commit will have two parents. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1143 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1144 force - force a merge with outstanding changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1145 tool - can be used to specify the merge tool used for file merges. It |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1146 overrides the HGMERGE environment variable and your configuration files. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1147 |
134 | 1148 cb - controls the behaviour when Mercurial prompts what to do |
1149 with regard to a specific file, e.g. when one parent modified | |
1150 a file and the other removed it. It can be one of | |
1151 merge.handlers, or a function that gets a single argument | |
1152 which are the contents of stdout. It should return one of the | |
1153 expected choices (a single character). | |
1154 | |
46
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
1155 """ |
45 | 1156 # we can't really use --preview since merge doesn't support --template |
192
7a84a8656679
client: do not append an option to a list of arguments
Yuya Nishihara <yuya@tcha.org>
parents:
191
diff
changeset
|
1157 args = cmdbuilder(b('merge'), r=rev, f=force, t=tool, |
7a84a8656679
client: do not append an option to a list of arguments
Yuya Nishihara <yuya@tcha.org>
parents:
191
diff
changeset
|
1158 y=(cb is merge.handlers.noninteractive)) |
45 | 1159 |
46
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
1160 prompt = None |
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
1161 if cb is merge.handlers.abort: |
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
1162 prompt = cb |
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
1163 elif cb is merge.handlers.noninteractive: |
192
7a84a8656679
client: do not append an option to a list of arguments
Yuya Nishihara <yuya@tcha.org>
parents:
191
diff
changeset
|
1164 pass |
46
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
1165 else: |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1166 prompt = lambda size, output: cb(output) + b('\n') |
46
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
1167 |
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
1168 self.rawcommand(args, prompt=prompt) |
45 | 1169 |
32 | 1170 def move(self, source, dest, after=False, force=False, dryrun=False, |
1171 include=None, exclude=None): | |
134 | 1172 """Mark dest as copies of source; mark source for deletion. If dest |
1173 is a directory, copies are put in that directory. If dest is a | |
1174 file, then source must be a string. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1175 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1176 Returns True on success, False if errors are encountered. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1177 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1178 source - a file or a list of files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1179 dest - a destination file or directory |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1180 after - record a rename that has already occurred |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1181 force - forcibly copy over an existing managed file |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1182 dryrun - do not perform actions, just print output |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1183 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1184 exclude - exclude names matching the given patterns |
134 | 1185 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1186 """ |
32 | 1187 if not isinstance(source, list): |
1188 source = [source] | |
1189 | |
1190 source.append(dest) | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1191 args = cmdbuilder(b('move'), A=after, f=force, n=dryrun, |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
1192 I=include, X=exclude, *source) |
32 | 1193 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1194 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1195 self.rawcommand(args, eh=eh) |
32 | 1196 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1197 return bool(eh) |
32 | 1198 |
26
b4e5c8745ef3
client: add missing options to outgoing
Idan Kamara <idankk86@gmail.com>
parents:
25
diff
changeset
|
1199 def outgoing(self, revrange=None, path=None, force=False, newest=False, |
b4e5c8745ef3
client: add missing options to outgoing
Idan Kamara <idankk86@gmail.com>
parents:
25
diff
changeset
|
1200 bookmarks=False, branch=None, limit=None, nomerges=False, |
b4e5c8745ef3
client: add missing options to outgoing
Idan Kamara <idankk86@gmail.com>
parents:
25
diff
changeset
|
1201 subrepos=False): |
134 | 1202 """Return changesets not found in the specified path or the default push |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1203 location. |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1204 |
134 | 1205 When bookmarks=True, return a list of (name, node) of |
1206 bookmarks that will be pushed. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1207 |
134 | 1208 revrange - a (list of) changeset intended to be included in |
1209 the destination force - run even when the destination is | |
1210 unrelated newest - show newest record first branch - a | |
1211 specific branch you would like to push limit - limit number of | |
1212 changes displayed nomerges - do not show merges ssh - specify | |
1213 ssh command to use remotecmd - specify hg command to run on | |
1214 the remote side insecure - do not verify server certificate | |
1215 (ignoring web.cacerts config) subrepos - recurse into | |
1216 subrepositories | |
1217 | |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1218 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1219 args = cmdbuilder(b('outgoing'), |
26
b4e5c8745ef3
client: add missing options to outgoing
Idan Kamara <idankk86@gmail.com>
parents:
25
diff
changeset
|
1220 path, |
b4e5c8745ef3
client: add missing options to outgoing
Idan Kamara <idankk86@gmail.com>
parents:
25
diff
changeset
|
1221 template=templates.changeset, r=revrange, |
b4e5c8745ef3
client: add missing options to outgoing
Idan Kamara <idankk86@gmail.com>
parents:
25
diff
changeset
|
1222 f=force, n=newest, B=bookmarks, |
b4e5c8745ef3
client: add missing options to outgoing
Idan Kamara <idankk86@gmail.com>
parents:
25
diff
changeset
|
1223 b=branch, S=subrepos) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1224 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1225 def eh(ret, out, err): |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1226 if ret != 1: |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1227 raise error.CommandError(args, ret, out, err) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1228 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1229 out = self.rawcommand(args, eh=eh) |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1230 if not out: |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1231 return [] |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1232 |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1233 out = util.eatlines(out, 2) |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1234 if bookmarks: |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1235 bms = [] |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1236 for line in out.splitlines(): |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1237 bms.append(tuple(line.split())) |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1238 return bms |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1239 else: |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1240 out = out.split(b('\0'))[:-1] |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1241 return self._parserevs(out) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1242 |
18
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1243 def parents(self, rev=None, file=None): |
134 | 1244 """Return the working directory's parent revisions. If rev is given, |
1245 the parent of that revision will be printed. If file is given, | |
1246 the revision in which the file was last changed (before the | |
1247 working directory revision or the revision specified by rev) | |
1248 is returned. | |
1249 | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1250 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1251 args = cmdbuilder(b('parents'), file, template=templates.changeset, |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1252 r=rev, hidden=self.hidden) |
18
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1253 |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1254 out = self.rawcommand(args) |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1255 if not out: |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1256 return |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1257 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1258 out = out.split(b('\0'))[:-1] |
18
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1259 |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1260 return self._parserevs(out) |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1261 |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1262 def paths(self, name=None): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1263 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1264 Return the definition of given symbolic path name. If no name is given, |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1265 return a dictionary of pathname : url of all available names. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1266 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1267 Path names are defined in the [paths] section of your configuration file |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1268 and in "/etc/mercurial/hgrc". If run inside a repository, ".hg/hgrc" is |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1269 used, too. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1270 """ |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1271 if not name: |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1272 out = self.rawcommand([b('paths')]) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1273 if not out: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1274 return {} |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1275 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1276 return dict([s.split(b(' = ')) |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1277 for s in out.rstrip().split(b('\n'))]) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1278 else: |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1279 args = cmdbuilder(b('paths'), name) |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
1280 out = self.rawcommand(args) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1281 return out.rstrip() |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1282 |
134 | 1283 def pull(self, source=None, rev=None, update=False, force=False, |
1284 bookmark=None, branch=None, ssh=None, remotecmd=None, | |
1285 insecure=False, tool=None): | |
1286 """Pull changes from a remote repository. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1287 |
134 | 1288 This finds all changes from the repository specified by source |
1289 and adds them to this repository. If source is omitted, the | |
1290 'default' path will be used. By default, this does not update | |
1291 the copy of the project in the working directory. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1292 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1293 Returns True on success, False if update was given and there were |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1294 unresolved files. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1295 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1296 update - update to new branch head if changesets were pulled |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1297 force - run even when remote repository is unrelated |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1298 rev - a (list of) remote changeset intended to be added |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1299 bookmark - (list of) bookmark to pull |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1300 branch - a (list of) specific branch you would like to pull |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1301 ssh - specify ssh command to use |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1302 remotecmd - specify hg command to run on the remote side |
134 | 1303 insecure - do not verify server certificate (ignoring |
1304 web.cacerts config) | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1305 tool - specify merge tool for rebase |
134 | 1306 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1307 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1308 args = cmdbuilder(b('pull'), source, r=rev, u=update, f=force, |
134 | 1309 B=bookmark, b=branch, e=ssh, |
1310 remotecmd=remotecmd, insecure=insecure, | |
40 | 1311 t=tool) |
1312 | |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1313 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1314 self.rawcommand(args, eh=eh) |
40 | 1315 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1316 return bool(eh) |
40 | 1317 |
39 | 1318 def push(self, dest=None, rev=None, force=False, bookmark=None, branch=None, |
1319 newbranch=False, ssh=None, remotecmd=None, insecure=False): | |
134 | 1320 """Push changesets from this repository to the specified destination. |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1321 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1322 This operation is symmetrical to pull: it is identical to a pull in the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1323 destination repository from the current one. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1324 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1325 Returns True if push was successful, False if nothing to push. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1326 |
134 | 1327 rev - the (list of) specified revision and all its ancestors |
1328 will be pushed to the remote repository. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1329 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1330 force - override the default behavior and push all changesets on all |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1331 branches. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1332 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1333 bookmark - (list of) bookmark to push |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1334 branch - a (list of) specific branch you would like to push |
134 | 1335 newbranch - allows push to create a new named branch that is |
1336 not present at the destination. This allows you to only create | |
1337 a new branch without forcing other changes. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1338 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1339 ssh - specify ssh command to use |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1340 remotecmd - specify hg command to run on the remote side |
134 | 1341 insecure - do not verify server certificate (ignoring |
1342 web.cacerts config) | |
1343 | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1344 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1345 args = cmdbuilder(b('push'), dest, r=rev, f=force, B=bookmark, b=branch, |
39 | 1346 new_branch=newbranch, e=ssh, remotecmd=remotecmd, |
1347 insecure=insecure) | |
1348 | |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1349 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1350 self.rawcommand(args, eh=eh) |
39 | 1351 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1352 return bool(eh) |
39 | 1353 |
134 | 1354 def remove(self, files, after=False, force=False, include=None, |
1355 exclude=None): | |
1356 """Schedule the indicated files for removal from the repository. This | |
1357 only removes files from the current branch, not from the | |
1358 entire project history. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1359 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1360 Returns True on success, False if any warnings encountered. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1361 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1362 after - used to remove only files that have already been deleted |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1363 force - remove (and delete) file even if added or modified |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1364 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1365 exclude - exclude names matching the given patterns |
134 | 1366 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1367 """ |
30 | 1368 if not isinstance(files, list): |
1369 files = [files] | |
1370 | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1371 args = cmdbuilder(b('remove'), A=after, f=force, I=include, X=exclude, |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
1372 *files) |
30 | 1373 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1374 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1375 self.rawcommand(args, eh=eh) |
30 | 1376 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1377 return bool(eh) |
30 | 1378 |
134 | 1379 def resolve(self, file=[], all=False, listfiles=False, mark=False, |
1380 unmark=False, tool=None, include=None, exclude=None): | |
63
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1381 """ |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1382 Redo merges or set/view the merge status of given files. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1383 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1384 Returns True on success, False if any files fail a resolve attempt. |
63
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1385 |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1386 When listfiles is True, returns a list of (code, file path) of resolved |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1387 and unresolved files. Code will be 'R' or 'U' accordingly. |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1388 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1389 all - select all unresolved files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1390 mark - mark files as resolved |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1391 unmark - mark files as unresolved |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1392 tool - specify merge tool |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1393 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1394 exclude - exclude names matching the given patterns |
63
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1395 """ |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1396 if not isinstance(file, list): |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1397 file = [file] |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1398 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1399 args = cmdbuilder(b('resolve'), a=all, l=listfiles, m=mark, u=unmark, |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
1400 t=tool, I=include, X=exclude, *file) |
63
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1401 |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1402 out = self.rawcommand(args) |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1403 |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1404 if listfiles: |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1405 l = [] |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1406 for line in out.splitlines(): |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1407 l.append(tuple(line.split(b(' '), 1))) |
63
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1408 return l |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1409 |
47 | 1410 def revert(self, files, rev=None, all=False, date=None, nobackup=False, |
1411 dryrun=False, include=None, exclude=None): | |
134 | 1412 """With no revision specified, revert the specified files or |
1413 directories to the contents they had in the parent of the | |
1414 working directory. This restores the contents of files to an | |
1415 unmodified state and unschedules adds, removes, copies, and | |
1416 renames. If the working directory has two parents, you must | |
1417 explicitly specify a revision. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1418 |
134 | 1419 Specifying rev or date will revert the given files or |
1420 directories to their states as of a specific revision. Because | |
1421 revert does not change the working directory parents, this | |
1422 will cause these files to appear modified. This can be helpful | |
1423 to "back out" some or all of an earlier change. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1424 |
134 | 1425 Modified files are saved with a .orig suffix before reverting. |
1426 To disable these backups, use nobackup. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1427 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1428 Returns True on success. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1429 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1430 all - revert all changes when no arguments given |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1431 date - tipmost revision matching date |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1432 rev - revert to the specified revision |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1433 nobackup - do not save backup copies of files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1434 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1435 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1436 dryrun - do not perform actions, just print output |
134 | 1437 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1438 """ |
47 | 1439 if not isinstance(files, list): |
1440 files = [files] | |
1441 | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1442 args = cmdbuilder(b('revert'), r=rev, a=all, d=date, |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
1443 no_backup=nobackup, n=dryrun, I=include, X=exclude, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
1444 hidden=self.hidden, *files) |
47 | 1445 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1446 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1447 self.rawcommand(args, eh=eh) |
47 | 1448 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1449 return bool(eh) |
47 | 1450 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1451 def root(self): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1452 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1453 Return the root directory of the current repository. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1454 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1455 return self.rawcommand([b('root')]).rstrip() |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1456 |
134 | 1457 def status(self, rev=None, change=None, all=False, modified=False, |
1458 added=False, removed=False, deleted=False, clean=False, | |
1459 unknown=False, ignored=False, copies=False, | |
1460 subrepos=False, include=None, exclude=None): | |
33
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1461 """ |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1462 Return status of files in the repository as a list of (code, file path) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1463 where code can be: |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1464 |
33
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1465 M = modified |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1466 A = added |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1467 R = removed |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1468 C = clean |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1469 ! = missing (deleted by non-hg command, but still tracked) |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1470 ? = untracked |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1471 I = ignored |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1472 = origin of the previous file listed as A (added) |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1473 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1474 rev - show difference from (list of) revision |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1475 change - list the changed files of a revision |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1476 all - show status of all files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1477 modified - show only modified files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1478 added - show only added files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1479 removed - show only removed files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1480 deleted - show only deleted (but tracked) files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1481 clean - show only files without changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1482 unknown - show only unknown (not tracked) files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1483 ignored - show only ignored files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1484 copies - show source of copied files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1485 subrepos - recurse into subrepositories |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1486 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1487 exclude - exclude names matching the given patterns |
33
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1488 """ |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1489 if rev and change: |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1490 raise ValueError('cannot specify both rev and change') |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1491 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1492 args = cmdbuilder(b('status'), rev=rev, change=change, A=all, |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1493 m=modified, a=added, r=removed, d=deleted, c=clean, |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1494 u=unknown, i=ignored, C=copies, S=subrepos, I=include, |
192
7a84a8656679
client: do not append an option to a list of arguments
Yuya Nishihara <yuya@tcha.org>
parents:
191
diff
changeset
|
1495 X=exclude, hidden=self.hidden, print0=True) |
33
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1496 |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1497 out = self.rawcommand(args) |
34
f6e1d9a6e0cd
client: change return value of status() to a list of (code, file path)
Idan Kamara <idankk86@gmail.com>
parents:
33
diff
changeset
|
1498 l = [] |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1499 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1500 for entry in out.split(b('\0')): |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1501 if entry: |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1502 if entry[0:1] == b(' '): |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1503 l.append((b(' '), entry[2:])) |
35
1e33bbea23e5
client: handle spaces correctly in status()
Idan Kamara <idankk86@gmail.com>
parents:
34
diff
changeset
|
1504 else: |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1505 l.append(tuple(entry.split(b(' '), 1))) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1506 |
34
f6e1d9a6e0cd
client: change return value of status() to a list of (code, file path)
Idan Kamara <idankk86@gmail.com>
parents:
33
diff
changeset
|
1507 return l |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1508 |
42 | 1509 def tag(self, names, rev=None, message=None, force=False, local=False, |
1510 remove=False, date=None, user=None): | |
134 | 1511 """Add one or more tags specified by names for the current or given |
1512 revision. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1513 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1514 Changing an existing tag is normally disallowed; use force to override. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1515 |
134 | 1516 Tag commits are usually made at the head of a branch. If the |
1517 parent of the working directory is not a branch head, a | |
1518 CommandError will be raised. force can be specified to force | |
1519 the tag commit to be based on a non-head changeset. | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1520 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1521 local - make the tag local |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1522 rev - revision to tag |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1523 remove - remove a tag |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1524 message - set commit message |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1525 date - record the specified date as commit date |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1526 user - record the specified user as committer |
134 | 1527 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1528 """ |
42 | 1529 if not isinstance(names, list): |
1530 names = [names] | |
1531 | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1532 args = cmdbuilder(b('tag'), r=rev, m=message, f=force, l=local, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
1533 remove=remove, d=date, u=user, hidden=self.hidden, |
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
1534 *names) |
42 | 1535 |
1536 self.rawcommand(args) | |
1537 | |
43 | 1538 def tags(self): |
1539 """ | |
1540 Return a list of repository tags as: (name, rev, node, islocal) | |
1541 """ | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1542 args = cmdbuilder(b('tags'), v=True) |
43 | 1543 |
1544 out = self.rawcommand(args) | |
1545 | |
1546 t = [] | |
1547 for line in out.splitlines(): | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1548 taglocal = line.endswith(b(' local')) |
43 | 1549 if taglocal: |
1550 line = line[:-6] | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1551 name, rev = line.rsplit(b(' '), 1) |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1552 rev, node = rev.split(b(':')) |
43 | 1553 t.append((name.rstrip(), int(rev), node, taglocal)) |
1554 return t | |
1555 | |
125
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1556 def phase(self, revs=(), secret=False, draft=False, public=False, |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1557 force=False): |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1558 '''Set or show the current phase name. |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1559 |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1560 revs - target revision(s) |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1561 public - set changeset phase to public |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1562 draft - set changeset phase to draft |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1563 secret - set changeset phase to secret |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1564 force - allow to move boundary backward |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1565 |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1566 output format: [(id, phase) ...] for each changeset |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1567 |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1568 The arguments match the mercurial API. |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1569 ''' |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1570 if not isinstance(revs, (list, tuple)): |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1571 revs = [revs] |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1572 args = util.cmdbuilder(b('phase'), secret=secret, draft=draft, |
134 | 1573 public=public, force=force, |
1574 hidden=self.hidden, *revs) | |
125
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1575 out = self.rawcommand(args) |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1576 if draft or public or secret: |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1577 return |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1578 else: |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1579 output = [i.split(b(': '))for i in out.strip().split(b('\n'))] |
125
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1580 return [(int(num), phase) for (num, phase) in output] |
8d9a9da3e7b4
client: add 'phase' method to set or get the phase of a changeset
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
123
diff
changeset
|
1581 |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1582 def summary(self, remote=False): |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1583 """ |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1584 Return a dictionary with a brief summary of the working directory state, |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1585 including parents, branch, commit status, and available updates. |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1586 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1587 'parent' : a list of (rev, node, tags, message) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1588 'branch' : the current branch |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1589 'commit' : True if the working directory is clean, False otherwise |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1590 'update' : number of available updates, |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1591 ['remote' : (in, in bookmarks, out, out bookmarks),] |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1592 ['mq': (applied, unapplied) mq patches,] |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1593 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1594 unparsed entries will be of them form key : value |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1595 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1596 args = cmdbuilder(b('summary'), remote=remote, hidden=self.hidden) |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1597 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1598 out = self.rawcommand(args).splitlines() |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1599 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1600 d = {} |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1601 while out: |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1602 line = out.pop(0) |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1603 name, value = line.split(b(': '), 1) |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1604 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1605 if name == b('parent'): |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1606 parent, tags = value.split(b(' '), 1) |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1607 rev, node = parent.split(b(':')) |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1608 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1609 if tags: |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1610 tags = tags.replace(b(' (empty repository)'), b('')) |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1611 else: |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1612 tags = None |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1613 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1614 value = d.get(name, []) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1615 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1616 if rev == b('-1'): |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1617 value.append((int(rev), node, tags, None)) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1618 else: |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1619 message = out.pop(0)[1:] |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1620 value.append((int(rev), node, tags, message)) |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1621 elif name == b('branch'): |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1622 pass |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1623 elif name == b('commit'): |
187
9062a6b935ad
summary: parse commit line less strictly (issue5637)
Yuya Nishihara <yuya@tcha.org>
parents:
181
diff
changeset
|
1624 value = b('(clean)') in value |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1625 elif name == b('update'): |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1626 if value == b('(current)'): |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1627 value = 0 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1628 else: |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1629 value = int(value.split(b(' '), 1)[0]) |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1630 elif remote and name == b('remote'): |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1631 if value == b('(synced)'): |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1632 value = 0, 0, 0, 0 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1633 else: |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1634 inc = incb = out_ = outb = 0 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1635 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1636 for v in value.split(b(', ')): |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1637 count, v = v.split(b(' '), 1) |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1638 if v == b('outgoing'): |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1639 out_ = int(count) |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1640 elif v.endswith(b('incoming')): |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1641 inc = int(count) |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1642 elif v == b('incoming bookmarks'): |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1643 incb = int(count) |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1644 elif v == b('outgoing bookmarks'): |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1645 outb = int(count) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1646 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1647 value = inc, incb, out_, outb |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1648 elif name == b('mq'): |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1649 applied = unapplied = 0 |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1650 for v in value.split(b(', ')): |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1651 count, v = v.split(b(' '), 1) |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1652 if v == b('applied'): |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1653 applied = int(count) |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1654 elif v == b('unapplied'): |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1655 unapplied = int(count) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1656 value = applied, unapplied |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1657 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1658 d[name] = value |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1659 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1660 return d |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1661 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1662 def tip(self): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1663 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1664 Return the tip revision (usually just called the tip) which is the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1665 changeset most recently added to the repository (and therefore the most |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1666 recently changed head). |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1667 """ |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1668 args = cmdbuilder(b('tip'), template=templates.changeset, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
1669 hidden=self.hidden) |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
1670 out = self.rawcommand(args) |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1671 out = out.split(b('\0')) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1672 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1673 return self._parserevs(out)[0] |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1674 |
20 | 1675 def update(self, rev=None, clean=False, check=False, date=None): |
1676 """ | |
1677 Update the repository's working directory to changeset specified by rev. | |
1678 If rev isn't specified, update to the tip of the current named branch. | |
1679 | |
1680 Return the number of files (updated, merged, removed, unresolved) | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1681 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1682 clean - discard uncommitted changes (no backup) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1683 check - update across branches if no uncommitted changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1684 date - tipmost revision matching date |
20 | 1685 """ |
1686 if clean and check: | |
1687 raise ValueError('clean and check cannot both be True') | |
1688 | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1689 args = cmdbuilder(b('update'), r=rev, C=clean, c=check, d=date, |
123
cdde1656346f
client: add 'hidden' property to show hidden changesets.
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
122
diff
changeset
|
1690 hidden=self.hidden) |
20 | 1691 |
1692 def eh(ret, out, err): | |
1693 if ret == 1: | |
1694 return out | |
1695 | |
1696 raise error.CommandError(args, ret, out, err) | |
1697 | |
1698 | |
1699 out = self.rawcommand(args, eh=eh) | |
1700 | |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1701 m = re.search(b(r'^(\d+).+, (\d+).+, (\d+).+, (\d+)'), out, |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1702 re.MULTILINE) |
133 | 1703 return tuple(map(int, list(m.groups()))) |
41
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1704 |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1705 @property |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1706 def version(self): |
134 | 1707 """Return hg version that runs the command server as a 4 fielded |
1708 tuple: major, minor, micro and local build info. e.g. (1, 9, | |
1709 1, '+4-3095db9f5c2c') | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1710 """ |
41
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1711 if self._version is None: |
142
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1712 v = self.rawcommand(cmdbuilder(b('version'), q=True)) |
fe74d5599539
hglib: wrap all application string literals in util.b() (issue4520)
Brett Cannon <brett@python.org>
parents:
136
diff
changeset
|
1713 v = list(re.match(b(r'.*?(\d+)\.(\d+)\.?(\d+)?(\+[0-9a-f-]+)?'), |
41
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1714 v).groups()) |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1715 |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1716 for i in range(3): |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1717 try: |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1718 v[i] = int(v[i]) |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1719 except TypeError: |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1720 v[i] = 0 |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1721 |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1722 self._version = tuple(v) |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1723 |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1724 return self._version |
95
bd23bc72e662
client: add a convenience method __getitem__ to return a changectx
Idan Kamara <idankk86@gmail.com>
parents:
91
diff
changeset
|
1725 |
bd23bc72e662
client: add a convenience method __getitem__ to return a changectx
Idan Kamara <idankk86@gmail.com>
parents:
91
diff
changeset
|
1726 def __getitem__(self, changeid): |
176
3f854e3bcdd1
client: raise KeyError from __getitem__ (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
175
diff
changeset
|
1727 try: |
3f854e3bcdd1
client: raise KeyError from __getitem__ (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
175
diff
changeset
|
1728 return context.changectx(self, changeid) |
3f854e3bcdd1
client: raise KeyError from __getitem__ (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
175
diff
changeset
|
1729 except ValueError as e: |
3f854e3bcdd1
client: raise KeyError from __getitem__ (BC)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
175
diff
changeset
|
1730 raise KeyError(*e.args) |
122
e05b0cf920bb
client: implement the 'in' keyword for a client object
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
120
diff
changeset
|
1731 |
e05b0cf920bb
client: implement the 'in' keyword for a client object
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
120
diff
changeset
|
1732 def __contains__(self, changeid): |
e05b0cf920bb
client: implement the 'in' keyword for a client object
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
120
diff
changeset
|
1733 """ |
e05b0cf920bb
client: implement the 'in' keyword for a client object
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
120
diff
changeset
|
1734 check if changeid, which can be either a local revision number or a |
e05b0cf920bb
client: implement the 'in' keyword for a client object
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
120
diff
changeset
|
1735 changeset id, matches a changeset in the client. |
e05b0cf920bb
client: implement the 'in' keyword for a client object
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
120
diff
changeset
|
1736 """ |
e05b0cf920bb
client: implement the 'in' keyword for a client object
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
120
diff
changeset
|
1737 try: |
e05b0cf920bb
client: implement the 'in' keyword for a client object
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
120
diff
changeset
|
1738 context.changectx(self, changeid) |
e05b0cf920bb
client: implement the 'in' keyword for a client object
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
120
diff
changeset
|
1739 return True |
e05b0cf920bb
client: implement the 'in' keyword for a client object
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
120
diff
changeset
|
1740 except ValueError: |
e05b0cf920bb
client: implement the 'in' keyword for a client object
Paul Tonelli <paul.tonelli@logilab.fr>
parents:
120
diff
changeset
|
1741 return False |