annotate hglib/client.py @ 213:388820908580 2.6.2

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