/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/remote.py

(spiv) Give clearer errors when remote operation fails with MemoryError or
 other unexpected exception (Martin [gz])

Show diffs side-by-side

added added

removed removed

Lines of Context:
2973
2973
                    'Missing key %r in context %r', key_err.args[0], context)
2974
2974
                raise err
2975
2975
 
2976
 
    if err.error_verb == 'IncompatibleRepositories':
2977
 
        raise errors.IncompatibleRepositories(err.error_args[0],
2978
 
            err.error_args[1], err.error_args[2])
2979
 
    elif err.error_verb == 'NoSuchRevision':
 
2976
    if err.error_verb == 'NoSuchRevision':
2980
2977
        raise NoSuchRevision(find('branch'), err.error_args[0])
2981
2978
    elif err.error_verb == 'nosuchrevision':
2982
2979
        raise NoSuchRevision(find('repository'), err.error_args[0])
2989
2986
            detail=extra)
2990
2987
    elif err.error_verb == 'norepository':
2991
2988
        raise errors.NoRepositoryPresent(find('bzrdir'))
2992
 
    elif err.error_verb == 'LockContention':
2993
 
        raise errors.LockContention('(remote lock)')
2994
2989
    elif err.error_verb == 'UnlockableTransport':
2995
2990
        raise errors.UnlockableTransport(find('bzrdir').root_transport)
2996
 
    elif err.error_verb == 'LockFailed':
2997
 
        raise errors.LockFailed(err.error_args[0], err.error_args[1])
2998
2991
    elif err.error_verb == 'TokenMismatch':
2999
2992
        raise errors.TokenMismatch(find('token'), '(remote token)')
3000
2993
    elif err.error_verb == 'Diverged':
3001
2994
        raise errors.DivergedBranches(find('branch'), find('other_branch'))
3002
 
    elif err.error_verb == 'TipChangeRejected':
3003
 
        raise errors.TipChangeRejected(err.error_args[0].decode('utf8'))
3004
 
    elif err.error_verb == 'UnstackableBranchFormat':
3005
 
        raise errors.UnstackableBranchFormat(*err.error_args)
3006
 
    elif err.error_verb == 'UnstackableRepositoryFormat':
3007
 
        raise errors.UnstackableRepositoryFormat(*err.error_args)
3008
2995
    elif err.error_verb == 'NotStacked':
3009
2996
        raise errors.NotStacked(branch=find('branch'))
3010
2997
    elif err.error_verb == 'PermissionDenied':
3020
3007
    elif err.error_verb == 'NoSuchFile':
3021
3008
        path = get_path()
3022
3009
        raise errors.NoSuchFile(path)
 
3010
    _translate_error_without_context(err)
 
3011
 
 
3012
 
 
3013
def _translate_error_without_context(err):
 
3014
    """Translate any ErrorFromSmartServer values that don't require context"""
 
3015
    if err.error_verb == 'IncompatibleRepositories':
 
3016
        raise errors.IncompatibleRepositories(err.error_args[0],
 
3017
            err.error_args[1], err.error_args[2])
 
3018
    elif err.error_verb == 'LockContention':
 
3019
        raise errors.LockContention('(remote lock)')
 
3020
    elif err.error_verb == 'LockFailed':
 
3021
        raise errors.LockFailed(err.error_args[0], err.error_args[1])
 
3022
    elif err.error_verb == 'TipChangeRejected':
 
3023
        raise errors.TipChangeRejected(err.error_args[0].decode('utf8'))
 
3024
    elif err.error_verb == 'UnstackableBranchFormat':
 
3025
        raise errors.UnstackableBranchFormat(*err.error_args)
 
3026
    elif err.error_verb == 'UnstackableRepositoryFormat':
 
3027
        raise errors.UnstackableRepositoryFormat(*err.error_args)
3023
3028
    elif err.error_verb == 'FileExists':
3024
3029
        raise errors.FileExists(err.error_args[0])
3025
3030
    elif err.error_verb == 'DirectoryNotEmpty':
3044
3049
            raise UnicodeEncodeError(encoding, val, start, end, reason)
3045
3050
    elif err.error_verb == 'ReadOnlyError':
3046
3051
        raise errors.TransportNotPossible('readonly transport')
 
3052
    elif err.error_verb == 'MemoryError':
 
3053
        raise errors.BzrError("remote server out of memory\n"
 
3054
            "Retry non-remotely, or contact the server admin for details.")
3047
3055
    raise errors.UnknownErrorFromSmartServer(err)