Mercurial > python-hglib
annotate hglib/client.py @ 87:5661d5f7e39b
client: make varargs ordering py2.4-compatible
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Thu, 17 Nov 2011 12:54:37 -0600 |
parents | ca5f8f43e585 |
children | 351d2799f145 |
rev | line source |
---|---|
21 | 1 import subprocess, os, struct, cStringIO, collections, re |
46
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
2 import hglib, error, util, templates, merge |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
3 |
4 | 4 from util import cmdbuilder |
5 | |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
6 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
|
7 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
|
8 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
|
9 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
|
10 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
|
11 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
12 revision = collections.namedtuple('revision', 'rev, node, tags, ' |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
13 'branch, author, desc') |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
14 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
15 def __init__(self, path, encoding, configs): |
44
3a661f63107e
client: tell the server we're interactive
Idan Kamara <idankk86@gmail.com>
parents:
43
diff
changeset
|
16 args = [hglib.HGPATH, 'serve', '--cmdserver', 'pipe', |
3a661f63107e
client: tell the server we're interactive
Idan Kamara <idankk86@gmail.com>
parents:
43
diff
changeset
|
17 '--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
|
18 if path: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
19 args += ['-R', path] |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
20 if configs: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
21 args += ['--config'] + configs |
72 | 22 env = {} |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
23 if encoding: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
24 env['HGENCODING'] = encoding |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
25 |
72 | 26 self.server = util.popen(args, env) |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
27 self._readhello() |
41
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
28 self._version = 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
|
29 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
30 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
|
31 """ 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
|
32 ch, msg = self._readchannel() |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
33 assert ch == 'o' |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
34 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
35 msg = msg.split('\n') |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
36 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
37 self.capabilities = msg[0][len('capabilities: '):] |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
38 if not self.capabilities: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
39 raise error.ResponseError("bad hello message: expected 'capabilities: '" |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
40 ", got %r" % msg[0]) |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
41 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
42 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
|
43 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
44 # at the very least the server should be able to run commands |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
45 assert 'runcommand' in self.capabilities |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
46 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
47 self._encoding = msg[1][len('encoding: '):] |
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 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
|
49 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
|
50 ", 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
|
51 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
52 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
|
53 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
|
54 if not data: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
55 raise error.ServerError() |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
56 channel, length = struct.unpack(hgclient.outputfmt, data) |
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 channel in 'IL': |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
58 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
|
59 else: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
60 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
|
61 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
62 def _parserevs(self, splitted): |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
63 ''' splitted is a list of fields according to our rev.style, where each 6 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
64 fields compose one revision. ''' |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
65 return [self.revision._make(rev) for rev in util.grouper(6, splitted)] |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
66 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
67 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
|
68 def writeblock(data): |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
69 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
|
70 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
|
71 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
|
72 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
73 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
|
74 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
|
75 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
76 self.server.stdin.write('runcommand\n') |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
77 writeblock('\0'.join(args)) |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
78 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
79 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
|
80 channel, data = self._readchannel() |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
81 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
82 # 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
|
83 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
|
84 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
|
85 # 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
|
86 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
|
87 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
|
88 # result channel, command finished |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
89 elif channel == 'r': |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
90 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
|
91 # 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
|
92 elif channel.isupper(): |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
93 raise error.ResponseError("unexpected data on required channel '%s'" |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
94 % channel) |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
95 # 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
|
96 else: |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
97 pass |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
98 |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
99 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
|
100 """ |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
101 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
|
102 |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
103 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
|
104 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
|
105 |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
106 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
|
107 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
|
108 received so far |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
109 |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
110 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
|
111 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
|
112 """ |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
113 |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
114 out, err = cStringIO.StringIO(), cStringIO.StringIO() |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
115 outchannels = {'o' : out.write, 'e' : err.write} |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
116 |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
117 inchannels = {} |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
118 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
|
119 def func(size): |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
120 reply = prompt(size, out.getvalue()) |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
121 return str(reply) |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
122 inchannels['L'] = func |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
123 if input is not None: |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
124 inchannels['I'] = input |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
125 |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
126 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
|
127 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
|
128 |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
129 if ret: |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
130 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
|
131 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
|
132 else: |
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
133 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
|
134 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
|
135 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
136 def close(self): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
137 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
138 Closes the command server instance and waits for it to exit, returns the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
139 exit code. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
140 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
141 Attempting to call any function afterwards that needs to communicate with |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
142 the server will raise a ValueError. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
143 """ |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
144 self.server.stdin.close() |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
145 self.server.wait() |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
146 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
|
147 self.server = None |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
148 return ret |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
149 |
28 | 150 def add(self, files=[], dryrun=False, subrepos=False, include=None, |
151 exclude=None): | |
152 """ | |
153 Add the specified files on the next commit. | |
154 If no files are given, add all files to the repository. | |
155 | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
156 dryrun - do no perform actions |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
157 subrepos - recurse into subrepositories |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
158 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
159 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
160 |
28 | 161 Return whether all given files were added. |
162 """ | |
163 if not isinstance(files, list): | |
164 files = [files] | |
165 | |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
166 args = cmdbuilder('add', n=dryrun, S=subrepos, I=include, X=exclude, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
167 *files) |
28 | 168 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
169 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
170 self.rawcommand(args, eh=eh) |
28 | 171 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
172 return bool(eh) |
28 | 173 |
48
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
174 def addremove(self, files=[], similarity=None, dryrun=False, include=None, |
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
175 exclude=None): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
176 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
177 Add all new files and remove all missing files from the repository. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
178 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
179 New files are ignored if they match any of the patterns in ".hgignore". As |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
180 with add, these changes take effect at the next commit. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
181 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
182 similarity - used to detect renamed files. With a parameter |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
183 greater than 0, this compares every removed file with every added file and |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
184 records those similar enough as renames. This option takes a percentage |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
185 between 0 (disabled) and 100 (files must be identical) as its parameter. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
186 Detecting renamed files this way can be expensive. After using this |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
187 option, "hg status -C" can be used to check which files were identified as |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
188 moved or renamed. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
189 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
190 dryrun - do no perform actions |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
191 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
192 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
193 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
194 Return True if all files are successfully added. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
195 """ |
48
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
196 if not isinstance(files, list): |
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
197 files = [files] |
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
198 |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
199 args = cmdbuilder('addremove', s=similarity, n=dryrun, I=include, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
200 X=exclude, *files) |
48
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
201 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
202 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
203 self.rawcommand(args, eh=eh) |
48
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
204 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
205 return bool(eh) |
48
82d927ac1329
client: add addremove command
Idan Kamara <idankk86@gmail.com>
parents:
47
diff
changeset
|
206 |
52
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
207 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
|
208 file=False, date=False, number=False, changeset=False, |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
209 line=False, verbose=False, include=None, exclude=None): |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
210 """ |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
211 Show changeset information by line for each file in files. |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
212 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
213 rev - annotate the specified revision |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
214 nofollow - don't follow copies and renames |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
215 text - treat all files as text |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
216 user - list the author (long with -v) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
217 file - list the filename |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
218 date - list the date |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
219 number - list the revision number (default) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
220 changeset - list the changeset |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
221 line - show line number at the first appearance |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
222 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
223 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
224 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
225 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
|
226 separated string according to the given options. |
52
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
227 """ |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
228 if not isinstance(files, list): |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
229 files = [files] |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
230 |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
231 args = cmdbuilder('annotate', r=rev, no_follow=nofollow, a=text, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
232 u=user, f=file, d=date, n=number, c=changeset, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
233 l=line, v=verbose, I=include, X=exclude, *files) |
52
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
234 |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
235 out = self.rawcommand(args) |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
236 |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
237 for line in out.splitlines(): |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
238 yield tuple(line.split(': ', 1)) |
18f72b255553
client: add annotate command
Idan Kamara <idankk86@gmail.com>
parents:
51
diff
changeset
|
239 |
53
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
240 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
|
241 subrepos=False, include=None, exclude=None): |
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
242 """ |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
243 Create an unversioned archive of a repository revision. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
244 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
245 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
|
246 format string; see export for details. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
247 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
248 Each member added to an archive file has a directory prefix prepended. Use |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
249 prefix to specify a format string for the prefix. The default is the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
250 basename of the archive, with suffixes removed. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
251 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
252 dest - destination path |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
253 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
|
254 working directory if one isn't given. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
255 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
256 nodecode - do not pass files through decoders |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
257 prefix - directory prefix for files in archive |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
258 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
|
259 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
|
260 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
261 Valid types are: |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
262 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
263 "files" a directory full of files (default) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
264 "tar" tar archive, uncompressed |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
265 "tbz2" tar archive, compressed using bzip2 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
266 "tgz" tar archive, compressed using gzip |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
267 "uzip" zip archive, uncompressed |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
268 "zip" zip archive, compressed using deflate |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
269 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
270 subrepos - recurse into subrepositories |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
271 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
272 exclude - exclude names matching the given patterns |
53
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
273 """ |
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
274 args = cmdbuilder('archive', dest, r=rev, no_decode=nodecode, p=prefix, |
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
275 t=type, S=subrepos, I=include, X=exclude) |
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
276 |
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
277 self.rawcommand(args) |
066dfa5c0b70
client: add archive command
Idan Kamara <idankk86@gmail.com>
parents:
52
diff
changeset
|
278 |
22
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
279 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
|
280 logfile=None, date=None, user=None): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
281 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
282 Prepare a new changeset with the effect of rev undone in the current |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
283 working directory. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
284 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
285 If rev is the parent of the working directory, then this new changeset is |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
286 committed automatically. Otherwise, hg needs to merge the changes and the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
287 merged result is left uncommitted. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
288 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
289 rev - revision to backout |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
290 merge - merge with old dirstate parent after backout |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
291 parent - parent to choose when backing out merge |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
292 tool - specify merge tool |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
293 message - use text as commit message |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
294 logfile - read commit message from file |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
295 date - record the specified date as commit date |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
296 user - record the specified user as committer |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
297 """ |
22
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
298 if message and logfile: |
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
299 raise ValueError("cannot specify both a message and a logfile") |
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
300 |
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
301 args = cmdbuilder('backout', r=rev, merge=merge, parent=parent, t=tool, |
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
302 m=message, l=logfile, d=date, u=user) |
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
303 |
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
304 self.rawcommand(args) |
297df22d6091
client: add backout command
Idan Kamara <idankk86@gmail.com>
parents:
21
diff
changeset
|
305 |
23
223e463c25e0
client: add bookmark command
Idan Kamara <idankk86@gmail.com>
parents:
22
diff
changeset
|
306 def bookmark(self, name, rev=None, force=False, delete=False, inactive=False, |
223e463c25e0
client: add bookmark command
Idan Kamara <idankk86@gmail.com>
parents:
22
diff
changeset
|
307 rename=None): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
308 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
309 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
|
310 with the given name. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
311 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
312 name - bookmark name |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
313 rev - revision to bookmark |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
314 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
|
315 delete - delete the given bookmark |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
316 inactive - do not mark the new bookmark active |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
317 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
|
318 """ |
23
223e463c25e0
client: add bookmark command
Idan Kamara <idankk86@gmail.com>
parents:
22
diff
changeset
|
319 args = cmdbuilder('bookmark', name, r=rev, f=force, d=delete, |
223e463c25e0
client: add bookmark command
Idan Kamara <idankk86@gmail.com>
parents:
22
diff
changeset
|
320 i=inactive, m=rename) |
223e463c25e0
client: add bookmark command
Idan Kamara <idankk86@gmail.com>
parents:
22
diff
changeset
|
321 |
223e463c25e0
client: add bookmark command
Idan Kamara <idankk86@gmail.com>
parents:
22
diff
changeset
|
322 self.rawcommand(args) |
223e463c25e0
client: add bookmark command
Idan Kamara <idankk86@gmail.com>
parents:
22
diff
changeset
|
323 |
24
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
324 def bookmarks(self): |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
325 """ |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
326 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
|
327 current one. |
24
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
328 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
329 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
|
330 """ |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
331 out = self.rawcommand(['bookmarks']) |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
332 |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
333 bms = [] |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
334 current = -1 |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
335 if out.rstrip() != 'no bookmarks set': |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
336 for line in out.splitlines(): |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
337 iscurrent, line = line[0:3], line[3:] |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
338 if '*' in iscurrent: |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
339 current = len(bms) |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
340 name, line = line.split(' ', 1) |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
341 rev, node = line.split(':') |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
342 bms.append((name, int(rev), node)) |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
343 return bms, current |
ca0d7e212cf8
client: add bookmarks command
Idan Kamara <idankk86@gmail.com>
parents:
23
diff
changeset
|
344 |
11
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
345 def branch(self, name=None, clean=False, force=False): |
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 When name isn't given, return the current branch name. Otherwise set the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
348 working directory branch name (the branch will not exist in the repository |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
349 until the next commit). Standard practice recommends that primary |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
350 development take place on the 'default' branch. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
351 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
352 When clean is True, reset and return the working directory branch to that |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
353 of the parent of the working directory, negating a previous branch change. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
354 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
355 name - new branch name |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
356 clean - reset branch name to parent branch name |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
357 force - set branch name even if it shadows an existing branch |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
358 """ |
11
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
359 if name and clean: |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
360 raise ValueError('cannot use both name and clean') |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
361 |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
362 args = cmdbuilder('branch', name, f=force, C=clean) |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
363 out = self.rawcommand(args).rstrip() |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
364 |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
365 if name: |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
366 return name |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
367 elif not clean: |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
368 return out |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
369 else: |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
370 # len('reset working directory to branch ') == 34 |
0549d00a617d
client: add missing options to branch()
Idan Kamara <idankk86@gmail.com>
parents:
10
diff
changeset
|
371 return out[34:] |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
372 |
12
c2a9b716cd80
client: rewrite branches(), return a list of (branchname, rev, node)
Idan Kamara <idankk86@gmail.com>
parents:
11
diff
changeset
|
373 def branches(self, active=False, closed=False): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
374 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
375 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
|
376 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
377 active - show only branches that have unmerged heads |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
378 closed - show normal and closed branches |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
379 """ |
12
c2a9b716cd80
client: rewrite branches(), return a list of (branchname, rev, node)
Idan Kamara <idankk86@gmail.com>
parents:
11
diff
changeset
|
380 args = cmdbuilder('branches', a=active, c=closed) |
c2a9b716cd80
client: rewrite branches(), return a list of (branchname, rev, node)
Idan Kamara <idankk86@gmail.com>
parents:
11
diff
changeset
|
381 out = self.rawcommand(args) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
382 |
12
c2a9b716cd80
client: rewrite branches(), return a list of (branchname, rev, node)
Idan Kamara <idankk86@gmail.com>
parents:
11
diff
changeset
|
383 branches = [] |
c2a9b716cd80
client: rewrite branches(), return a list of (branchname, rev, node)
Idan Kamara <idankk86@gmail.com>
parents:
11
diff
changeset
|
384 for line in out.rstrip().splitlines(): |
79
ca5f8f43e585
branches: more robust parsing strategy
Matt Mackall <mpm@selenic.com>
parents:
72
diff
changeset
|
385 namerev, node = line.rsplit(':', 1) |
ca5f8f43e585
branches: more robust parsing strategy
Matt Mackall <mpm@selenic.com>
parents:
72
diff
changeset
|
386 name, rev = namerev.rsplit(' ', 1) |
ca5f8f43e585
branches: more robust parsing strategy
Matt Mackall <mpm@selenic.com>
parents:
72
diff
changeset
|
387 name = name.rstrip() |
12
c2a9b716cd80
client: rewrite branches(), return a list of (branchname, rev, node)
Idan Kamara <idankk86@gmail.com>
parents:
11
diff
changeset
|
388 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
|
389 branches.append((name, int(rev), node)) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
390 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
|
391 |
54 | 392 def bundle(self, file, destrepo=None, rev=[], branch=[], base=[], all=False, |
393 force=False, type=None, ssh=None, remotecmd=None, insecure=False): | |
394 """ | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
395 Generate a compressed changegroup file collecting changesets not known to |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
396 be in another repository. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
397 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
398 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
|
399 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
|
400 changesets, use all (or set base to 'null'). |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
401 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
402 file - destination file name |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
403 destrepo - repository to look for changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
404 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
|
405 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
|
406 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
|
407 all - bundle all changesets in the repository |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
408 type - bundle compression type to use, available compression methods are: |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
409 none, bzip2, and gzip (default: bzip2) |
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 force - run even when the destrepo is unrelated |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
412 ssh - specify ssh command to use |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
413 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
|
414 insecure - do not verify server certificate (ignoring web.cacerts config) |
54 | 415 |
416 Return True if a bundle was created, False if no changes were found. | |
417 """ | |
418 args = cmdbuilder('bundle', file, destrepo, f=force, r=rev, b=branch, | |
419 base=base, a=all, t=type, e=ssh, remotecmd=remotecmd, | |
420 insecure=insecure) | |
421 | |
422 eh = util.reterrorhandler(args) | |
423 self.rawcommand(args, eh=eh) | |
424 | |
425 return bool(eh) | |
426 | |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
427 def cat(self, files, rev=None, output=None): |
65
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 Return a string containing the specified files as they were at the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
430 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
|
431 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
|
432 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
433 If output is given, writes the contents to the specified file. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
434 The name of the file is given using a format string. The formatting rules |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
435 are the same as for the export command, with the following additions: |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
436 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
437 "%s" basename of file being printed |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
438 "%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
|
439 "%p" root-relative path name of file being printed |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
440 """ |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
441 args = cmdbuilder('cat', r=rev, o=output, *files) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
442 out = self.rawcommand(args) |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
443 |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
444 if not output: |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
445 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
|
446 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
447 def clone(self, source='.', dest=None, branch=None, updaterev=None, |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
448 revrange=None): |
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 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
|
451 directory dest. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
452 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
453 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
|
454 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
455 branch - clone only the specified branch |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
456 updaterev - revision, tag or branch to check out |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
457 revrange - include the specified changeset |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
458 """ |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
459 args = cmdbuilder('clone', source, dest, b=branch, u=updaterev, r=revrange) |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
460 self.rawcommand(args) |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
461 |
16
943aff89b068
client: add missing options to commit()
Idan Kamara <idankk86@gmail.com>
parents:
15
diff
changeset
|
462 def commit(self, message=None, logfile=None, addremove=False, closebranch=False, |
943aff89b068
client: add missing options to commit()
Idan Kamara <idankk86@gmail.com>
parents:
15
diff
changeset
|
463 date=None, user=None, include=None, exclude=None): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
464 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
465 Commit changes reported by status into the repository. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
466 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
467 message - the commit message |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
468 logfile - read commit message from file |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
469 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
|
470 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
|
471 date - record the specified date as commit date |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
472 user - record the specified user as committer |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
473 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
474 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
475 """ |
16
943aff89b068
client: add missing options to commit()
Idan Kamara <idankk86@gmail.com>
parents:
15
diff
changeset
|
476 if message is None and logfile is None: |
943aff89b068
client: add missing options to commit()
Idan Kamara <idankk86@gmail.com>
parents:
15
diff
changeset
|
477 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
|
478 elif message and logfile: |
943aff89b068
client: add missing options to commit()
Idan Kamara <idankk86@gmail.com>
parents:
15
diff
changeset
|
479 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
|
480 |
14
e0d21c9db20b
client: use --debug when committing to get the new node info
Idan Kamara <idankk86@gmail.com>
parents:
13
diff
changeset
|
481 # --debug will print the committed cset |
16
943aff89b068
client: add missing options to commit()
Idan Kamara <idankk86@gmail.com>
parents:
15
diff
changeset
|
482 args = cmdbuilder('commit', debug=True, m=message, A=addremove, |
943aff89b068
client: add missing options to commit()
Idan Kamara <idankk86@gmail.com>
parents:
15
diff
changeset
|
483 close_branch=closebranch, d=date, u=user, l=logfile, |
943aff89b068
client: add missing options to commit()
Idan Kamara <idankk86@gmail.com>
parents:
15
diff
changeset
|
484 I=include, X=exclude) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
485 |
14
e0d21c9db20b
client: use --debug when committing to get the new node info
Idan Kamara <idankk86@gmail.com>
parents:
13
diff
changeset
|
486 out = self.rawcommand(args) |
e0d21c9db20b
client: use --debug when committing to get the new node info
Idan Kamara <idankk86@gmail.com>
parents:
13
diff
changeset
|
487 rev, node = out.splitlines()[-1].rsplit(':') |
15
f1af31960414
client: change return value of commit() to (rev, node)
Idan Kamara <idankk86@gmail.com>
parents:
14
diff
changeset
|
488 return int(rev.split()[-1]), 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
|
489 |
21 | 490 def config(self, names=[], untrusted=False, showsource=False): |
491 """ | |
492 Return a list of (section, key, value) config settings from all 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
|
493 |
21 | 494 When showsource is specified, return (source, section, key, value) where |
495 source is of the form filename:[line] | |
496 """ | |
497 def splitline(s): | |
498 k, value = s.rstrip().split('=', 1) | |
499 section, key = k.split('.', 1) | |
500 return (section, key, value) | |
501 | |
502 if not isinstance(names, list): | |
503 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
|
504 |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
505 args = cmdbuilder('showconfig', u=untrusted, debug=showsource, *names) |
21 | 506 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
|
507 |
21 | 508 conf = [] |
509 if showsource: | |
510 out = util.skiplines(out, 'read config from: ') | |
511 for line in out.splitlines(): | |
512 m = re.match(r"(.+?:(?:\d+:)?) (.*)", line) | |
513 t = splitline(m.group(2)) | |
514 conf.append((m.group(1)[:-1], t[0], t[1], t[2])) | |
515 else: | |
516 for line in out.splitlines(): | |
517 conf.append(splitline(line)) | |
518 | |
519 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
|
520 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
521 @property |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
522 def encoding(self): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
523 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
524 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
|
525 """ |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
526 if not 'getencoding' in self.capabilities: |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
527 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
|
528 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
529 if not self._encoding: |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
530 self.server.stdin.write('getencoding\n') |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
531 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
|
532 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
533 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
|
534 |
29 | 535 def copy(self, source, dest, after=False, force=False, dryrun=False, |
536 include=None, exclude=None): | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
537 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
538 Mark dest as having copies of source files. If dest is a directory, copies |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
539 are put in that directory. If dest is a file, then source must be a string. |
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 True on success, False if errors are encountered. |
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 source - a file or a list of files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
544 dest - a destination file or directory |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
545 after - record a copy that has already occurred |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
546 force - forcibly copy over an existing managed file |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
547 dryrun - do not perform actions, just print output |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
548 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
549 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
550 """ |
29 | 551 if not isinstance(source, list): |
552 source = [source] | |
553 | |
554 source.append(dest) | |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
555 args = cmdbuilder('copy', A=after, f=force, n=dryrun, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
556 I=include, X=exclude, *source) |
29 | 557 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
558 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
559 self.rawcommand(args, eh=eh) |
29 | 560 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
561 return bool(eh) |
29 | 562 |
61
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
563 def diff(self, files=[], revs=[], change=None, text=False, |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
564 git=False, nodates=False, showfunction=False, reverse=False, |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
565 ignoreallspace=False, ignorespacechange=False, ignoreblanklines=False, |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
566 unified=None, stat=False, subrepos=False, include=None, exclude=None): |
65
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 Return differences between revisions for the specified files. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
569 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
570 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
|
571 change - change made by revision |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
572 text - treat all files as text |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
573 git - use git extended diff format |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
574 nodates - omit dates from diff headers |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
575 showfunction - show which function each change is in |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
576 reverse - produce a diff that undoes the changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
577 ignoreallspace - ignore white space when comparing lines |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
578 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
|
579 ignoreblanklines - ignore changes whose lines are all blank |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
580 unified - number of lines of context to show |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
581 stat - output diffstat-style summary of changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
582 subrepos - recurse into subrepositories |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
583 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
584 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
585 """ |
61
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
586 if change and revs: |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
587 raise ValueError('cannot specify both change and rev') |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
588 |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
589 args = cmdbuilder('diff', r=revs, c=change, |
61
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
590 a=text, g=git, nodates=nodates, |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
591 p=showfunction, reverse=reverse, |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
592 w=ignoreallspace, b=ignorespacechange, |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
593 B=ignoreblanklines, U=unified, stat=stat, |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
594 S=subrepos, I=include, X=exclude, *files) |
61
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
595 |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
596 return self.rawcommand(args) |
d0b9215180a4
client: fix diff indentation and position
Idan Kamara <idankk86@gmail.com>
parents:
57
diff
changeset
|
597 |
55 | 598 def export(self, revs, output=None, switchparent=False, text=False, git=False, |
599 nodates=False): | |
600 """ | |
601 Return the header and diffs for one or more changesets. When output is | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
602 given, dumps to file. The name of the file is given using a format string. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
603 The formatting rules are as follows: |
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 "%%" literal "%" character |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
606 "%H" changeset hash (40 hexadecimal digits) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
607 "%N" number of patches being generated |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
608 "%R" changeset revision number |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
609 "%b" basename of the exporting repository |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
610 "%h" short-form changeset hash (12 hexadecimal digits) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
611 "%n" zero-padded sequence number, starting at 1 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
612 "%r" zero-padded changeset revision number |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
613 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
614 output - print output to file with formatted name |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
615 switchparent - diff against the second parent |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
616 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
|
617 text - treat all files as text |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
618 git - use git extended diff format |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
619 nodates - omit dates from diff headers |
55 | 620 """ |
621 if not isinstance(revs, list): | |
622 revs = [revs] | |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
623 args = cmdbuilder('export', o=output, switch_parent=switchparent, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
624 a=text, g=git, nodates=nodates, *revs) |
55 | 625 |
626 out = self.rawcommand(args) | |
627 | |
628 if output is None: | |
629 return out | |
630 | |
31 | 631 def forget(self, files, include=None, exclude=None): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
632 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
633 Mark the specified files so they will no longer be tracked after the next |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
634 commit. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
635 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
636 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
|
637 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
|
638 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
639 Returns True on success. |
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 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
642 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
643 """ |
31 | 644 if not isinstance(files, list): |
645 files = [files] | |
646 | |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
647 args = cmdbuilder('forget', I=include, X=exclude, *files) |
31 | 648 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
649 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
650 self.rawcommand(args, eh=eh) |
31 | 651 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
652 return bool(eh) |
31 | 653 |
56 | 654 def grep(self, pattern, files=[], all=False, text=False, follow=False, |
655 ignorecase=False, fileswithmatches=False, line=False, user=False, | |
656 date=False, include=None, exclude=None): | |
657 """ | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
658 Search for a pattern in specified files and revisions. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
659 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
660 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
|
661 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
|
662 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
|
663 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
664 Yields (filename, revision, [line, [match status, [user, [date, [match]]]]]) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
665 per match depending on the given options. |
56 | 666 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
667 all - print all revisions that match |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
668 text - treat all files as text |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
669 follow - follow changeset history, or file history across copies and renames |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
670 ignorecase - ignore case when matching |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
671 fileswithmatches - return only filenames and revisions that match |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
672 line - return line numbers in the result tuple |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
673 user - return the author in the result tuple |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
674 date - return the date in the result tuple |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
675 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
676 exclude - exclude names matching the given patterns |
56 | 677 """ |
678 if not isinstance(files, list): | |
679 files = [files] | |
680 | |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
681 args = cmdbuilder('grep', all=all, a=text, f=follow, i=ignorecase, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
682 l=fileswithmatches, n=line, u=user, d=date, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
683 I=include, X=exclude, *[pattern] + files) |
56 | 684 args.append('-0') |
685 | |
686 def eh(ret, out, err): | |
687 if ret != 1: | |
688 raise error.CommandError(args, ret, out, err) | |
689 return '' | |
690 | |
691 out = self.rawcommand(args, eh=eh).split('\0') | |
692 | |
693 fieldcount = 3 | |
694 if user: | |
695 fieldcount += 1 | |
696 if date: | |
697 fieldcount += 1 | |
698 if line: | |
699 fieldcount += 1 | |
700 if all: | |
701 fieldcount += 1 | |
702 if fileswithmatches: | |
703 fieldcount -= 1 | |
704 | |
705 return util.grouper(fieldcount, out) | |
706 | |
57 | 707 def heads(self, rev=[], startrev=[], topological=False, closed=False): |
708 """ | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
709 Return a list of current repository heads or branch heads. |
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 rev - return only branch heads on the branches associated with the specified |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
712 changesets. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
713 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
714 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
|
715 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
|
716 without children will be shown. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
717 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
718 closed - normal and closed branch heads. |
57 | 719 """ |
720 if not isinstance(rev, list): | |
721 rev = [rev] | |
722 | |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
723 args = cmdbuilder('heads', r=startrev, t=topological, c=closed, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
724 template=templates.changeset, *rev) |
57 | 725 |
726 def eh(ret, out, err): | |
727 if ret != 1: | |
728 raise error.CommandError(args, ret, out, err) | |
729 return '' | |
730 | |
731 out = self.rawcommand(args, eh=eh).split('\0')[:-1] | |
732 return self._parserevs(out) | |
733 | |
38
32f6a2bbf63e
client: add identify command
Idan Kamara <idankk86@gmail.com>
parents:
37
diff
changeset
|
734 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
|
735 tags=False, bookmarks=False): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
736 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
737 Return a summary string identifying the repository state at rev using one or |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
738 two parent hash identifiers, followed by a "+" if the working directory has |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
739 uncommitted changes, the branch name (if not default), a list of tags, and |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
740 a list of bookmarks. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
741 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
742 When rev is not given, return a summary string of the current state of the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
743 repository. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
744 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
745 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
|
746 lookup to operate on that repository/bundle. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
747 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
748 num - show local revision number |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
749 id - show global revision id |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
750 branch - show branch |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
751 tags - show tags |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
752 bookmarks - show bookmarks |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
753 """ |
38
32f6a2bbf63e
client: add identify command
Idan Kamara <idankk86@gmail.com>
parents:
37
diff
changeset
|
754 args = cmdbuilder('identify', source, r=rev, n=num, i=id, b=branch, t=tags, |
32f6a2bbf63e
client: add identify command
Idan Kamara <idankk86@gmail.com>
parents:
37
diff
changeset
|
755 B=bookmarks) |
32f6a2bbf63e
client: add identify command
Idan Kamara <idankk86@gmail.com>
parents:
37
diff
changeset
|
756 |
32f6a2bbf63e
client: add identify command
Idan Kamara <idankk86@gmail.com>
parents:
37
diff
changeset
|
757 return self.rawcommand(args) |
32f6a2bbf63e
client: add identify command
Idan Kamara <idankk86@gmail.com>
parents:
37
diff
changeset
|
758 |
13
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
759 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
|
760 bypass=False, exact=False, importbranch=False, message=None, |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
761 date=None, user=None, similarity=None): |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
762 """ |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
763 Import the specified patches which can be a list of file names or a |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
764 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
|
765 specified). |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
766 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
767 strip - directory strip option for patch. This has the same meaning as the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
768 corresponding patch option (default: 1) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
769 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
770 force - skip check for outstanding uncommitted changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
771 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
|
772 bypass - apply patch without touching the working directory |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
773 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
|
774 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
|
775 message - the commit message |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
776 date - record the specified date as commit date |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
777 user - record the specified user as committer |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
778 similarity - guess renamed files by similarity (0<=s<=100) |
13
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
779 """ |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
780 if hasattr(patches, 'read') and hasattr(patches, 'readline'): |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
781 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
|
782 |
13
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
783 def readline(size, output): |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
784 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
|
785 |
13
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
786 stdin = True |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
787 patches = () |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
788 prompt = readline |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
789 input = patch.read |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
790 else: |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
791 stdin = False |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
792 prompt = None |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
793 input = None |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
794 |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
795 args = cmdbuilder('import', strip=strip, force=force, |
13
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
796 nocommit=nocommit, bypass=bypass, exact=exact, |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
797 importbranch=importbranch, message=message, |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
798 date=date, user=user, similarity=similarity, _=stdin, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
799 *patches) |
13
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
800 |
400cb1520834
client: add missing options to import_()
Idan Kamara <idankk86@gmail.com>
parents:
12
diff
changeset
|
801 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
|
802 |
25
85ae94b98324
client: add missing options to incoming
Idan Kamara <idankk86@gmail.com>
parents:
24
diff
changeset
|
803 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
|
804 bundle=None, bookmarks=False, branch=None, limit=None, |
85ae94b98324
client: add missing options to incoming
Idan Kamara <idankk86@gmail.com>
parents:
24
diff
changeset
|
805 nomerges=False, subrepos=False): |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
806 """ |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
807 Return new changesets found in the specified path or the default pull |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
808 location. |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
809 |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
810 When bookmarks=True, return a list of (name, node) of incoming bookmarks. |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
811 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
812 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
|
813 force - run even if remote repository is unrelated |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
814 newest - show newest record first |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
815 bundle - avoid downloading the changesets twice and store the bundles into |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
816 the specified file. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
817 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
818 bookmarks - compare bookmarks (this changes the return value) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
819 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
|
820 limit - limit number of changes returned |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
821 nomerges - do not show merges |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
822 ssh - specify ssh command to use |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
823 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
|
824 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
|
825 subrepos - recurse into subrepositories |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
826 """ |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
827 args = cmdbuilder('incoming', |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
828 path, |
25
85ae94b98324
client: add missing options to incoming
Idan Kamara <idankk86@gmail.com>
parents:
24
diff
changeset
|
829 template=templates.changeset, r=revrange, |
85ae94b98324
client: add missing options to incoming
Idan Kamara <idankk86@gmail.com>
parents:
24
diff
changeset
|
830 f=force, n=newest, bundle=bundle, |
85ae94b98324
client: add missing options to incoming
Idan Kamara <idankk86@gmail.com>
parents:
24
diff
changeset
|
831 B=bookmarks, b=branch, l=limit, M=nomerges, S=subrepos) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
832 |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
833 def eh(ret, out, err): |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
834 if ret != 1: |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
835 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
|
836 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
837 out = self.rawcommand(args, eh=eh) |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
838 if not out: |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
839 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
|
840 |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
841 out = util.eatlines(out, 2) |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
842 if bookmarks: |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
843 bms = [] |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
844 for line in out.splitlines(): |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
845 bms.append(tuple(line.split())) |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
846 return bms |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
847 else: |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
848 out = out.split('\0')[:-1] |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
849 return self._parserevs(out) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
850 |
17
b68c444d42bb
client: add missing options to log()
Idan Kamara <idankk86@gmail.com>
parents:
16
diff
changeset
|
851 def log(self, revrange=None, files=[], follow=False, followfirst=False, |
b68c444d42bb
client: add missing options to log()
Idan Kamara <idankk86@gmail.com>
parents:
16
diff
changeset
|
852 date=None, copies=False, keyword=None, removed=False, onlymerges=False, |
b68c444d42bb
client: add missing options to log()
Idan Kamara <idankk86@gmail.com>
parents:
16
diff
changeset
|
853 user=None, branch=None, prune=None, hidden=False, limit=None, |
b68c444d42bb
client: add missing options to log()
Idan Kamara <idankk86@gmail.com>
parents:
16
diff
changeset
|
854 nomerges=False, include=None, exclude=None): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
855 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
856 Return the revision history of the specified files or the entire project. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
857 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
858 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
|
859 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
|
860 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
|
861 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
|
862 revisions. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
863 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
864 If revrange isn't specified, the default is "tip:0" unless follow is set, |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
865 in which case the working directory parent is used as the starting |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
866 revision. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
867 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
868 The returned changeset is a named tuple with the following string fields: |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
869 - rev |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
870 - node |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
871 - tags (space delimited) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
872 - branch |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
873 - author |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
874 - desc |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
875 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
876 follow - follow changeset history, or file history across copies and renames |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
877 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
|
878 date - show revisions matching date spec |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
879 copies - show copied files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
880 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
|
881 removed - include revisions where files were removed |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
882 onlymerges - show only merges |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
883 user - revisions committed by user |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
884 branch - show changesets within the given named branch |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
885 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
|
886 hidden - show hidden changesets |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
887 limit - limit number of changes displayed |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
888 nomerges - do not show merges |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
889 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
890 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
891 """ |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
892 args = cmdbuilder('log', template=templates.changeset, |
17
b68c444d42bb
client: add missing options to log()
Idan Kamara <idankk86@gmail.com>
parents:
16
diff
changeset
|
893 r=revrange, f=follow, follow_first=followfirst, |
b68c444d42bb
client: add missing options to log()
Idan Kamara <idankk86@gmail.com>
parents:
16
diff
changeset
|
894 d=date, C=copies, k=keyword, removed=removed, |
b68c444d42bb
client: add missing options to log()
Idan Kamara <idankk86@gmail.com>
parents:
16
diff
changeset
|
895 m=onlymerges, u=user, b=branch, P=prune, h=hidden, |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
896 l=limit, M=nomerges, I=include, X=exclude, *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
|
897 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
898 out = self.rawcommand(args) |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
899 out = out.split('\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
|
900 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
901 return self._parserevs(out) |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
902 |
64
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
903 def manifest(self, rev=None, all=False): |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
904 """ |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
905 Yields (nodeid, permission, executable, symlink, file path) tuples for |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
906 version controlled files for the given revision. If no revision is given, |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
907 the first parent of the working directory is used, or the null revision if |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
908 no revision is checked out. |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
909 |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
910 When all is True, all files from all revisions are yielded (just the name). |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
911 This includes deleted and renamed files. |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
912 """ |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
913 args = cmdbuilder('manifest', r=rev, all=all, debug=True) |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
914 |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
915 out = self.rawcommand(args) |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
916 |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
917 if all: |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
918 for line in out.splitlines(): |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
919 yield line |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
920 else: |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
921 for line in out.splitlines(): |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
922 node = line[0:40] |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
923 perm = line[41:44] |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
924 symlink = line[45] == '@' |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
925 executable = line[45] == '*' |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
926 yield (node, perm, executable, symlink, line[47:]) |
a7d98dc798c5
client: add manifest command
Idan Kamara <idankk86@gmail.com>
parents:
63
diff
changeset
|
927 |
46
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
928 def merge(self, rev=None, force=False, tool=None, cb=merge.handlers.abort): |
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
929 """ |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
930 Merge working directory with rev. If no revision is specified, the working |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
931 directory's parent is a head revision, and the current branch contains |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
932 exactly one other head, the other head is merged with by default. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
933 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
934 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
|
935 requested revision since the last common predecessor revision. |
46
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
936 |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
937 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
|
938 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
|
939 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
|
940 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
941 force - force a merge with outstanding changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
942 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
|
943 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
|
944 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
945 cb - controls the behaviour when Mercurial prompts what to do with regard |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
946 to a specific file, e.g. when one parent modified a file and the other |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
947 removed it. It can be one of merge.handlers, or a function that gets a |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
948 single argument which are the contents of stdout. It should return one |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
949 of the expected choices (a single character). |
46
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
950 """ |
45 | 951 # we can't really use --preview since merge doesn't support --template |
952 args = cmdbuilder('merge', r=rev, f=force, t=tool) | |
953 | |
46
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
954 prompt = None |
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
955 if cb is merge.handlers.abort: |
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
956 prompt = cb |
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
957 elif cb is merge.handlers.noninteractive: |
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
958 args.append('-y') |
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
959 else: |
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
960 prompt = lambda size, output: cb(output) + '\n' |
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
961 |
ebcc5d7dd528
client: introduce merge handlers
Idan Kamara <idankk86@gmail.com>
parents:
45
diff
changeset
|
962 self.rawcommand(args, prompt=prompt) |
45 | 963 |
32 | 964 def move(self, source, dest, after=False, force=False, dryrun=False, |
965 include=None, exclude=None): | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
966 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
967 Mark dest as copies of source; mark source for deletion. If dest is a |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
968 directory, copies are put in that directory. If dest is a file, then source |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
969 must be a string. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
970 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
971 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
|
972 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
973 source - a file or a list of files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
974 dest - a destination file or directory |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
975 after - record a rename that has already occurred |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
976 force - forcibly copy over an existing managed file |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
977 dryrun - do not perform actions, just print output |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
978 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
979 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
980 """ |
32 | 981 if not isinstance(source, list): |
982 source = [source] | |
983 | |
984 source.append(dest) | |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
985 args = cmdbuilder('move', A=after, f=force, n=dryrun, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
986 I=include, X=exclude, *source) |
32 | 987 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
988 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
989 self.rawcommand(args, eh=eh) |
32 | 990 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
991 return bool(eh) |
32 | 992 |
26
b4e5c8745ef3
client: add missing options to outgoing
Idan Kamara <idankk86@gmail.com>
parents:
25
diff
changeset
|
993 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
|
994 bookmarks=False, branch=None, limit=None, nomerges=False, |
b4e5c8745ef3
client: add missing options to outgoing
Idan Kamara <idankk86@gmail.com>
parents:
25
diff
changeset
|
995 subrepos=False): |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
996 """ |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
997 Return changesets not found in the specified path or the default push |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
998 location. |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
999 |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1000 When bookmarks=True, return a list of (name, node) of bookmarks that will |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1001 be pushed. |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1002 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1003 revrange - a (list of) changeset intended to be included in the destination |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1004 force - run even when the destination is unrelated |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1005 newest - show newest record first |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1006 branch - a specific branch you would like to push |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1007 limit - limit number of changes displayed |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1008 nomerges - do not show merges |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1009 ssh - specify ssh command to use |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1010 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
|
1011 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
|
1012 subrepos - recurse into subrepositories |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1013 """ |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1014 args = cmdbuilder('outgoing', |
26
b4e5c8745ef3
client: add missing options to outgoing
Idan Kamara <idankk86@gmail.com>
parents:
25
diff
changeset
|
1015 path, |
b4e5c8745ef3
client: add missing options to outgoing
Idan Kamara <idankk86@gmail.com>
parents:
25
diff
changeset
|
1016 template=templates.changeset, r=revrange, |
b4e5c8745ef3
client: add missing options to outgoing
Idan Kamara <idankk86@gmail.com>
parents:
25
diff
changeset
|
1017 f=force, n=newest, B=bookmarks, |
b4e5c8745ef3
client: add missing options to outgoing
Idan Kamara <idankk86@gmail.com>
parents:
25
diff
changeset
|
1018 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
|
1019 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1020 def eh(ret, out, err): |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1021 if ret != 1: |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1022 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
|
1023 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1024 out = self.rawcommand(args, eh=eh) |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1025 if not out: |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1026 return [] |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1027 |
27
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1028 out = util.eatlines(out, 2) |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1029 if bookmarks: |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1030 bms = [] |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1031 for line in out.splitlines(): |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1032 bms.append(tuple(line.split())) |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1033 return bms |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1034 else: |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1035 out = out.split('\0')[:-1] |
46908f4b87d5
client: add bookmarks support to incoming and outgoing
Idan Kamara <idankk86@gmail.com>
parents:
26
diff
changeset
|
1036 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
|
1037 |
18
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1038 def parents(self, rev=None, file=None): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1039 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1040 Return the working directory's parent revisions. If rev is given, the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1041 parent of that revision will be printed. If file is given, the revision |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1042 in which the file was last changed (before the working directory revision |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1043 or the revision specified by rev) is returned. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1044 """ |
18
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1045 args = cmdbuilder('parents', file, template=templates.changeset, r=rev) |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1046 |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1047 out = self.rawcommand(args) |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1048 if not out: |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1049 return |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1050 |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1051 out = out.split('\0')[:-1] |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1052 |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1053 return self._parserevs(out) |
518149e32888
client: add parents command
Idan Kamara <idankk86@gmail.com>
parents:
17
diff
changeset
|
1054 |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1055 def paths(self, name=None): |
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 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
|
1058 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
|
1059 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1060 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
|
1061 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
|
1062 used, too. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1063 """ |
2
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1064 if not name: |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
1065 out = self.rawcommand(['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
|
1066 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
|
1067 return {} |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1068 |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1069 return dict([s.split(' = ') for s in out.rstrip().split('\n')]) |
5fa34c3ac9a0
turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff
changeset
|
1070 else: |
4 | 1071 args = cmdbuilder('paths', name) |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
1072 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
|
1073 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
|
1074 |
40 | 1075 def pull(self, source=None, rev=None, update=False, force=False, bookmark=None, |
1076 branch=None, ssh=None, remotecmd=None, insecure=False, tool=None): | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1077 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1078 Pull changes from a remote repository. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1079 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1080 This finds all changes from the repository specified by source and adds |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1081 them to this repository. If source is omitted, the 'default' path will be |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1082 used. By default, this does not update the copy of the project in the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1083 working directory. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1084 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1085 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
|
1086 unresolved files. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1087 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1088 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
|
1089 force - run even when remote repository is unrelated |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1090 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
|
1091 bookmark - (list of) bookmark to pull |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1092 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
|
1093 ssh - specify ssh command to use |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1094 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
|
1095 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
|
1096 tool - specify merge tool for rebase |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1097 """ |
40 | 1098 args = cmdbuilder('pull', source, r=rev, u=update, f=force, B=bookmark, |
1099 b=branch, e=ssh, remotecmd=remotecmd, insecure=insecure, | |
1100 t=tool) | |
1101 | |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1102 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1103 self.rawcommand(args, eh=eh) |
40 | 1104 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1105 return bool(eh) |
40 | 1106 |
39 | 1107 def push(self, dest=None, rev=None, force=False, bookmark=None, branch=None, |
1108 newbranch=False, ssh=None, remotecmd=None, insecure=False): | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1109 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1110 Push changesets from this repository to the specified destination. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1111 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1112 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
|
1113 destination repository from the current one. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1114 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1115 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
|
1116 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1117 rev - the (list of) specified revision and all its ancestors will be pushed |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1118 to the remote repository. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1119 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1120 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
|
1121 branches. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1122 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1123 bookmark - (list of) bookmark to push |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1124 branch - a (list of) specific branch you would like to push |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1125 newbranch - allows push to create a new named branch that is not present at |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1126 the destination. This allows you to only create a new branch without |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1127 forcing other changes. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1128 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1129 ssh - specify ssh command to use |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1130 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
|
1131 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
|
1132 """ |
39 | 1133 args = cmdbuilder('push', dest, r=rev, f=force, B=bookmark, b=branch, |
1134 new_branch=newbranch, e=ssh, remotecmd=remotecmd, | |
1135 insecure=insecure) | |
1136 | |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1137 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1138 self.rawcommand(args, eh=eh) |
39 | 1139 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1140 return bool(eh) |
39 | 1141 |
30 | 1142 def remove(self, files, after=False, force=False, include=None, exclude=None): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1143 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1144 Schedule the indicated files for removal from the repository. This only |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1145 removes files from the current branch, not from the entire project history. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1146 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1147 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
|
1148 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1149 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
|
1150 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
|
1151 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1152 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1153 """ |
30 | 1154 if not isinstance(files, list): |
1155 files = [files] | |
1156 | |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
1157 args = cmdbuilder('remove', A=after, f=force, I=include, X=exclude, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
1158 *files) |
30 | 1159 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1160 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1161 self.rawcommand(args, eh=eh) |
30 | 1162 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1163 return bool(eh) |
30 | 1164 |
63
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1165 def resolve(self, file=[], all=False, listfiles=False, mark=False, unmark=False, |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1166 tool=None, include=None, exclude=None): |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1167 """ |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1168 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
|
1169 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1170 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
|
1171 |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1172 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
|
1173 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
|
1174 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1175 all - select all unresolved files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1176 mark - mark files as resolved |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1177 unmark - mark files as unresolved |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1178 tool - specify merge tool |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1179 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1180 exclude - exclude names matching the given patterns |
63
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1181 """ |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1182 if not isinstance(file, list): |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1183 file = [file] |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1184 |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
1185 args = cmdbuilder('resolve', a=all, l=listfiles, m=mark, u=unmark, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
1186 t=tool, I=include, X=exclude, *file) |
63
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1187 |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1188 out = self.rawcommand(args) |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1189 |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1190 if listfiles: |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1191 l = [] |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1192 for line in out.splitlines(): |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1193 l.append(tuple(line.split(' ', 1))) |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1194 return l |
939d1d763bb1
client: add resolve command
Idan Kamara <idankk86@gmail.com>
parents:
62
diff
changeset
|
1195 |
47 | 1196 def revert(self, files, rev=None, all=False, date=None, nobackup=False, |
1197 dryrun=False, include=None, exclude=None): | |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1198 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1199 With no revision specified, revert the specified files or directories to |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1200 the contents they had in the parent of the working directory. This |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1201 restores the contents of files to an unmodified state and unschedules |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1202 adds, removes, copies, and renames. If the working directory has two |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1203 parents, you must explicitly specify a revision. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1204 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1205 Specifying rev or date will revert the given files or directories to their |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1206 states as of a specific revision. Because revert does not change the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1207 working directory parents, this will cause these files to appear modified. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1208 This can be helpful to "back out" some or all of an earlier change. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1209 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1210 Modified files are saved with a .orig suffix before reverting. To disable |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1211 these backups, use nobackup. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1212 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1213 Returns True on success. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1214 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1215 all - revert all changes when no arguments given |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1216 date - tipmost revision matching date |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1217 rev - revert to the specified revision |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1218 nobackup - do not save backup copies of files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1219 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1220 exclude - exclude names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1221 dryrun - do not perform actions, just print output |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1222 """ |
47 | 1223 if not isinstance(files, list): |
1224 files = [files] | |
1225 | |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
1226 args = cmdbuilder('revert', r=rev, a=all, d=date, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
1227 no_backup=nobackup, n=dryrun, I=include, X=exclude, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
1228 *files) |
47 | 1229 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1230 eh = util.reterrorhandler(args) |
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1231 self.rawcommand(args, eh=eh) |
47 | 1232 |
50
bd7dfd94b0d9
client: use util.reterrorhandler
Idan Kamara <idankk86@gmail.com>
parents:
48
diff
changeset
|
1233 return bool(eh) |
47 | 1234 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1235 def root(self): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1236 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1237 Return the root directory of the current repository. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1238 """ |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1239 return self.rawcommand(['root']).rstrip() |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1240 |
33
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1241 def status(self, rev=None, change=None, all=False, modified=False, added=False, |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1242 removed=False, deleted=False, clean=False, unknown=False, |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1243 ignored=False, copies=False, subrepos=False, include=None, |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1244 exclude=None): |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1245 """ |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1246 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
|
1247 where code can be: |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1248 |
33
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1249 M = modified |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1250 A = added |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1251 R = removed |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1252 C = clean |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1253 ! = 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
|
1254 ? = untracked |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1255 I = ignored |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1256 = 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
|
1257 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1258 rev - show difference from (list of) revision |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1259 change - list the changed files of a revision |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1260 all - show status of all files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1261 modified - show only modified files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1262 added - show only added files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1263 removed - show only removed files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1264 deleted - show only deleted (but tracked) files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1265 clean - show only files without changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1266 unknown - show only unknown (not tracked) files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1267 ignored - show only ignored files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1268 copies - show source of copied files |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1269 subrepos - recurse into subrepositories |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1270 include - include names matching the given patterns |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1271 exclude - exclude names matching the given patterns |
33
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1272 """ |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1273 if rev and change: |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1274 raise ValueError('cannot specify both rev and change') |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1275 |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1276 args = cmdbuilder('status', rev=rev, change=change, A=all, m=modified, |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1277 a=added, r=removed, d=deleted, c=clean, u=unknown, |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1278 i=ignored, C=copies, S=subrepos, I=include, X=exclude) |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1279 |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1280 args.append('-0') |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1281 |
d74a5891d9d1
client: add missing options to status
Idan Kamara <idankk86@gmail.com>
parents:
32
diff
changeset
|
1282 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
|
1283 l = [] |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1284 |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1285 for entry in out.split('\0'): |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1286 if entry: |
35
1e33bbea23e5
client: handle spaces correctly in status()
Idan Kamara <idankk86@gmail.com>
parents:
34
diff
changeset
|
1287 if entry[0] == ' ': |
1e33bbea23e5
client: handle spaces correctly in status()
Idan Kamara <idankk86@gmail.com>
parents:
34
diff
changeset
|
1288 l.append((' ', entry[2:])) |
1e33bbea23e5
client: handle spaces correctly in status()
Idan Kamara <idankk86@gmail.com>
parents:
34
diff
changeset
|
1289 else: |
1e33bbea23e5
client: handle spaces correctly in status()
Idan Kamara <idankk86@gmail.com>
parents:
34
diff
changeset
|
1290 l.append(tuple(entry.split(' ', 1))) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1291 |
34
f6e1d9a6e0cd
client: change return value of status() to a list of (code, file path)
Idan Kamara <idankk86@gmail.com>
parents:
33
diff
changeset
|
1292 return l |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1293 |
42 | 1294 def tag(self, names, rev=None, message=None, force=False, local=False, |
1295 remove=False, date=None, user=None): | |
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 Add one or more tags specified by names for the current or given revision. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1298 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1299 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
|
1300 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1301 Tag commits are usually made at the head of a branch. If the parent of the |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1302 working directory is not a branch head, a CommandError will be raised. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1303 force can be specified to force the tag commit to be based on a non-head |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1304 changeset. |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1305 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1306 local - make the tag local |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1307 rev - revision to tag |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1308 remove - remove a tag |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1309 message - set commit message |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1310 date - record the specified date as commit date |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1311 user - record the specified user as committer |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1312 """ |
42 | 1313 if not isinstance(names, list): |
1314 names = [names] | |
1315 | |
87
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
1316 args = cmdbuilder('tag', r=rev, m=message, f=force, l=local, |
5661d5f7e39b
client: make varargs ordering py2.4-compatible
Matt Mackall <mpm@selenic.com>
parents:
79
diff
changeset
|
1317 remove=remove, d=date, u=user, *names) |
42 | 1318 |
1319 self.rawcommand(args) | |
1320 | |
43 | 1321 def tags(self): |
1322 """ | |
1323 Return a list of repository tags as: (name, rev, node, islocal) | |
1324 """ | |
1325 args = cmdbuilder('tags', v=True) | |
1326 | |
1327 out = self.rawcommand(args) | |
1328 | |
1329 t = [] | |
1330 for line in out.splitlines(): | |
1331 taglocal = line.endswith(' local') | |
1332 if taglocal: | |
1333 line = line[:-6] | |
1334 name, rev = line.rsplit(' ', 1) | |
1335 rev, node = rev.split(':') | |
1336 t.append((name.rstrip(), int(rev), node, taglocal)) | |
1337 return t | |
1338 | |
51
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1339 def summary(self, remote=False): |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1340 """ |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1341 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
|
1342 including parents, branch, commit status, and available updates. |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1343 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1344 'parent' : a list of (rev, node, tags, message) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1345 'branch' : the current branch |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1346 'commit' : True if the working directory is clean, False otherwise |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1347 'update' : number of available updates, |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1348 ['remote' : (in, in bookmarks, out, out bookmarks),] |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1349 ['mq': (applied, unapplied) mq patches,] |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1350 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1351 unparsed entries will be of them form key : value |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1352 """ |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1353 args = cmdbuilder('summary', remote=remote) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1354 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1355 out = self.rawcommand(args).splitlines() |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1356 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1357 d = {} |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1358 while out: |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1359 line = out.pop(0) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1360 name, value = line.split(': ', 1) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1361 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1362 if name == 'parent': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1363 parent, tags = value.split(' ', 1) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1364 rev, node = parent.split(':') |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1365 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1366 if tags: |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1367 tags = tags.replace(' (empty repository)', '') |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1368 else: |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1369 tags = None |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1370 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1371 value = d.get(name, []) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1372 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1373 if rev == '-1': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1374 value.append((int(rev), node, tags, None)) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1375 else: |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1376 message = out.pop(0)[1:] |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1377 value.append((int(rev), node, tags, message)) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1378 elif name == 'branch': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1379 pass |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1380 elif name == 'commit': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1381 value = value == '(clean)' |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1382 elif name == 'update': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1383 if value == '(current)': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1384 value = 0 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1385 else: |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1386 value = int(value.split(' ', 1)[0]) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1387 elif remote and name == 'remote': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1388 if value == '(synced)': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1389 value = 0, 0, 0, 0 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1390 else: |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1391 inc = incb = out_ = outb = 0 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1392 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1393 for v in value.split(', '): |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1394 count, v = v.split(' ', 1) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1395 if v == 'outgoing': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1396 out_ = int(count) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1397 elif v.endswith('incoming'): |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1398 inc = int(count) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1399 elif v == 'incoming bookmarks': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1400 incb = int(count) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1401 elif v == 'outgoing bookmarks': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1402 outb = int(count) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1403 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1404 value = inc, incb, out_, outb |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1405 elif name == 'mq': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1406 applied = unapplied = 0 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1407 for v in value.split(', '): |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1408 count, v = v.split(' ', 1) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1409 if v == 'applied': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1410 applied = int(count) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1411 elif v == 'unapplied': |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1412 unapplied = int(count) |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1413 value = applied, unapplied |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1414 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1415 d[name] = value |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1416 |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1417 return d |
c52383a550fb
client: add summary command
Idan Kamara <idankk86@gmail.com>
parents:
50
diff
changeset
|
1418 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1419 def tip(self): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1420 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1421 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
|
1422 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
|
1423 recently changed head). |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1424 """ |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1425 args = cmdbuilder('tip', template=templates.changeset) |
5
3182303f388d
client: rawcommand, more convenient helper to run commands instead of outputruncommand
Idan Kamara <idankk86@gmail.com>
parents:
4
diff
changeset
|
1426 out = self.rawcommand(args) |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1427 out = out.split('\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
|
1428 |
10
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1429 return self._parserevs(out)[0] |
fce3102c19e5
client: sort commands by name
Idan Kamara <idankk86@gmail.com>
parents:
8
diff
changeset
|
1430 |
20 | 1431 def update(self, rev=None, clean=False, check=False, date=None): |
1432 """ | |
1433 Update the repository's working directory to changeset specified by rev. | |
1434 If rev isn't specified, update to the tip of the current named branch. | |
1435 | |
1436 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
|
1437 |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1438 clean - discard uncommitted changes (no backup) |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1439 check - update across branches if no uncommitted changes |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1440 date - tipmost revision matching date |
20 | 1441 """ |
1442 if clean and check: | |
1443 raise ValueError('clean and check cannot both be True') | |
1444 | |
1445 args = cmdbuilder('update', r=rev, C=clean, c=check, d=date) | |
1446 | |
1447 def eh(ret, out, err): | |
1448 if ret == 1: | |
1449 return out | |
1450 | |
1451 raise error.CommandError(args, ret, out, err) | |
1452 | |
1453 | |
1454 out = self.rawcommand(args, eh=eh) | |
1455 | |
1456 # filter out 'merging ...' lines | |
1457 out = util.skiplines(out, 'merging ') | |
1458 | |
1459 counters = out.rstrip().split(', ') | |
1460 return tuple(int(s.split(' ', 1)[0]) for s in counters) | |
41
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1461 |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1462 @property |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1463 def version(self): |
65
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1464 """ |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1465 Return hg version that runs the command server as a 4 fielded tuple: major, |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1466 minor, micro and local build info. e.g. (1, 9, 1, '+4-3095db9f5c2c') |
91ffa1de398c
document all commands in client.py
Idan Kamara <idankk86@gmail.com>
parents:
64
diff
changeset
|
1467 """ |
41
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1468 if self._version is None: |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1469 v = self.rawcommand(cmdbuilder('version', q=True)) |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1470 v = list(re.match(r'.*?(\d+)\.(\d+)\.?(\d+)?(\+[0-9a-f-]+)?', |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1471 v).groups()) |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1472 |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1473 for i in range(3): |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1474 try: |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1475 v[i] = int(v[i]) |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1476 except TypeError: |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1477 v[i] = 0 |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1478 |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1479 self._version = tuple(v) |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1480 |
e185c3922c68
client: add version command
Idan Kamara <idankk86@gmail.com>
parents:
40
diff
changeset
|
1481 return self._version |