~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/bundle/__init__.py

  • Committer: John Arbash Meinel
  • Date: 2009-12-02 23:09:40 UTC
  • mfrom: (4853.1.1 whitespace)
  • mto: This revision was merged to the branch mainline in revision 4856.
  • Revision ID: john@arbash-meinel.com-20091202230940-7n2aydoxngdqxzld
Strip trailing whitespace from doc files by Patrick Regan.

Resolve one small conflict with another doc edit.
Also, revert the changes to all the .pdf and .png files. We shouldn't
be touching them as they are pure-binary files.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
 
17
from cStringIO import StringIO
 
18
 
17
19
from bzrlib.symbol_versioning import deprecated_function, deprecated_in
18
20
from bzrlib.lazy_import import lazy_import
19
21
lazy_import(globals(), """
22
24
    urlutils,
23
25
    )
24
26
from bzrlib.bundle import serializer as _serializer
 
27
from bzrlib.merge_directive import MergeDirective
25
28
from bzrlib.transport import (
26
29
    do_catching_redirections,
27
30
    get_transport,
51
54
 
52
55
 
53
56
def read_mergeable_from_transport(transport, filename, _do_directive=True):
54
 
    # All of this must be in the try/except
55
 
    # Some transports cannot detect that we are trying to read a
56
 
    # directory until we actually issue read() on the handle.
 
57
    def get_bundle(transport):
 
58
        return StringIO(transport.get_bytes(filename)), transport
 
59
 
 
60
    def redirected_transport(transport, exception, redirection_notice):
 
61
        note(redirection_notice)
 
62
        url, filename = urlutils.split(exception.target,
 
63
                                       exclude_trailing_slash=False)
 
64
        if not filename:
 
65
            raise errors.NotABundle('A directory cannot be a bundle')
 
66
        return get_transport(url)
 
67
 
57
68
    try:
58
 
        def get_bundle(transport):
59
 
            return transport.get(filename), transport
60
 
 
61
 
        def redirected_transport(transport, exception, redirection_notice):
62
 
            note(redirection_notice)
63
 
            url, filename = urlutils.split(exception.target,
64
 
                                           exclude_trailing_slash=False)
65
 
            if not filename:
66
 
                raise errors.NotABundle('A directory cannot be a bundle')
67
 
            return get_transport(url)
68
 
 
69
 
        try:
70
 
            f, transport = do_catching_redirections(get_bundle, transport,
 
69
        bytef, transport = do_catching_redirections(get_bundle, transport,
71
70
                                                    redirected_transport)
72
 
        except errors.TooManyRedirections:
73
 
            raise errors.NotABundle(transport.clone(filename).base)
74
 
 
75
 
        if _do_directive:
76
 
            from bzrlib.merge_directive import MergeDirective
77
 
            directive = MergeDirective.from_lines(f.readlines())
78
 
            return directive, transport
79
 
        else:
80
 
            return _serializer.read_bundle(f), transport
 
71
    except errors.TooManyRedirections:
 
72
        raise errors.NotABundle(transport.clone(filename).base)
81
73
    except (errors.ConnectionReset, errors.ConnectionError), e:
82
74
        raise
83
75
    except (errors.TransportError, errors.PathError), e:
91
83
        # StubSFTPServer does fail during get() (because of prefetch)
92
84
        # so it has an opportunity to translate the error.
93
85
        raise errors.NotABundle(str(e))
94
 
    except errors.NotAMergeDirective:
95
 
        f.seek(0)
96
 
        return _serializer.read_bundle(f), transport
 
86
 
 
87
    if _do_directive:
 
88
        try:
 
89
            return MergeDirective.from_lines(bytef), transport
 
90
        except errors.NotAMergeDirective:
 
91
            bytef.seek(0)
 
92
 
 
93
    return _serializer.read_bundle(bytef), transport