~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/builtins.py

Merge from bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
3288
3288
        ]
3289
3289
 
3290
3290
    def run(self, port=None, inet=False, directory=None, allow_writes=False):
3291
 
        from bzrlib.smart import server, medium
 
3291
        from bzrlib.smart import medium, server
3292
3292
        from bzrlib.transport import get_transport
 
3293
        from bzrlib.transport.chroot import ChrootServer
3293
3294
        from bzrlib.transport.remote import BZR_DEFAULT_PORT
3294
3295
        if directory is None:
3295
3296
            directory = os.getcwd()
3296
3297
        url = urlutils.local_path_to_url(directory)
3297
3298
        if not allow_writes:
3298
3299
            url = 'readonly+' + url
3299
 
        t = get_transport(url)
 
3300
        chroot_server = ChrootServer(get_transport(url))
 
3301
        chroot_server.setUp()
 
3302
        t = get_transport(chroot_server.get_url())
3300
3303
        if inet:
3301
3304
            smart_server = medium.SmartServerPipeStreamMedium(
3302
3305
                sys.stdin, sys.stdout, t)
3313
3316
            smart_server = server.SmartTCPServer(t, host=host, port=port)
3314
3317
            print 'listening on port: ', smart_server.port
3315
3318
            sys.stdout.flush()
3316
 
        smart_server.serve()
 
3319
        # for the duration of this server, no UI output is permitted.
 
3320
        # note that this may cause problems with blackbox tests. This should
 
3321
        # be changed with care though, as we dont want to use bandwidth sending
 
3322
        # progress over stderr to smart server clients!
 
3323
        old_factory = ui.ui_factory
 
3324
        try:
 
3325
            ui.ui_factory = ui.SilentUIFactory()
 
3326
            smart_server.serve()
 
3327
        finally:
 
3328
            ui.ui_factory = old_factory
3317
3329
 
3318
3330
 
3319
3331
class cmd_join(Command):