annotate hglib/__init__.py @ 62:d1f57f162274

closefds on posix when using subprocess see added test for a clarification on why this is needed
author Idan Kamara <idankk86@gmail.com>
date Fri, 19 Aug 2011 22:24:14 +0300
parents ce516ed9bc0d
children 15485fa4b35e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
60
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
1 import client, subprocess, util, error
2
5fa34c3ac9a0 turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
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 HGPATH = 'hg'
5fa34c3ac9a0 turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
4
5fa34c3ac9a0 turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
5 def open(path=None, encoding=None, configs=None):
5fa34c3ac9a0 turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
6 ''' starts a cmdserver for the given path (or for a repository found in the
5fa34c3ac9a0 turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
7 cwd). HGENCODING is set to the given encoding. configs is a list of key, value,
5fa34c3ac9a0 turn hglib into a module and expose open (previously connect) in its __init__.py
Idan Kamara <idankk86@gmail.com>
parents:
diff changeset
8 similar to those passed to hg --config. '''
59
f4cc7ff53cf8 hglib: change import style
Idan Kamara <idankk86@gmail.com>
parents: 2
diff changeset
9 return client.hgclient(path, encoding, configs)
60
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
10
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
11 def init(dest=None, ssh=None, remotecmd=None, insecure=False,
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
12 encoding=None, configs=None):
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
13 args = util.cmdbuilder('init', dest, e=ssh, remotecmd=remotecmd,
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
14 insecure=insecure)
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
15
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
16 args.insert(0, HGPATH)
62
d1f57f162274 closefds on posix when using subprocess
Idan Kamara <idankk86@gmail.com>
parents: 60
diff changeset
17 proc = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
d1f57f162274 closefds on posix when using subprocess
Idan Kamara <idankk86@gmail.com>
parents: 60
diff changeset
18 close_fds=util.closefds)
60
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
19
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
20 out, err = proc.communicate()
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
21 if proc.returncode:
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
22 raise error.CommandError(args, proc.returncode, out, err)
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
23
ce516ed9bc0d hglib: add init command
Idan Kamara <idankk86@gmail.com>
parents: 59
diff changeset
24 return open(dest, encoding, configs)