Exemplo n.º 1
0
def resolve(conn, args):
    _init_session()
    (flags, ) = args.split()
    flags = int(flags)
    want_meta = bool(flags & 1)
    follow = bool(flags & 2)
    have_parent = bool(flags & 4)
    parent = vfs.read_resolution(conn) if have_parent else None
    path = vint.read_bvec(conn)
    if not len(path):
        raise Exception('Empty resolve path')
    try:
        res = list(
            vfs.resolve(repo,
                        path,
                        parent=parent,
                        want_meta=want_meta,
                        follow=follow))
    except vfs.IOError as ex:
        res = ex
    if isinstance(res, vfs.IOError):
        conn.write(b'\x00')  # error
        vfs.write_ioerror(conn, res)
    else:
        conn.write(b'\x01')  # success
        vfs.write_resolution(conn, res)
    conn.ok()
Exemplo n.º 2
0
 def resolve(self, path, parent=None, want_meta=True, follow=False):
     self._require_command(b'resolve')
     self.check_busy()
     self._busy = b'resolve'
     conn = self.conn
     conn.write(b'resolve %d\n' % ((1 if want_meta else 0)
                                   | (2 if follow else 0)
                                   | (4 if parent else 0)))
     if parent:
         vfs.write_resolution(conn, parent)
     write_bvec(conn, path)
     success = ord(conn.read(1))
     assert success in (0, 1)
     if success:
         result = vfs.read_resolution(conn)
     else:
         result = vfs.read_ioerror(conn)
     # FIXME: confusing
     not_ok = self.check_ok()
     if not_ok:
         raise not_ok
     self._not_busy()
     if isinstance(result, vfs.IOError):
         raise result
     return result
Exemplo n.º 3
0
Arquivo: client.py Projeto: bup/bup
 def resolve(self, path, parent=None, want_meta=True, follow=False):
     self._require_command('resolve')
     self.check_busy()
     self._busy = 'resolve'
     conn = self.conn
     conn.write('resolve %d\n' % ((1 if want_meta else 0)
                                  | (2 if follow else 0)
                                  | (4 if parent else 0)))
     if parent:
         vfs.write_resolution(conn, parent)
     write_bvec(conn, path)
     success = ord(conn.read(1))
     assert success in (0, 1)
     if success:
         result = vfs.read_resolution(conn)
     else:
         result = vfs.read_ioerror(conn)
     # FIXME: confusing
     not_ok = self.check_ok()
     if not_ok:
         raise not_ok
     self._not_busy()
     if isinstance(result, vfs.IOError):
         raise result
     return result