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